分享

Memcached通用类

 昵称10504424 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         #endregion
100 
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         #endregion
119 
120         #endregion
121 
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             else
141             {
142                 return "";
143             }
144         }
145         #endregion
146 
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         #endregion
161 
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         #endregion
185 
186         #endregion
187 
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         #endregion
202 
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         #endregion
216     }
217 }
复制代码

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多