阅读目录

1.MemCached是什么?

2.Window中MemCached安装

3.MemCached命令

4.简单示例

MemCached是什么  

  MemCached是一个自由开源,高性能,分布式内存对象缓存系统。Memcached是以LiveJournal旗下Danga Interactive公司的Brad Fitzpatric为首开发的一款软件。现在已成为mixi、hatena、Facebook、Vox、LiveJournal等众多服务中提高Web应用扩展性的重要因素。

MemCached是一种基于内存的key-value存储,用来存储小块的任意数据。实现原理就是,第一次从数据库获取到结果之后,同时将结果保存在内存中,从而简单对数据库的访问次数,以提高Web应用的速度。

  

Memcached 官网:http://memcached.org/

Window中MemCached安装

下载地址:http://pan.baidu.com/s/1yVILw       提取密码:5gx9

官方网站:http://memcached.org/

下载完成后

1、打开SetupFile安装文件夹。

2、以管理员身份打开cmd,输入以下命令

3、安装成功之后,要去服务中启动memcached服务。

MemCached命令

MemCached中有很多命令,大概可分为增加、更新、获取和删除缓存数据,下面简单介绍几种常用的命令;

Set

用于将value(数据值)存储到指定的key(键)中。

如果set的key已经存在,该命令会更新该key所对应的原来的数据,也就是实现了更新的作用。

Add

用于将value(数据值)存储到指定的key(键)中。

如果 Add 的 key 已经存在,则不会更新数据,之前的值将仍然保持相同,并且您将获得响应 NOT_STORED

Get

Get命令获取存储在 key() 中的 value(数据值) ,如果 key 不存在,则返回空。

Delete

用于删除已存在的 key(键)。

flush_all 

flush_all 命令用于清理缓存中的所有 key=>value(=>) 对。

该命令提供了一个可选参数 time,用于在制定的时间后执行清理缓存操作。

简单示例

新建一个控制台程序,从下载的目录中添加ICSharpCode.SharpZipLib.dll,log4net.dll,Memcached.ClientLibrary.dll三个组件,新建一个MemCached管理类,具体代码如下:

/// <summary>
/// 分布式缓存的MemCached管理器
/// </summary>
public class MemCachedManager
{
public static MemcachedClient cache; static MemCachedManager()
{
string[] servers = { "172.20.61.195:11211" };
//初始化池
SockIOPool pool = SockIOPool.GetInstance();
//设置服务器列表
pool.SetServers(servers);
//设置各服务之间负责均衡的权重
pool.SetWeights(new int[] { });
//初始化时创建连接数
pool.InitConnections = ;
//最小连接数
pool.MinConnections = ;
//最大连接数
pool.MaxConnections = ;
//连接的最大空闲时间,下面设置为6个小时(单位为ms),超过这个设置时间,连接会被释放
pool.MaxIdle = * * * ;
//socket连接的超时时间,为0表示永不超时,即一直保持连接状态
pool.SocketConnectTimeout = ;
//通讯的超时时间,下面设置为3秒,.net版本没有实现
pool.SocketTimeout = * ;
//维护线程的间隔激活时间,下面设置为30秒(单位s),设置为0时表示不启用维护线程
pool.MaintenanceSleep = ;
//设置SocketIO池的故障标志
pool.Failover = true;
//是否对TCP/IP通讯使用nalgle算法,.net版本没有实现
pool.Nagle = false;
//socket单次任务的最大时间(单位ms),超过这个时间socket会被强行中断,当前任务失败
pool.MaxBusy = * ;
pool.Initialize();
cache = new MemcachedClient();
//是否启用压缩数据:如果启用了压缩,数据压缩长于门槛的数据将被储存在压缩的形式
cache.EnableCompression = false;
}
}

其中IP是本机地址,端口是固定的,如果有多台服务器用于缓存,在数组列出对应的IP即可。

测试代码:

public static void TestMethod()
{
//清除所有的缓存数据
MemCachedManager.cache.FlushAll(); var v1 = MemCachedManager.cache.Add("a", "");
var res1 = MemCachedManager.cache.Get("a");
Console.WriteLine("第一次Add返回值{0},结果{1}", v1, res1); var v2 = MemCachedManager.cache.Add("a", "");
var res2 = MemCachedManager.cache.Get("a");
Console.WriteLine("第二次Add返回值{0},结果{1}", v2, res2); var v3 = MemCachedManager.cache.Set("a", "");
var res3 = MemCachedManager.cache.Get("a");
Console.WriteLine("Set返回值{0},结果{0}", res3); var v4 = MemCachedManager.cache.Replace("a", "");
var res4 = MemCachedManager.cache.Get("a");
Console.WriteLine("replace返回值{0},结果{0}", res4); var v5 = MemCachedManager.cache.Replace("b", "");
Console.WriteLine("replace返回值{0}", v5); MemCachedManager.cache.Set("b","");
MemCachedManager.cache.Delete("b");
var v6= MemCachedManager.cache.KeyExists("b");
Console.WriteLine("Delete之后返回值{0}", v6);
}
}

运行结果:

最新文章

  1. SQL 列转行的实现
  2. jquery客户端验证插件
  3. ES TIPS
  4. [3D跑酷] UI事件处理系统
  5. ios 随机色 宏定义
  6. caffe里的blocking_queue.hpp与.cpp干了点什么呢???
  7. ZOJ-3870 Team Formation
  8. 国外PHP学习网站书籍资料汇总
  9. PHP中长连接的实现
  10. 谱曲软件-MuseScore
  11. mysql数据迁移
  12. 操作 IoT 设备内嵌 SQLite
  13. apache下的IfModule里设置含义
  14. Jrebel 6.2.1破解
  15. 基于认证的代理平台搭建配置squid-20130730
  16. dubbox的provider端嵌套调用问题
  17. Keras官方中文文档:关于Keras模型
  18. DataTable某一列转换为分隔字符串
  19. ubuntu 服务restart失败
  20. PHP 写文件的例子

热门文章

  1. Modbus总线CRC16效验算法C语言
  2. C#中对string与string[]的初步操作
  3. 与你相遇好幸运,服务器node环境安装
  4. oracle11g RAC1执行脚本结果
  5. SQL Server Database 维护计划创建完整的备份策略
  6. 奇异值分解(SVD)和简单图像压缩
  7. list点击项高亮其他默认
  8. MIT 6.828 JOS学习笔记8. Exercise 1.4
  9. hibernate模糊查询
  10. 【BZOJ】3521: [Poi2014]Salad Bar