Memcached通用类(基于Memcached Client Library)
分享下自己编写的Memcached通用类。欢迎大家帮忙指点下哈~
使用的是.NET memcached client library 客户端+Memcached Providers
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using Memcached.ClientLibrary; namespace KOC.Common.DataAccess
{
/// <summary>
/// Memcache通用类
/// </summary>
public abstract class MemberHelper
{
#region 创建Memcache服务
/// <summary>
/// 创建Memcache服务
/// </summary>
/// <param name="serverlist">IP端口列表</param>
/// <param name="poolName">Socket连接池名称</param>
/// <returns>Memcache客户端代理类</returns>
private static MemcachedClient CreateServer(ArrayList serverlist, string poolName)
{
//初始化memcache服务器池
SockIOPool pool = SockIOPool.GetInstance(poolName);
//设置Memcache池连接点服务器端。
pool.SetServers(serverlist);
pool.Initialize();
//其他参数根据需要进行配置 //创建了一个Memcache客户端的代理类。
MemcachedClient mc = new MemcachedClient();
mc.PoolName = poolName;
mc.EnableCompression = false;//是否压缩 return mc;
}
#endregion #region 缓存是否存在
/// <summary>
/// 缓存是否存在
/// </summary>
/// <param name="serverlist">IP端口列表</param>
/// <param name="key">键</param>
/// <returns></returns>
public static bool CacheIsExists(ArrayList serverlist, string poolName, string key)
{
MemcachedClient mc = CreateServer(serverlist, poolName); if (mc.KeyExists(key))
{
return true;
}
else
{
return false;
} }
#endregion #region 添加缓存 #region 添加缓存(键不存在则添加,键存在则不能添加)
/// <summary>
/// 添加缓存(键不存在则添加,键存在则不能添加)
/// </summary>
/// <param name="serverlist">IP端口列表</param>
/// <param name="poolName">连接池名称</param>
/// <param name="key">键</param>
/// <param name="value">值</param>
/// <param name="minutes">过期分钟数</param>
/// <returns></returns>
public static bool AddCache(ArrayList serverlist, string poolName, string key, string value, int minutes)
{
MemcachedClient mc = CreateServer(serverlist, poolName);
return mc.Add(key, value, DateTime.Now.AddMinutes(minutes));
}
#endregion #region 添加缓存(键不存在则添加,键存在则覆盖)
/// <summary>
/// 添加缓存(键不存在则添加,键存在则覆盖)
/// </summary>
/// <param name="serverlist">IP端口列表</param>
/// <param name="poolName">连接池名称</param>
/// <param name="key">键</param>
/// <param name="value">值</param>
/// <param name="minutes">过期分钟数</param>
/// <returns></returns>
public static bool SetCache(ArrayList serverlist, string poolName, string key, string value, int minutes)
{
MemcachedClient mc = CreateServer(serverlist, poolName);
return mc.Set(key, value, DateTime.Now.AddMinutes(minutes));
}
#endregion #endregion #region 替换缓存 #region 替换缓存(键存在的才能替换,不存在则不替换)
/// <summary>
/// 替换缓存(键存在的才能替换,不存在则不替换)
/// </summary>
/// <param name="serverlist">IP端口列表</param>
/// <param name="poolName">连接池名称</param>
/// <param name="key">键</param>
/// <param name="value">值</param>
/// <param name="minutes">过期分钟数</param>
/// <returns></returns>
public static bool ReplaceCache(ArrayList serverlist, string poolName, string key, string value, int minutes)
{
MemcachedClient mc = CreateServer(serverlist, poolName);
return mc.Replace(key, value, DateTime.Now.AddMinutes(minutes));
}
#endregion #endregion #region 获取缓存 #region 获取单个键对应的缓存
/// <summary>
/// 获取单个键对应的缓存
/// </summary>
/// <param name="serverlist">IP端口列表</param>
/// <param name="poolName">连接池名称</param>
/// <param name="key">键</param>
/// <returns></returns>
public static object GetCache(ArrayList serverlist, string poolName, string key)
{
MemcachedClient mc = CreateServer(serverlist, poolName);
if (mc.KeyExists(key))
{
return mc.Get(key);
}
else
{
return "";
}
}
#endregion #region 获取键数组对应的值
/// <summary>
/// 获取键数组对应的值
/// </summary>
/// <param name="serverlist">IP端口列表</param>
/// <param name="poolName">连接池名称</param>
/// <param name="keys">键列表</param>
/// <returns>Hashtable键值对</returns>
public static Hashtable GetCacheHt(ArrayList serverlist, string poolName, string[] keys)
{
MemcachedClient mc = CreateServer(serverlist, poolName);
return mc.GetMultiple(keys);
}
#endregion #region 获取键数组对应的值
/// <summary>
/// 获取键数组对应的值
/// </summary>
/// <param name="serverlist">IP端口列表</param>
/// <param name="poolName">连接池名称</param>
/// <param name="keys">键列表</param>
/// <returns>值的数组(不包含键)</returns>
public static object[] GetCacheList(ArrayList serverlist, string poolName, string[] keys)
{
MemcachedClient mc = CreateServer(serverlist, poolName);
object[] list = mc.GetMultipleArray(keys);
ArrayList returnList = new ArrayList();
for (int i = ; i < list.Length; i++)
{
if (list[i] != null)
{
returnList.Add(list[i]);
}
}
return returnList.ToArray();
}
#endregion #endregion #region 删除缓存
/// <summary>
/// 删除缓存
/// </summary>
/// <param name="serverlist">IP端口列表</param>
/// <param name="poolName">连接池名称</param>
/// <param name="key">键</param>
/// <returns></returns>
public static bool DelCache(ArrayList serverlist, string poolName, string key)
{
MemcachedClient mc = CreateServer(serverlist, poolName);
return mc.Delete(key);
}
#endregion #region 清空所有缓存
/// <summary>
/// 清空所有缓存
/// </summary>
/// <param name="serverlist">IP端口列表</param>
/// <param name="poolName">连接池名称</param>
/// <returns></returns>
public static bool FlushAll(ArrayList serverlist, string poolName)
{
MemcachedClient mc = CreateServer(serverlist, poolName);
return mc.FlushAll();
}
#endregion
}
}
Memcached通用类(基于Memcached Client Library)的更多相关文章
- Memcached通用类(基于enyim.com Memcached Client)
一.如果用官方提供的方法,在web.config里面配置好了各个参数和服务器IP.如下图: <?xml version="1.0"?> <configuratio ...
- Memcached的配置,SSH项目中的整合(com.whalin),Memcached工具类,Memcached的代码调用
1 修改pom.xml,添加依赖文件: <dependency> <groupId>com.whalin</groupId> <artifactId&g ...
- 分布式缓存系统Memcached简介与实践(.NET memcached client library)
缘起: 在数据驱动的web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了数据库负载.缓存是解决这个问题的好办法.但是ASP.NET中的虽然已经可以实现对页面局部进行缓存,但还是不够灵 ...
- GPS部标监控平台的架构设计(十一)-基于Memcached的分布式Gps监控平台
部标gps监控平台的架构,随着平台接入的车辆越来越多,架构也面临越来越大的负载挑战,我们当然希望软件尽可能的优化并能够接入更多的车辆,减少在硬件上的投资.但是当车辆增多到某一个临界点的时候,仍然要面临 ...
- Memcached帮助类
一.如果用官方提供的方法,在web.config里面配置好了各个参数和服务器IP <?xml version="1.0"?> <configuration> ...
- 基于Memcached分布式系统DRDoS拒绝服务攻击技术研究(转)
本次反射式拒绝服务攻击技术基于全球互联网分布式的Memcached服务器,需要储备一定得安全攻防知识,网络协议知识和python代码编程技术.希望在学习本篇文章知识前自行学习相关的基础知识,文章后面同 ...
- Go/Python/Erlang编程语言对比分析及示例 基于RabbitMQ.Client组件实现RabbitMQ可复用的 ConnectionPool(连接池) 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil 分享基于MemoryCache(内存缓存)的缓存工具类,C# B/S 、C/S项目均可以使用!
Go/Python/Erlang编程语言对比分析及示例 本文主要是介绍Go,从语言对比分析的角度切入.之所以选择与Python.Erlang对比,是因为做为高级语言,它们语言特性上有较大的相似性, ...
- Memcached完全解剖–1. memcached基金会
翻译一篇技术评论社的文章,是讲memcached的连载.fcicq同学说这个东西非常实用,希望大家喜欢. 发表日:2008/7/2 作者:长野雅广(Masahiro Nagano) 原文链接:ht ...
- 适用于app.config与web.config的ConfigUtil读写工具类 基于MongoDb官方C#驱动封装MongoDbCsharpHelper类(CRUD类) 基于ASP.NET WEB API实现分布式数据访问中间层(提供对数据库的CRUD) C# 实现AOP 的几种常见方式
适用于app.config与web.config的ConfigUtil读写工具类 之前文章:<两种读写配置文件的方案(app.config与web.config通用)>,现在重新整理一 ...
随机推荐
- nginx+tomcat负载均衡+动静分离+redis集中管理session
1.服务器A安装ng,服务器B.C安装tomcat: 2.服务器A建立/data/www目录,用于发布静态文件: 3.ng无动静分离配置: user root root; worker_process ...
- webservice引用spring的bean
<jaxws:endpoint address="/test/webservice" implementor="#testBean" /> 这行代码 ...
- 函数参数为int*和int&的区别
参数为int*,表明参数为指针,调用的时候需要地址,如f(&a): 参数为int&,传引用参数,调用时f(a),“引用类型的形参就通过形实结合,成为实参的一个别名,对形参的任何操作也就 ...
- The C++ Standard Library --- A Tutorial Reference 读书笔记
5.2 Smart Pointer(智能指针) shared_ptr的aliasing构造函数,接受一个shared pointer和一个raw pointer.它允许你掌握一个事实:某对象拥有另一个 ...
- [算法][C]计算向量的角度
C 语言里 double atan2(double y,double x) 返回的是原点至点(x,y)的方位角,即与 x 轴的夹角.也可以理解为复数 x+yi 的辐角.返回值的单位为弧度,取值范围为 ...
- FIleReader无法解决编码问题
可把FileReader 用InputStreamReader(new FileInputStream(String fileptah),"utf-8")替代
- HASH表原理(装)
HASH表原理 大家都知道,在所有的线性数据结构中,数组的定位速度最快,因为它可通过数组下标直接定位到相应的数组空间,就不需要一个个查找.而哈希表就是利用数组这个能够快速定位数据的结构解决以上的问题的 ...
- 基本的MFC多线程
多线程程序我本来是能够来写的.但是由于在图像处理的过程中,对于这方面知识使用的比较少,造成重复忘记的情况.这里再次进行整理学习,特别注重和“图像处理”理清关系,为下一步使用奠定基础. 这里实现的是工作 ...
- 数据库查询优化器的艺术:原理解析与SQL性能优化
数据库查询优化器的艺术 作者:李海翔 Oracle公司MySQL全球开发团队.资深专家 简单的浏览了一遍,由于以前没有接触过SQL优化这些知识,读起来还是非常吃力的,不过收获还是很大的. 作者通过对M ...
- 批量清除.svn 或 _svn
Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN]@=&q ...