对于安装Redis后 很是不明白如何建立Redis 和 .net 的链接配置 于是查找了很多的资料
首先第一步:安装ASP.NET NuGet 包 (ServiceStack.Redis) 安装好后 查看引用如下:
这时候 首先在 ASP.NET Web.Config中<appSettings>节点中配置如下
<!--Redis 配置--> <add key="redis_server_write" value="Admin2018@127.0.0.1:6379" /> <add key="redis_server_read" value="Admin2018@127.0.0.1:6379" /> <add key="redis_max_read_pool" value="3" /> <add key="redis_max_write_pool" value="1" /> <!--Redis 配置-->
第二步:就开始配置链接Redis的链接了:
1>自定义创建一个RedisCacheHelper的配置类,代码如下:
public class RedisCacheHelper : ConfigurationSection { //读取Redis接口 private static string GetRedis = ConfigurationManager.AppSettings["redis_server_read"]; //读取数量 private static int GetRedisNum =Convert.ToInt32(ConfigurationManager.AppSettings["redis_max_read_pool"]); //写入Redis接口 private static string SetRedis = ConfigurationManager.AppSettings["redis_server_write"]; //写入数量 private static int SetRedisNum = Convert.ToInt32(ConfigurationManager.AppSettings["redis_max_write_pool"]); //定义连接池 private static readonly PooledRedisClientManager Pool = null; //定义构造函数 static RedisCacheHelper() { string [] GetRedisHost = GetRedis.Split(','); string [] SetRedisHost = SetRedis.Split(','); if(GetRedisHost.Length>0&&SetRedisHost.Length>0) { Pool = new PooledRedisClientManager(GetRedisHost, SetRedisHost, new RedisClientManagerConfig() { MaxWritePoolSize = SetRedisNum, MaxReadPoolSize = GetRedisNum, AutoStart = true }); } } /// <summary> /// 添加缓存 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="key"></param> /// <param name="value"></param> public static void Add<T>(string key,List<T> value) { if (value == null) return; try { if (Pool != null) { using (var r = Pool.GetClient()) { if (r != null) { r.SendTimeout = 1000; r.Set<List<T>>(key, value); } } } } catch (Exception ex) { ErrorLog.WriteLog(ex); } } /// <summary> /// 查询单挑 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="key"></param> /// <returns></returns> public static T Get<T>(string key) { if(key==null) return default(T); try { if (Pool != null) { using (var r = Pool.GetClient()) { if (r != null) { r.SendTimeout = 1000; return r.Get<T>(key); } } } } catch (Exception ex) { ErrorLog.WriteLog(ex); } return default(T); } /// <summary> /// 查询多条数据 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="key"></param> /// <returns></returns> public static List<T> GetAll<T>(string key) { if (key == null) return null; try { if (Pool != null) { using (var r = Pool.GetClient()) { if (r != null) { r.SendTimeout = 1000; return r.Get<List<T>>(key); } } } } catch (Exception ex) { ErrorLog.WriteLog(ex); } return null; } /// <summary> /// 删除指定key缓存 /// </summary> /// <param name="key"></param> public static void Remove(string key) { if (key == null) return; try { if (Pool != null) { using (var r = Pool.GetClient()) { if (r != null) { r.SendTimeout = 1000; r.Remove(key); } } } } catch (Exception) { throw; } } /// <summary> /// 判断缓存是否存在 /// </summary> /// <param name="key"></param> /// <returns></returns> public static bool Exists(string key) { if (key == null) return false; try { if (Pool != null) { using (var r = Pool.GetClient()) { if (r != null) { r.SendTimeout = 1000; return r.ContainsKey(key); } } } } catch (Exception ex) { ErrorLog.WriteLog(ex); } return false; } }
在调用的时候 我们还可以在自定义一个Key键的类 用于方便操作存储已经修改。