redis初体验
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis初体验相关的知识,希望对你有一定的参考价值。
本篇记录redis的第一期了解学习的过程,包括环境搭建、客户端、可视化管理器等初步的了解,新手快速全方位的了解并上手redis。
redis是什么我就不写了,请自行去中文官网查阅 http://www.redis.cn/。
- 环境搭建
redis资源可在StackExchange.Redis客户端的github上下载该客户端源码,RedisConfigs文件夹下自带3.0版本资源包https://github.com/StackExchange/StackExchange.Redis,如果觉得源码项目大可以到这个地址下载http://download.csdn.net/download/u010959946/10126608,我把该包独立上传了。
环境部署很简单,几句命令。首先把下载好的文件存放到要安装的盘符中,然后打开控制台程序用cd命令进入到目标文件夹。输入redis-server.exe redis.windows.conf 命令启动redis服务加载配置文件。
输入完回车就会出现一下画面,说明redis服务已经启动。
服务启动完毕,开始连接。打开另一个控制台(不要关闭redis服务的控制台),同样的方式进入目标文件夹,输入redis-cli.exe -h 127.0.0.1 -p 6379 -a 123456(或者只输入redis-cli.exe)命令即可连接本地redis服务,其中6379是默认端口号,123456是默认密码。连接成功可以通过set user zhangsan get user 等命令进行测试(命令详情可访问官网查看)。
2. 代码实现(.net)
环境搭建完毕,通过控制台也能连接访问这说明redis服务成功的在机器上运行了,更进一步我们通过一个demo去连接并操作redis。代码实现需要客户端支持,.net支持的redis客户端在官网都有描述,这里我只讲下StackExchange.Redis。源码地址上文已经给出,有兴趣研究的可自行下载。这里我简单讲下使用。打开vs创建一个控制台应用程序,右键该项目打开菜单中的管理nuget程序包。
浏览中搜索StackExchange.Redis并安装
客户端安装完成,下面就是使用。创建一个SERedisHelper类
/// <summary> /// Redis操作类 /// </summary> public class SERedisHelper { private static string _conn = ConfigurationManager.AppSettings["SERedis"] ?? "127.0.0.1:6379"; #region string类型 /// <summary> /// 根据Key获取值 /// </summary> /// <param name="key">键值</param> /// <returns>System.String.</returns> public static string StringGet(string key) { try { using (var client = ConnectionMultiplexer.Connect(_conn)) { return client.GetDatabase().StringGet(key); } } catch (Exception) { return null; } } /// <summary> /// 批量获取值 /// </summary> public static string[] StringGetMany(string[] keyStrs) { var count = keyStrs.Length; var keys = new RedisKey[count]; var addrs = new string[count]; for (var i = 0; i < count; i++) { keys[i] = keyStrs[i]; } try { using (var client = ConnectionMultiplexer.Connect(_conn)) { var values = client.GetDatabase().StringGet(keys); for (var i = 0; i < values.Length; i++) { addrs[i] = values[i]; } return addrs; } } catch (Exception) { return null; } } /// <summary> /// 单条存值 /// </summary> /// <param name="key">key</param> /// <param name="value">The value.</param> /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns> public static bool StringSet(string key, string value) { using (var client = ConnectionMultiplexer.Connect(_conn)) { return client.GetDatabase().StringSet(key, value); } } /// <summary> /// 批量存值 /// </summary> /// <param name="keysStr">key</param> /// <param name="valuesStr">The value.</param> /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns> public static bool StringSetMany(string[] keysStr, string[] valuesStr) { var count = keysStr.Length; var keyValuePair = new KeyValuePair<RedisKey, RedisValue>[count]; for (int i = 0; i < count; i++) { keyValuePair[i] = new KeyValuePair<RedisKey, RedisValue>(keysStr[i], valuesStr[i]); } using (var client = ConnectionMultiplexer.Connect(_conn)) { return client.GetDatabase().StringSet(keyValuePair); } } #endregion #region 泛型 /// <summary> /// 存值并设置过期时间 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="key">key</param> /// <param name="t">实体</param> /// <param name="ts">过期时间间隔</param> /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns> public static bool Set<T>(string key, T t, TimeSpan ts) { var str = JsonConvert.SerializeObject(t); using (var client = ConnectionMultiplexer.Connect(_conn)) { return client.GetDatabase().StringSet(key, str, ts); } } /// <summary> /// /// 根据Key获取值 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="key">The key.</param> /// <returns>T.</returns> public static T Get<T>(string key) where T : class { using (var client = ConnectionMultiplexer.Connect(_conn)) { var strValue = client.GetDatabase().StringGet(key); return string.IsNullOrEmpty(strValue) ? null : JsonConvert.DeserializeObject<T>(strValue); } } #endregion }
帮助类创建完毕,在Program.cs中使用即可。
var ts = new TimeSpan(0, 0, 1, 0, 1); Console.WriteLine("添加缓存"); SERedisHelper.Set<string>("user", "zhangsan", ts); Console.WriteLine("获取缓存:" + SERedisHelper.Get<string>("user")); Console.ReadLine();
这里注意低版本的redis过期时间不支持毫秒级,当然3.0没问题。调试运行即可看到结果。
3. 总结
本篇旨在快速上手了解redis,如有问题请多指点。
最后贴出一点后续深入了解的资料(持续更新)
一个redis可视化管理工具RedisDesktopManager
http://download.csdn.net/download/u010959946/10126647。
StackExchange.Redis客户端工具类 http://www.cnblogs.com/qtqq/p/5951201.html
再贴下官网地址http://www.redis.cn/topics/pipelining.html (官网总结的内容很全)。
以上是关于redis初体验的主要内容,如果未能解决你的问题,请参考以下文章