using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using StackExchange.Redis; using System.Configuration; using Newtonsoft.Json; namespace Cache { public class RedisService:ICache { private static readonly string Coonstr = ConfigurationManager.ConnectionStrings["redisconnstring"].ToString(); private static object _locker = new Object(); private static ConnectionMultiplexer _instance = null; /// /// 使用一个静态属性来返回已连接的实例,如下列中所示。这样,一旦 ConnectionMultiplexer 断开连接,便可以初始化新的连接实例。 /// public ConnectionMultiplexer Instance { get { if (_instance == null) { lock (_locker) { if (_instance == null || !_instance.IsConnected) { _instance = ConnectionMultiplexer.Connect(Coonstr); } } } //注册如下事件 // _instance.ConnectionFailed += MuxerConnectionFailed; // _instance.ConnectionRestored += MuxerConnectionRestored; // _instance.ErrorMessage += MuxerErrorMessage; // _instance.ConfigurationChanged += MuxerConfigurationChanged; // _instance.HashSlotMoved += MuxerHashSlotMoved; // _instance.InternalError += MuxerInternalError; return _instance; } } static RedisService() { } public void DeleteTable(string table) { var db = _instance.GetDatabase(); db.KeyDelete(table); } public void Insert(string table, Object data) { var db = _instance.GetDatabase(); db.StringSet(table, JsonConvert.SerializeObject(data)); } public T Get(string table) { var db = _instance.GetDatabase(); var data=db.StringGet(table); return JsonConvert.DeserializeObject(data); } } }