using System; using Common.Helper.Encryption; using Newtonsoft.Json; using StackExchange.Redis; namespace Common.Helper.Redis { /// /// Redis帮助类--- 项目的appsetting.json 文件里面必须包含 Redis ConnectionString 的配置 /// public class RedisHelper { private static readonly object Locker = new object(); //连接多路复用器 private ConnectionMultiplexer _redisMultiplexer; private IDatabase _db = null; private static RedisHelper _instance = null; /// /// 单例模式 /// public static RedisHelper Instance { get { if (_instance != null) return _instance; lock (Locker) { _instance ??= new RedisHelper(); } return _instance; } } /// /// 连接redis /// public void InitConnect() { try { //连接redis服务器 var redisConnection = AppSettingJsonHelper.GetSection("Redis","ConnectionString"); _redisMultiplexer = ConnectionMultiplexer.Connect(redisConnection); _db = _redisMultiplexer.GetDatabase(); } catch (Exception ex) { Console.WriteLine(ex.Message); _redisMultiplexer = null; _db = null; } } /// /// 实例化 /// public RedisHelper() { InitConnect(); } #region 通用key操作 /// /// 判断键是否存在 /// public bool ExistsKey(string key) { return _db.KeyExists(key); } /// /// 删除键 /// public bool DeleteKey(string key) { return _db.KeyDelete(key); } #endregion #region string操作 /// /// 保存单个key value /// /// 键 /// 值 /// 过期时间 public bool SetStringKey(string key, string value, TimeSpan? expiry=null) { expiry ??= new TimeSpan(0, 5, 0); return _db.StringSet(key, value, expiry); } /// /// 获取单个key的值 /// public RedisValue GetRedisValue(string key) { return _db.StringGet(key); } public string GetStringValue(string key) { return _db.StringGet(key); } /// /// 保存一个对象 /// /// 对象的类型 public bool SetObjectKey(string key, T obj, TimeSpan? expiry = default(TimeSpan?)) { var json = JsonConvert.SerializeObject(obj); return _db.StringSet(key, json, expiry); } /// /// 获取一个key的对象 /// /// 返回类型 public T GetStringKey(string key) { var value = _db.StringGet(key); return value.IsNullOrEmpty ? default : JsonConvert.DeserializeObject(value); } #endregion } }