开通VIP,畅享免费电子书等14项超值服
首页
好书
留言交流
下载APP
联系客服
2013.07.03
分享下自己编写的Memcached通用类。欢迎大家帮忙指点下哈~
使用的是.NET memcached client library 客户端+Memcached Providers
1 using System; 2 using System.Collections; 3 using System.Collections.Generic; 4 using System.Text; 5 using Memcached.ClientLibrary; 6 7 namespace KOC.Common.DataAccess 8 { 9 /// <summary> 10 /// Memcache通用类 11 /// </summary> 12 public abstract class MemberHelper 13 { 14 #region 创建Memcache服务 15 /// <summary> 16 /// 创建Memcache服务 17 /// </summary> 18 /// <param name="serverAddress">服务IP加端口号</param> 19 /// <param name="poolName">Socket连接池名称</param> 20 /// <returns>Memcache客户端代理类</returns> 21 private static MemcachedClient CreateServer(string serverAddress, string poolName) 22 { 23 String[] serverlist = { serverAddress }; //服务ip数组 24 // 初始化memcache服务器池 25 SockIOPool pool = SockIOPool.GetInstance(poolName); 26 if (pool.GetConnection(serverAddress) == null || pool.GetConnection(serverAddress).IsConnected == false)//如果连接池为null,则重新实例化连接池 27 { 28 //设置Memcache池连接点服务器端。 29 pool.SetServers(serverlist); 30 pool.Initialize(); 31 //其他参数根据需要进行配置 32 } 33 34 //创建了一个Memcache客户端的代理类。 35 MemcachedClient mc = new MemcachedClient(); 36 mc.PoolName = poolName; 37 mc.EnableCompression = false;//是否压缩 38 return mc; 39 } 40 #endregion 41 42 #region 缓存是否存在 43 /// <summary> 44 /// 缓存是否存在 45 /// </summary> 46 /// <param name="key">键</param> 47 /// <returns></returns> 48 public static bool CacheIsExists(string serverAddress, string poolName, string key) 49 { 50 MemcachedClient mc = CreateServer(serverAddress, poolName); 51 52 if (mc.KeyExists(key)) 53 { 54 return true; 55 } 56 else 57 { 58 return false; 59 } 60 } 61 #endregion 62 63 #region 添加缓存 64 65 #region 添加缓存(键不存在则添加,键存在则不能添加) 66 /// <summary> 67 /// 添加缓存(键不存在则添加,键存在则不能添加) 68 /// </summary> 69 /// <param name="serverAddress">服务IP地址</param> 70 /// <param name="poolName">连接池名称</param> 71 /// <param name="key">键</param> 72 /// <param name="value">值</param> 73 /// <param name="minutes">过期分钟数</param> 74 /// <returns></returns> 75 public static bool AddCache(string serverAddress, string poolName, string key, string value, int minutes) 76 { 77 MemcachedClient mc = CreateServer(serverAddress, poolName); 78 return mc.Add(key, value, DateTime.Now.AddMinutes(minutes)); 79 } 80 #endregion 81 82 #region 添加缓存(键不存在则添加,键存在则覆盖) 83 /// <summary> 84 /// 添加缓存(键不存在则添加,键存在则覆盖) 85 /// </summary> 86 /// <param name="serverAddress">服务IP地址</param> 87 /// <param name="poolName">连接池名称</param> 88 /// <param name="key">键</param> 89 /// <param name="value">值</param> 90 /// <param name="minutes">过期分钟数</param> 91 /// <returns></returns> 92 public static bool SetCache(string serverAddress, string poolName, string key, string value, int minutes) 93 { 94 MemcachedClient mc = CreateServer(serverAddress, poolName); 95 return mc.Set(key, value, DateTime.Now.AddMinutes(minutes)); 96 } 97 #endregion 98 99 #endregion100 101 #region 替换缓存102 103 #region 替换缓存(键存在的才能替换,不存在则不替换)104 /// <summary>105 /// 替换缓存(键存在的才能替换,不存在则不替换)106 /// </summary>107 /// <param name="serverAddress">服务IP地址</param>108 /// <param name="poolName">连接池名称</param>109 /// <param name="key">键</param>110 /// <param name="value">值</param>111 /// <param name="minutes">过期分钟数</param>112 /// <returns></returns>113 public static bool ReplaceCache(string serverAddress, string poolName, string key, string value, int minutes)114 {115 MemcachedClient mc = CreateServer(serverAddress, poolName);116 return mc.Replace(key, value, DateTime.Now.AddMinutes(minutes));117 }118 #endregion119 120 #endregion121 122 #region 获取缓存123 124 #region 获取单个键对应的缓存125 /// <summary>126 /// 获取单个键对应的缓存127 /// </summary>128 /// <param name="serverAddress">服务IP地址</param>129 /// <param name="poolName">连接池名称</param>130 /// <param name="key">键</param> 131 /// <returns></returns>132 public static object GetCache(string serverAddress, string poolName, string key)133 {134 MemcachedClient mc = CreateServer(serverAddress, poolName);135 if (mc.KeyExists(key))136 {137 object value = mc.Get(key);138 return value != null ? value : "";139 }140 else141 {142 return "";143 }144 }145 #endregion146 147 #region 获取键数组对应的值148 /// <summary>149 /// 获取键数组对应的值150 /// </summary>151 /// <param name="serverAddress">服务IP地址</param>152 /// <param name="poolName">连接池名称</param>153 /// <param name="keys">键列表</param>154 /// <returns>Hashtable键值对</returns>155 public static Hashtable GetCacheHt(string serverAddress, string poolName, string[] keys)156 {157 MemcachedClient mc = CreateServer(serverAddress, poolName);158 return mc.GetMultiple(keys);159 }160 #endregion161 162 #region 获取键数组对应的值163 /// <summary>164 /// 获取键数组对应的值165 /// </summary>166 /// <param name="serverAddress">服务IP地址</param>167 /// <param name="poolName">连接池名称</param>168 /// <param name="keys">键列表</param>169 /// <returns>值的数组(不包含键)</returns>170 public static object[] GetCacheList(string serverAddress, string poolName, string[] keys)171 {172 MemcachedClient mc = CreateServer(serverAddress, poolName);173 object[] list = mc.GetMultipleArray(keys);174 ArrayList returnList = new ArrayList();175 for (int i = 0; i < list.Length; i++)176 {177 if (list[i] != null)178 {179 returnList.Add(list[i]);180 }181 }182 return returnList.ToArray();183 }184 #endregion185 186 #endregion187 188 #region 删除缓存189 /// <summary>190 /// 删除缓存191 /// </summary>192 /// <param name="serverAddress">服务IP地址</param>193 /// <param name="poolName">连接池名称</param>194 /// <param name="key">键</param>195 /// <returns></returns>196 public static bool DelCache(string serverAddress, string poolName, string key)197 {198 MemcachedClient mc = CreateServer(serverAddress, poolName);199 return mc.Delete(key);200 }201 #endregion202 203 #region 清空所有缓存204 /// <summary>205 /// 清空所有缓存206 /// </summary>207 /// <param name="serverAddress">服务IP地址</param>208 /// <param name="poolName">连接池名称</param>209 /// <returns></returns>210 public static bool FlushAll(string serverAddress, string poolName)211 {212 MemcachedClient mc = CreateServer(serverAddress, poolName);213 return mc.FlushAll();214 }215 #endregion216 }217 }
微信登录中...请勿关闭此页面