//引用
usingMemcached.ClientLibrary;namespaceMemcache.AddLock
{public classMemcacheHelper
{//实例化Client
publicMemcachedClient MClient;publicMemcacheHelper()
{//参数设置
string SockIOPoolName = "demo";string[] MemcacheServiceList = { "127.0.0.1:11211"};//设置连接池
SockIOPool SPool =SockIOPool.GetInstance(SockIOPoolName);
SPool.SetServers(MemcacheServiceList);
SPool.Initialize();
MClient= newMemcachedClient();
MClient.PoolName=SockIOPoolName;//是否启用压缩数据:如果启用了压缩,数据压缩长于门槛的数据将被储存在压缩的形式
MClient.EnableCompression = false;压缩设置,超过指定大小的都压缩
//MClient.CompressionThreshold = 1024 * 1024;
}///
///根据key存储对象///
///
///
///
public bool Set(string key, objectvalue)
{var result =MClient.Set(key, value);returnresult;
}///
///根据key存储对象,并且设置过期时间///
///
///
///
///
public bool Set(string key, objectvalue, DateTime timeOut)
{var result =MClient.Set(key, value, timeOut);returnresult;
}///
///根据key获取对应的对象///
///
///
public object Get(stringkey)
{var result =MClient.Get(key);returnresult;
}///
///替换对应key的value///
///
///
///
public bool Replace(string key, objectvalue)
{var result =MClient.Replace(key, value);returnresult;
}///
///删除对应key///
///
///
public bool Delete(stringkey)
{returnMClient.Delete(key);
}///
///删除对应key,并设置从内存中移除的时间点///
///
///
///
public bool Delete(stringkey, DateTime timeOut)
{returnMClient.Delete(key, timeOut);
}///
///判断key是否存在,存在返回true,不存在返回false///
///
///
public bool KeyExists(stringkey)
{returnMClient.KeyExists(key);
}///
///Memcache分布式锁///
///
///
/// 当key存在返回false,当key不存在返回true
public bool Add(string key, objectvalue)
{returnMClient.Add(key, value);
}///
///Memcache分布式锁,并且设置过期时间///Memcached分布式锁可以使用 Add 命令,该命令只有KEY不存在时,才进行添加,否则不会处理。Memcached 所有命令都是原子性的,并发下add 同一个KEY,只会一个会成功。///利用这个原理,可以先定义一个锁 LockKEY,Add 成功的认为是得到锁。并且设置[过期超时] 时间,保证宕机后,也不会死锁。///在完成具体操作后,判断锁 LockKEY 是否已超时。如果超时则不删除锁,如果不超时则 Delete 删除锁。///
///
///
///
/// 当key存在返回false,当key不存在返回true
public bool Add(string key, objectvalue, DateTime timeOut)
{returnMClient.Add(key, value, timeOut);
}
}
}