Memcached 的一些用法
public interface ICache
{ object Get(string key); /// <summary>
/// 根据 key 从缓存中读取数据
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="key"></param>
/// <returns></returns>
T Get<T>(string key); /// <summary>
/// 根据 key 从缓存中读取数据
/// 当缓存中不存在读取的数据时, 将通过 getData function 获取数据.
/// 如果 getData function 的返回数据也为 null 则不会 set 到缓存.
/// 否则会将 getData function 的数据 set 到缓存, 该缓存设置按默认过期时间处理
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="key"></param>
/// <param name="getData"></param>
/// <returns></returns>
T Get<T>(string key, Func<T> getData); /// <summary>
/// 根据 key 从缓存中读取数据
/// 当缓存中不存在读取的数据时,将通过 getData function 获取数据.
/// 如果 getData function 的返回数据也为 null 则不会 set 到缓存.
/// 否则会将 getData function 的数据 set 到缓存, 该缓存设置按 timespan 过期时间处理
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="key"></param>
/// <param name="getData"></param>
/// <param name="timespan"></param>
/// <returns></returns>
T Get<T>(string key, Func<T> getData, TimeSpan timespan); /// <summary>
/// 设置数据到缓存
/// 缓存的过期时间按默认时间处理
/// </summary>
/// <param name="key"></param>
/// <param name="data"></param>
void Set(string key, object data); /// <summary>
/// 设置数据到缓存,并指定过期时间
/// </summary>
/// <param name="key"></param>
/// <param name="data"></param>
/// <param name="cacheTime"></param>
void Set(string key, object data, TimeSpan cacheTime); /// <summary>
/// 缓存数组中是否存在某项 key
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
bool IsSet(string key); /// <summary>
/// 根据key移除缓存值
/// </summary>
/// <param name="key"></param>
void Remove(string key); }
public class MemcachedCacheProvider : ICache
{ const int DefaultCacheExpiredMinutes = 20; private MemcachedClient _Client; public MemcachedCacheProvider()
{
_Client = new MemcachedClient();
} public object Get(string key)
{
if (string.IsNullOrEmpty(key))
throw new ArgumentNullException("key");
return _Client.Get(key);
} public T Get<T>(string key)
{
object obj = this.Get(key);
if (obj is T)
{
return (T)obj;
}
return default(T);
} public T Get<T>(string key, Func<T> getData)
{
return this.Get<T>(key, getData, TimeSpan.FromMinutes(DefaultCacheExpiredMinutes));
} public T Get<T>(string key, Func<T> getData, TimeSpan timespan)
{
T val = this.Get<T>(key);
if (val == null)
{
val = getData();
if (val != null)
{
this.Set(key, val, timespan);
}
}
return val;
} public void Set(string key, object data)
{
this.Set(key, data, TimeSpan.FromMinutes(DefaultCacheExpiredMinutes));
} public void Set(string key, object data, TimeSpan cacheTime)
{
if (string.IsNullOrEmpty(key))
throw new ArgumentNullException("key");
if (data == null)
{
return;
} DateTime time = DateTime.Now.Add(cacheTime);
DateTime now = DateTime.Now;
if (now >= time)
{
throw new Exception("时间设置不正确");
} _Client.Set(key, data, time);
} public bool IsSet(string key)
{
return _Client.KeyExists(key);
} public void Remove(string key)
{
_Client.Delete(key);
}
}
// 获得客户端实例
MemcachedClient mc = new MemcachedClient(); string[] serverlist = { "10.10.20.51:11211" }; //初始化池
SockIOPool pool = SockIOPool.GetInstance();
pool.SetServers(serverlist); pool.InitConnections = 3;
pool.MinConnections = 3;
pool.MaxConnections = 5; pool.SocketConnectTimeout = 1000;
pool.SocketTimeout = 3000; pool.MaintenanceSleep = 30;
pool.Failover = true; pool.Nagle = false;
pool.Initialize();
Memcached 的一些用法的更多相关文章
- Memcached操作以及用法
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached ...
- Memcached部署和用法
一.Memcached简介 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网 ...
- Memcached命令:简单获取缓存value用法
Memcached:命令用法1.cmd 输入telnet ip 端口 进入memcached服务端窗口比如:xxx.Token_T1435622096xxx为key获取此key的memcached ...
- 关于 Memcached 的一些使用
关于Memcached的一些用法, Memcached 在Windows下的版本费了很大劲,才找到.win32,win64都有.本来想自己build的,但是Cygwin下载包也是费老劲了,下不下来. ...
- Memcached 运行状态
memcached-tool 命令用于查看 Memcached 运行状态,用法如下: Usage: memcached-tool <host[:port] | /path/to/socket&g ...
- nginx的笔记
nginx 的安装 下载地址: http://nginx.org/download/nginx-1.4.2.tar.gz 安装准备: nginx依赖于pcre库,要先安装pcre yum instal ...
- NoSQL注入的分析和缓解
本文要点介绍: 1.了解针对NoSQL的新的安全漏洞 2.五类NoSQL攻击手段,比如重言式.联合查询.JavaScript 注入.背负式查询(Piggybacked queries),以及跨域违规 ...
- Mac linux 安装memcached服务 用法
今天在Mac上安装memcached服务的时候 由于安装memcached之前需要安装libevent依赖包 所以使用brew install libevent 安装过程中报错 Warning: Yo ...
- (转)Memcached用法--参数和命令详解
Memcached用法--参数和命令详解 1. memcached 参数说明: # memcached -h 1.1 memcached 的参数 常用参数 -p <num> 监听的TCP端 ...
随机推荐
- 【BZOJ】1415: [Noi2005]聪聪和可可【期望】【最短路】【记忆化搜索】
1415: [Noi2005]聪聪和可可 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2335 Solved: 1373[Submit][Stat ...
- bzoj 1047 单调队列
做4次单调队列优化DP. /************************************************************** Problem: 1047 User: idy ...
- java_线程的几种状态
java thread的运行周期中, 有几种状态, 在 java.lang.Thread.State 中有详细定义和说明: NEW 状态是指线程刚创建, 尚未启动 RUNNABLE 状态是线程正在正常 ...
- asp.net MVC 3/4 equivalent to a response.filter
am in a need to intercept all of the html that will be sent to the browser and replace some tags tha ...
- idea安装Lombok及使用介绍
原文:https://blog.csdn.net/motui/article/details/79012846 Lombok使用 介绍 在项目中使用Lombok可以减少很多重复代码的书写.比如说get ...
- Windows下编译memcached-1.4.5(32bit和64bit)
1.简介 Memcached 是一个高性能的分布式内存对象缓存系统.它通过将数据缓存在内存中来减少对数据库和文件系统的访问,减轻数据库及操作系统的负担,提高应用系统的速度. 目前已经很多系统应用了me ...
- [翻译] FTCoreText
FTCoreText An open source Objective-C interface component that makes use of the CoreText framework t ...
- WhyGL:一套学习OpenGL的框架,及翻写Nehe的OpenGL教程
最近在重学OpenGL,之所以说重学是因为上次接触OpenGL还是在学校里,工作之后就一直在搞D3D,一转眼已经毕业6年了.OpenGL这门手艺早就完全荒废了,现在只能是重学.学习程序最有效的办法是动 ...
- 我所遭遇过的游戏中间件--FlashOcx
使用Flash做游戏界面的另一种方式是通过Abode提供flash.ocx处理Flash界面.将Flash图像通过GDI绘制出来后,再将图像数据拷贝到一个D3D的纹理结构中,最后由引擎的D3D接口进行 ...
- 第十二章 springboot + mongodb(复杂查询)
简单查询:使用自定义的XxxRepository接口即可.(见 第十一章 springboot + mongodb(简单查询)) 复杂查询:使用MongoTemplate以及一些查询条件构建类(Bas ...