1 /// <summary> 2 /// Redis读写帮助类 3 /// </summary> 4 public class RedisHelper 5 { 6 private ConnectionMultiplexer redis { get; set; } 7 private IDatabase db { get; set; } 8 public RedisHelper(string connection) 9 { 10 redis = ConnectionMultiplexer.Connect(connection); 11 db = redis.GetDatabase(1); 12 } 13 #region string类型操作 14 /// <summary> 15 /// set or update the value for string key 16 /// </summary> 17 /// <param name="key"></param> 18 /// <param name="value"></param> 19 /// <returns></returns> 20 public bool SetStringValue(string key, string value) 21 { 22 return db.StringSet(key, value); 23 } 24 /// <summary> 25 /// 保存单个key value 26 /// </summary> 27 /// <param name="key">Redis Key</param> 28 /// <param name="value">保存的值</param> 29 /// <param name="expiry">过期时间</param> 30 /// <returns></returns> 31 public bool SetStringKey(string key, string value, TimeSpan? expiry = default(TimeSpan?)) 32 { 33 return db.StringSet(key, value, expiry); 34 } 35 /// <summary> 36 /// 保存一个对象 37 /// </summary> 38 /// <typeparam name="T"></typeparam> 39 /// <param name="key"></param> 40 /// <param name="obj"></param> 41 /// <returns></returns> 42 public bool SetStringKey<T>(string key, T obj, TimeSpan? expiry = default(TimeSpan?)) 43 { 44 string json = JsonConvert.SerializeObject(obj); 45 return db.StringSet(key, json, expiry); 46 } 47 /// <summary> 48 /// 获取一个key的对象 49 /// </summary> 50 /// <typeparam name="T"></typeparam> 51 /// <param name="key"></param> 52 /// <returns></returns> 53 public T GetStringKey<T>(string key) where T : class 54 { 55 var result = db.StringGet(key); 56 if (string.IsNullOrEmpty(result)) 57 { 58 return null; 59 } 60 return JsonConvert.DeserializeObject<T>(result); 61 } 62 /// <summary> 63 /// get the value for string key 64 /// </summary> 65 /// <param name="key"></param> 66 /// <returns></returns> 67 public string GetStringValue(string key) 68 { 69 return db.StringGet(key); 70 } 71 72 /// <summary> 73 /// Delete the value for string key 74 /// </summary> 75 /// <param name="key"></param> 76 /// <returns></returns> 77 public bool DeleteStringKey(string key) 78 { 79 return db.KeyDelete(key); 80 } 81 #endregion 82 83 #region 哈希类型操作 84 /// <summary> 85 /// set or update the HashValue for string key 86 /// </summary> 87 /// <param name="key"></param> 88 /// <param name="hashkey"></param> 89 /// <param name="value"></param> 90 /// <returns></returns> 91 public bool SetHashValue(string key, string hashkey, string value) 92 { 93 return db.HashSet(key, hashkey, value); 94 } 95 /// <summary> 96 /// set or update the HashValue for string key 97 /// </summary> 98 /// <typeparam name="T"></typeparam> 99 /// <param name="key"></param> 100 /// <param name="hashkey"></param> 101 /// <param name="t">defined class</param> 102 /// <returns></returns> 103 public bool SetHashValue<T>(String key, string hashkey, T t) where T : class 104 { 105 var json = JsonConvert.SerializeObject(t); 106 return db.HashSet(key, hashkey, json); 107 } 108 /// <summary> 109 /// 保存一个集合 110 /// </summary> 111 /// <typeparam name="T"></typeparam> 112 /// <param name="key">Redis Key</param> 113 /// <param name="list">数据集合</param> 114 /// <param name="getModelId"></param> 115 public void HashSet<T>(string key, List<T> list, Func<T, string> getModelId) 116 { 117 List<HashEntry> listHashEntry = new List<HashEntry>(); 118 foreach (var item in list) 119 { 120 string json = JsonConvert.SerializeObject(item); 121 listHashEntry.Add(new HashEntry(getModelId(item), json)); 122 } 123 db.HashSet(key, listHashEntry.ToArray()); 124 } 125 /// <summary> 126 /// 获取hashkey所有的值 127 /// </summary> 128 /// <typeparam name="T"></typeparam> 129 /// <param name="key"></param> 130 /// <returns></returns> 131 public List<T> HashGetAll<T>(string key) where T : class 132 { 133 List<T> result = new List<T>(); 134 HashEntry[] arr = db.HashGetAll(key); 135 foreach (var item in arr) 136 { 137 if (!item.Value.IsNullOrEmpty) 138 { 139 result.Add(JsonConvert.DeserializeObject<T>(item.Value)); 140 141 } 142 } 143 return result; 144 //result =JsonHelper.DeserializeJsonToList<T>(arr.ToString()); 145 //return result; 146 } 147 /// <summary> 148 /// get the HashValue for string key and hashkey 149 /// </summary> 150 /// <param name="key">Represents a key that can be stored in redis</param> 151 /// <param name="hashkey"></param> 152 /// <returns></returns> 153 public RedisValue GetHashValue(string key, string hashkey) 154 { 155 RedisValue result = db.HashGet(key, hashkey); 156 return result; 157 } 158 /// <summary> 159 /// get the HashValue for string key and hashkey 160 /// </summary> 161 /// <param name="key">Represents a key that can be stored in redis</param> 162 /// <param name="hashkey"></param> 163 /// <returns></returns> 164 public T GetHashValue<T>(string key, string hashkey) where T : class 165 { 166 RedisValue result = db.HashGet(key, hashkey); 167 if (string.IsNullOrEmpty(result)) 168 { 169 return null; 170 } 171 return JsonConvert.DeserializeObject<T>(result); 172 } 173 /// <summary> 174 /// delete the HashValue for string key and hashkey 175 /// </summary> 176 /// <param name="key"></param> 177 /// <param name="hashkey"></param> 178 /// <returns></returns> 179 public bool DeleteHashValue(string key, string hashkey) 180 { 181 return db.HashDelete(key, hashkey); 182 } 183 #endregion 184 }