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);
}
}
}