不鸣则已

海阔凭鱼跃,天高任鸟飞!

首页 新随笔 联系 订阅 管理

一、什么是Redis?

  Redis是一个高性能的key-value内存数据库。


 

二、为什么使用Redis?

  Redis是NoSQL数据库,相比传统关系型数据库,内存数据库读写更快。


 

三、Redis怎么获取?

  http://www.redis.cn/download.html


 

四、Redis环境怎么搭建?

  1、Redis通常部署在Linux上,所以部署的事和监控的事有专门的运维去做;

  2、学习时如果没有Linux环境,可以直接启动一个Windows版的Redis。


 

以Windows环境为例:

五、启动Redis

  1、解压 redis-2.8.zip 中的 redis-2.8\bin\release\redis-2.8.17.zip 到 D:\redis 文件夹中

  2、进入D盘命令:d:

     进入redis文件夹命令:cd redis

     启动redis命令:redis-server.exe redis.conf(当然可以用文件夹中的redis.windows.conf,ps:记得修改配置文件的maxmemory 1gb,否则启动将会报错)


六、客户端连接redis

  命令:redis-cli.exe -h 172.16.10.140(自己的ip) -h 6379

  输入info 命令可以查看redis的相关信息


如果提示 NOAUTH Authentication required. 需要输入密码  auth + 空格 + 密码

 

七、.Net中使用Redis

  下载相关程序包,推荐:ServiceStack.Redis

 1 using ServiceStack.Redis;
 2 using System;
 3 using System.Collections.Generic;
 4 using System.Configuration;
 5 using System.Linq;
 6 using System.Text;
 7 
 8 namespace ConApp_Redis_Test
 9 {
10     class Program
11     {
12         static RedisClient redisClient = new RedisClient(ConfigurationManager.AppSettings["IPAddress"], 6379);//redis服务IP和端口
13         static string totalCount = ConfigurationManager.AppSettings["TotalCount"];
14         static string searchCount = ConfigurationManager.AppSettings["SearchCount"];
15 
16         static void Main(string[] args)
17         {
18             try
19             {
20                 redisClient.Password = ConfigurationManager.AppSettings["Password"];
21                 Console.WriteLine("准备数据中...");
22 
23                 int pTotalCount = int.Parse(totalCount);
24                 int pSearchCount = int.Parse(searchCount);
25                 DateTime dt_Write = DateTime.Now;
26                 List<UserModel> userModelList = new List<UserModel>();
27                 for (int i = 1; i <= pTotalCount; i++)
28                 {
29                     UserModel userModel = new UserModel();
30                     userModel.Id = i;
31                     userModel.MobileNum = "15200000000".Substring(0, 11 - i.ToString().Length) + i.ToString();
32                     userModel.OpenId = Guid.NewGuid().ToString().Replace("-", "");
33                     userModelList.Add(userModel);
34                 }
35 
36                 Console.WriteLine("正在插入数据...");
37                 if (userModelList != null && userModelList.Any())
38                 {
39                     for (int i = 0; i < userModelList.Count; i++)
40                     {
41                         UserModel userModel = userModelList[i];
42                         if ((i + 1) % 10000 == 0)
43                         {
44                             Console.WriteLine("当前Id:" + userModel.Id + ",MobileNum: " + userModel.MobileNum + ",OpenId:" + userModel.OpenId);
45                         }
46                         redisClient.HSet("User", Encoding.UTF8.GetBytes(userModel.MobileNum), Encoding.UTF8.GetBytes("{Id: " + userModel.Id + ", MobileNum: " + userModel.MobileNum + ", OpenId: " + userModel.OpenId + "}"));
47                     }
48                 }
49                 Console.ForegroundColor = ConsoleColor.Red;
50                 Console.WriteLine("随机写入" + pTotalCount + "条数据消耗时间为: " + (DateTime.Now - dt_Write).Seconds + ""); ;
51 
52                 // 清除控制台颜色
53                 Console.ForegroundColor = ConsoleColor.White;
54                 Random randon = new Random();
55 
56                 DateTime dt_Read = DateTime.Now;
57                 for (int i = 1; i <= pSearchCount; i++)
58                 {
59                     int index = randon.Next(1, pTotalCount + 1);
60                     // Console.WriteLine("随机抽选值: " + index);
61                     string search = "15200000000".Substring(0, 11 - index.ToString().Length) + index.ToString();
62                     // Console.WriteLine("当前搜索: " + search);
63 
64                     //byte[] bytes_Get = redisClient.Get(search);
65                     //Console.WriteLine(Encoding.UTF8.GetString(bytes_Get));
66 
67                     byte[] bytes_HGet = redisClient.HGet("User", Encoding.UTF8.GetBytes(search));
68 
69                     if (i % 10 == 0)
70                     {
71                         Console.WriteLine(Encoding.UTF8.GetString(bytes_HGet));
72                     }
73                 }
74                 Console.ForegroundColor = ConsoleColor.Red;
75                 Console.WriteLine("随机读取" + pSearchCount + "条数据消耗时间为: " + (DateTime.Now - dt_Read).Milliseconds + "毫秒"); ;
76             }
77             catch (Exception)
78             {
79                 Console.WriteLine("出错了...");
80             }
81 
82             Console.ReadKey(true);
83         }
84     }
85 
86     public class UserModel
87     {
88         public int Id { get; set; }
89         public string MobileNum { get; set; }
90         public string OpenId { get; set; }
91     }
92 }
View Code

八、相当文档

  推荐:http://www.redisfans.com/


九、结语

  redis只是NoSQL的一种,几乎包含所有流行语言的开发包,拥有专门的组织维护,能够成为大多数开发人员首选的NoSQL数据库,肯定在性能上、安全上都做到让人满意的程度了。

  不要局限于redis,可以使用其他的NoSQL数据库,通过实际应用、对比、总结才能得出好坏。

  每天多学一点,量变产生质变。

 

 

posted on 2016-01-12 19:12  唐群  阅读(169)  评论(0编辑  收藏  举报