using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using StackExchange.Redis; namespace Quiz.SiteBase { public class RedisHelper { private readonly static string REDIS_CONN = "121.40.109.21:6379,password=123456"; private readonly static string REDIS_IP = "121.40.109.21"; private readonly static int REDIS_PORT = 6379; private ConnectionMultiplexer redis = null; private IDatabase database = null; private IServer server = null; private int mydb = 0; public RedisHelper(int db) { mydb = db; if (redis == null) { redis = ConnectionMultiplexer.Connect(REDIS_CONN); database = redis.GetDatabase(mydb); server = redis.GetServer(REDIS_IP, REDIS_PORT); redis.ErrorMessage += Redis_ErrorMessage; } } /// <summary> /// 异常记录 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private static void Redis_ErrorMessage(object sender, RedisErrorEventArgs e) { //LogHelper.WriteLog("Redis", new Exception(e.Message)); } /// <summary> /// 通过key获取value /// </summary> /// <param name="key"></param> /// <returns></returns> public string StringGet(string key) { return database.StringGet(key); } /// <summary> /// 新增key value /// </summary> /// <param name="key"></param> /// <param name="val"></param> /// <param name="exp"></param> /// <returns></returns> public bool StringSet(string key, string val, TimeSpan? exp = default(TimeSpan?)) { return database.StringSet(key, val, exp); } /// <summary> /// 新增key value /// </summary> /// <param name="key"></param> /// <param name="val"></param> /// <param name="exp"></param> /// <returns></returns> public bool ObjectSet(string key, object val, TimeSpan? exp = default(TimeSpan?)) { string json = Newtonsoft.Json.JsonConvert.SerializeObject(val); return database.StringSet(key, json, exp); } /// <summary> /// 获取key /// </summary> /// <param name="pattern"></param> /// <returns></returns> public IEnumerable<RedisKey> LikeKeys(string pattern = "*") { return server.Keys(database: mydb, pattern: pattern); } /// <summary> /// 查询 /// </summary> /// <param name="pattern"></param> /// <returns></returns> public Dictionary<string, string> GetLikeKeyValue(string pattern = "*") { IEnumerable<RedisKey> list = LikeKeys(pattern); Dictionary<string, string> dic = new Dictionary<string, string>(); if (list != null && list.Count() > 0) { foreach (var item in list) { dic.Add(item, StringGet(item)); } } return dic; } /// <summary> /// 删除key /// </summary> /// <param name="key"></param> /// <returns></returns> public bool KeyDelete(string key) { return database.KeyDelete(key); } } }