首页 > 代码库 > Memcached通用类(基于enyim.com Memcached Client)
Memcached通用类(基于enyim.com Memcached Client)
一.如果用官方提供的方法,在web.config里面配置好了各个参数和服务器IP。如下图:
<?xml version="1.0"?><configuration> <configSections> <sectionGroup name="enyim.com"> <section name="memcached" type="Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching"/> </sectionGroup> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> </configSections> <enyim.com> <memcached protocol="Text"> <servers> <add address="127.0.0.1" port="11211" /> <add address="127.0.0.1" port="11212" /> <add address="127.0.0.1" port="11213" /> <add address="127.0.0.1" port="11214" /> </servers> <socketPool minPoolSize="10" maxPoolSize="100" connectionTimeout="00:00:05" deadTimeout="00:02:00" /> </memcached> </enyim.com> <system.web> <compilation debug="true" targetFramework="4.0"/> </system.web></configuration>
则使用该通用类即可,组件自动调用web.config里面的配置。
using System;using System.Collections.Generic;using System.Linq;using System.Web;using Enyim.Caching;using Enyim.Caching.Configuration;using Enyim.Caching.Memcached;/// <summary>/// MemberHelper 的摘要说明/// </summary>public abstract class MemberHelper{ public MemberHelper() { // // TODO: 在此处添加构造函数逻辑 // } #region 添加缓存 /// <summary> /// 添加缓存(键不存在则添加,存在则替换) /// </summary> /// <param name="key">键</param> /// <param name="value">值</param> /// <returns></returns> public static bool AddCache(string key, object value) { using (MemcachedClient mc = new MemcachedClient()) { return mc.Store(StoreMode.Set, key, value); } } #endregion #region 添加缓存 /// <summary> /// 添加缓存(键不存在则添加,存在则替换) /// </summary> /// <param name="key">键</param> /// <param name="value">值</param> /// <param name="minutes">缓存时间(分钟)</param> /// <returns></returns> public static bool AddCache(string key, object value, int minutes) { using (MemcachedClient mc = new MemcachedClient()) { return mc.Store(StoreMode.Set, key, value, DateTime.Now.AddMinutes(minutes)); } } #endregion #region 获取缓存 /// <summary> /// 获取缓存 /// </summary> /// <param name="key">键</param> /// <returns>返回缓存,没有找到则返回null</returns> public static object GetCache(string key) { using (MemcachedClient mc = new MemcachedClient()) { return mc.Get(key); } } #endregion #region 是否存在该缓存 /// <summary> /// 是否存在该缓存 /// </summary> /// <param name="key">键</param> /// <returns></returns> public static bool IsExists(string key) { using (MemcachedClient mc = new MemcachedClient()) { return mc.Get(key) != null; } } #endregion #region 删除缓存(如果键不存在,则返回false) /// <summary> /// 删除缓存(如果键不存在,则返回false) /// </summary> /// <param name="key">键</param> /// <returns>成功:true失败:false</returns> public static bool DelCache(string key) { using (MemcachedClient mc = new MemcachedClient()) { return mc.Remove(key); } } #endregion #region 清空缓存 /// <summary> /// 清空缓存 /// </summary> public static void FlushCache() { using (MemcachedClient mc = new MemcachedClient()) { mc.FlushAll(); } } #endregion}
二.如果不想在web.config配置,那就使用下面的通用类。
using System;using System.Collections;using System.Collections.Generic;using System.Linq;using System.Net;using System.Web;using Enyim.Caching;using Enyim.Caching.Configuration;using Enyim.Caching.Memcached;/// <summary>/// MemberHelper 的摘要说明/// </summary>public abstract class MemberHelper{ public MemberHelper() { // // TODO: 在此处添加构造函数逻辑 // } #region 创建Memcache客户端 /// <summary> /// 创建Memcache客户端 /// </summary> /// <param name="serverList">服务列表</param> /// <returns></returns> private static MemcachedClient CreateServer(List<IPEndPoint> serverList) { MemcachedClientConfiguration config = new MemcachedClientConfiguration();//创建配置参数 for (int i = 0; i < serverList.Count; i++) { config.Servers.Add(new System.Net.IPEndPoint(IPAddress.Parse(serverList[i].Address.ToString()), serverList[i].Port));//增加服务节点 } config.Protocol = MemcachedProtocol.Text; config.Authentication.Type = typeof(PlainTextAuthenticator);//设置验证模式 config.Authentication.Parameters["userName"] = "uid";//用户名参数 config.Authentication.Parameters["password"] = "pwd";//密码参数 MemcachedClient mac = new MemcachedClient(config);//创建客户端 return mac; } #endregion #region 添加缓存 /// <summary> /// 添加缓存(键不存在则添加,存在则替换) /// </summary> /// <param name="serverList">服务器列表</param> /// <param name="key">键</param> /// <param name="value">值</param> /// <returns></returns> public static bool AddCache(List<IPEndPoint> serverList, string key, object value) { using (MemcachedClient mc = CreateServer(serverList)) { return mc.Store(StoreMode.Set, key, value); } } #endregion #region 添加缓存 /// <summary> /// 添加缓存(键不存在则添加,存在则替换) /// </summary> /// <param name="serverList">服务器列表</param> /// <param name="key">键</param> /// <param name="value">值</param> /// <param name="minutes">缓存时间(分钟)</param> /// <returns></returns> public static bool AddCache(List<IPEndPoint> serverList,string key, object value, int minutes) { using (MemcachedClient mc = CreateServer(serverList)) { return mc.Store(StoreMode.Set, key, value, DateTime.Now.AddMinutes(minutes)); } } #endregion #region 获取缓存 /// <summary> /// 获取缓存 /// </summary> /// <param name="serverList">服务器列表</param> /// <param name="key">键</param> /// <returns>返回缓存,没有找到则返回null</returns> public static object GetCache(List<IPEndPoint> serverList,string key) { using (MemcachedClient mc = CreateServer(serverList)) { return mc.Get(key); } } #endregion #region 是否存在该缓存 /// <summary> /// 是否存在该缓存 /// </summary> /// <param name="serverList">服务器列表</param> /// <param name="key">键</param> /// <returns></returns> public static bool IsExists(List<IPEndPoint> serverList,string key) { using (MemcachedClient mc = CreateServer(serverList)) { return mc.Get(key) != null; } } #endregion #region 删除缓存(如果键不存在,则返回false) /// <summary> /// 删除缓存(如果键不存在,则返回false) /// </summary> /// <param name="serverList">服务器列表</param> /// <param name="key">键</param> /// <returns>成功:true失败:false</returns> public static bool DelCache(List<IPEndPoint> serverList, string key) { using (MemcachedClient mc = CreateServer(serverList)) { return mc.Remove(key); } } #endregion #region 清空缓存 /// <summary> /// 清空缓存 /// </summary> /// <param name="serverList">服务器列表</param> public static void FlushCache(List<IPEndPoint> serverList) { using (MemcachedClient mc = CreateServer(serverList)) { mc.FlushAll(); } } #endregion}
Memcached通用类(基于enyim.com Memcached Client)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。