一、什么是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.8in elease edis-2.8.17.zip 到 D: edis 文件夹中
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 }
八、相当文档
九、结语
redis只是NoSQL的一种,几乎包含所有流行语言的开发包,拥有专门的组织维护,能够成为大多数开发人员首选的NoSQL数据库,肯定在性能上、安全上都做到让人满意的程度了。
不要局限于redis,可以使用其他的NoSQL数据库,通过实际应用、对比、总结才能得出好坏。
每天多学一点,量变产生质变。