public class MemcachedHelper
{
private static MemcachedClient mc = null;
static MemcachedHelper()
{
//从配置文件中获取比较好
// string[] serverlist = { "127.0.0.1:11211", "10.0.0.132:11211" };
string memcacheservers = ConfigurationManager.AppSettings["memcachSeverList"].ToString();
string[] serverlist = memcacheservers.Split('|');
//初始化池
SockIOPool pool = SockIOPool.GetInstance();
//设置服务器列表
pool.SetServers(serverlist);
pool.InitConnections = 3;//初始连接数
pool.MinConnections = 3;//最小连接数
pool.MaxConnections = 5;//最大连接数
pool.SocketConnectTimeout = 1000;//设置连接的套接字超时
pool.SocketTimeout = 3000;//设置套接字超时读取
pool.MaintenanceSleep = 30;//设置维护线程运行的睡眠时间。如果设置为0,那么维护线程将不会启动,30就是每隔30秒醒来一次
//获取或设置池的故障标志。
//如果这个标志被设置为true则socket连接失败,将试图从另一台服务器返回一个套接字如果存在的话。
//如果设置为false,则得到一个套接字如果存在的话。否则返回NULL,如果它无法连接到请求的服务器。
pool.Failover = true;
pool.Nagle = false;//如果为false,对所有创建的套接字关闭Nagle的算法
pool.Initialize();
// 获得客户端实例
mc = new MemcachedClient();
//是否启用压缩数据:如果启用了压缩,数据压缩长于门槛的数据将被储存在压缩的形式
mc.EnableCompression = false;
}
/// <summary>
/// 添加缓存[默认过期时间30天]
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
public static bool Set(string key, object value)
{
return mc.Set(key, value);
}
/// <summary>
/// 添加缓存
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
/// <param name="expriTime">设置过期时间 Datetime.Now.addDay(12)</param>
public static bool Set(string key, object value, DateTime expriTime)
{
return mc.Set(key, value, expriTime);
}
/// <summary>
/// 获取缓存
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public static object Get(string key)
{
return mc.Get(key);
}
/// <summary>
/// 移除缓存
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public static bool Remove(string key)
{
return mc.Delete(key);
}
/// <summary>
/// 缓存的“Key”是否存在
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public static bool IsExist(string key)
{
return mc.KeyExists(key);
}
}