一.如果用官方提供的方法,在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)的更多相关文章

  1. Memcached通用类(基于Memcached Client Library)

    分享下自己编写的Memcached通用类.欢迎大家帮忙指点下哈~ 使用的是.NET memcached client library 客户端+Memcached Providers using Sys ...

  2. memcached实例(enyim.com Memcached Client)

    在上一篇文章,我们讲了,为什么要使用memched做为缓存服务器(没看的同学请点这里).下面让我们以memcached-1.2.1-win32版本的服务组件(安装后是以一个windows服务做daem ...

  3. Memcached帮助类

    一.如果用官方提供的方法,在web.config里面配置好了各个参数和服务器IP <?xml version="1.0"?> <configuration> ...

  4. C#操作Memcached帮助类

    在VS中安装Memcached,直接在NuGet下搜索Memcached,选择第一个进行安装: 服务端资源下载地址:https://pan.baidu.com/s/1gf3tupl 接下来开始写程序, ...

  5. [转]C#操作Memcached帮助类

    在VS中安装Memcached,直接在NuGet下搜索Memcached,选择第一个进行安装: 服务端资源下载地址:https://pan.baidu.com/s/1gf3tupl 接下来开始写程序, ...

  6. Memcached的配置,SSH项目中的整合(com.whalin),Memcached工具类,Memcached的代码调用

     1 修改pom.xml,添加依赖文件: <dependency> <groupId>com.whalin</groupId> <artifactId&g ...

  7. Key/Value之王Memcached初探:一、掀起Memcached的盖头来

    一.Memcached是何方神圣? 在数据驱动的Web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了数据库负载.缓存是解决这个问题的好办法.但是ASP.NET中的HttpRuntim ...

  8. 【转】Key/Value之王Memcached初探:一、掀起Memcached的盖头来

    一.Memcached是何方神圣? 在数据驱动的Web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了数据库负载.缓存是解决这个问题的好办法.但是ASP.NET中的HttpRuntim ...

  9. (转)实战Memcached缓存系统(7)Memcached的一些基础FAQ

    1. Memcached是什么? Memcached是分布式的内存对象缓存系统. 2. Memcached的基本数据结构是什么? Memcached是基于Key/Value对的HashMap.每一对, ...

随机推荐

  1. 错误:找不到类org.springframework.web.context.ContextLoaderListener

    严重: Error configuring application listener of class org.springframework.web.context.ContextLoaderLis ...

  2. Android开发笔记——常见BUG类型之内存泄露与线程安全

    本文内容来源于最近一次内部分享的总结,没来得及详细整理,见谅. 本次分享主要对内存泄露和线程安全这两个问题进行一些说明,内部代码扫描发现的BUG大致分为四类:1)空指针:2)除0:3)内存.资源泄露: ...

  3. java使用this关键字调用本类重载构造器

    在构造器中可以调用本类的其他重载构造器,不能使用构造器名称来调用另一个构造器,而是应该使用Java特定的this(-.)来调用. this(-.)方法必须出现在构造器中的第一行,用来调用其他重载构造器 ...

  4. JS中的event 对象详解

    JS中的event 对象详解   JS的event对象 Event属性和方法:1. type:事件的类型,如onlick中的click:2. srcElement/target:事件源,就是发生事件的 ...

  5. MONGODB(三)——Java操作Mongo

    相比于java调用MySqlApI来操作数据库,调用Mongo要简洁容易的多.通过一个简单的样例,很容易地就可以上手 一.导入Jar包 添加Monog支持Java的jar包,这里使用的是2.9.3 & ...

  6. Nginx安装学习使用详细记录

    选择Nginx的优点:Nginx 可以在大多数 Unix like OS 上编译运行,并有 Windows 移植版. Nginx 的1.4.0稳定版已经于2013年4月24日发布,一般情况下,对于新建 ...

  7. pageX和pageY

    pageX() 属性是鼠标指针的位置,相对于文档的左边缘. pageY() 属性是鼠标指针的位置,相对于文档的上边缘. 例1 $(document).mousemove(function(e){ $( ...

  8. Java基础の乱弹琴二:break关键字

    Java中的break一般用于 跳出一个switch或者循环. 跳出switch基本不用赘述. break跳出循环一般是跳出当前一层循环. 如若需要跳出多层循环可以在break后加标签,然后把标签标注 ...

  9. Centos7 配置网络步奏详解

    Centos7 配置网络步奏详解 编辑网卡配置文件 vi /etc/sysconfig/network-script/ifcfg-ens01 备注:这里的ens01不是所有系统都叫这个,有的可能叫其他 ...

  10. [资料分享]迅为iTOP4412开发板-SDIO WiFi移植文档

    本文转自迅为:http://www.topeetboard.com 概述 近期需要把WiFi无线网络功能移植到iTOP-4412 开发平台,查阅了相关资料,经过一段时间的研究.调试,终于成功的将WiF ...