using Newtonsoft.Json; using StackExchange.Redis; using System; using System.Configuration; using System.Text; namespace ClassLibrary2 { public class RedisHelper { //public static readonly string connectionString = ConfigurationManager.ConnectionStrings["RedisConnectionString"].ConnectionString; public static readonly string connectionString = "localhost:6379,allowadmin=true,password=123,keepAlive=180"; private readonly object _lock = new object(); private volatile IConnectionMultiplexer _connection; public IDatabase _db; public RedisHelper() { _connection = ConnectionMultiplexer.Connect(connectionString); _db = GetDatabase(); } /// <summary> /// 获取数据库 /// </summary> /// <param name="db"></param> /// <returns></returns> public IDatabase GetDatabase(int? db = null) { return GetConnection().GetDatabase(db ?? -1); } /// <summary> /// 获取连接 /// </summary> /// <returns></returns> public IConnectionMultiplexer GetConnection() { if (_connection != null && _connection.IsConnected) { return _connection; } lock (_lock) { if (_connection != null && _connection.IsConnected) { return _connection; } else { _connection.Dispose(); } _connection = ConnectionMultiplexer.Connect(connectionString); } return _connection; } /// <summary> /// 设置 /// </summary> /// <param name="key"></param> /// <param name="data"></param> /// <param name="cacheTime"></param> public virtual void Set(string key, object data, int cacheTime) { if (data == null) { return; } var entryBytes = Serialize(data); var enpiresIn = TimeSpan.FromMinutes(cacheTime); _db.StringSet(key, entryBytes, enpiresIn); } /// <summary> /// 根据建获取值 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="key"></param> /// <returns></returns> public virtual T Get<T>(string key) { var rValue = _db.StringGet(key); if (!rValue.HasValue) { return default(T); } var result = Deserialize<T>(rValue); return result; } /// <summary> /// 反序列化 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="serializedObject"></param> /// <returns></returns> protected virtual T Deserialize<T>(byte[] serializedObject) { if (serializedObject == null) { return default(T); } var json = Encoding.UTF8.GetString(serializedObject); return JsonConvert.DeserializeObject<T>(json); } /// <summary> /// 反序列化 /// </summary> /// <param name="data"></param> /// <returns></returns> public byte[] Serialize(object data) { var json = JsonConvert.SerializeObject(data); return Encoding.UTF8.GetBytes(json); } } }
C# redis测试
猜你喜欢
转载自www.cnblogs.com/qlgbk/p/12599966.html
今日推荐
周排行