阅读目录

1.MemCached是什么?

2.Window中MemCached安装

3.MemCached命令

4.简单示例

 

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

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

  .NET中MemCached使用介绍

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

Window中MemCached安装

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

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

下载完成后

1、打开SetupFile安装文件夹。

     .NET中MemCached使用介绍

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

  .NET中MemCached使用介绍 

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

.NET中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[] { 1 });
            //初始化时创建连接数
            pool.InitConnections = 3;
            //最小连接数
            pool.MinConnections = 3;
            //最大连接数
            pool.MaxConnections = 5;
            //连接的最大空闲时间,下面设置为6个小时(单位为ms),超过这个设置时间,连接会被释放
            pool.MaxIdle = 1000 * 60 * 60 * 6;
            //socket连接的超时时间,为0表示永不超时,即一直保持连接状态
            pool.SocketConnectTimeout = 0;
            //通讯的超时时间,下面设置为3秒,.net版本没有实现
            pool.SocketTimeout = 1000 * 3;
            //维护线程的间隔激活时间,下面设置为30秒(单位s),设置为0时表示不启用维护线程
            pool.MaintenanceSleep = 30;
            //设置SocketIO池的故障标志
            pool.Failover = true;
            //是否对TCP/IP通讯使用nalgle算法,.net版本没有实现
            pool.Nagle = false;
            //socket单次任务的最大时间(单位ms),超过这个时间socket会被强行中断,当前任务失败
            pool.MaxBusy = 1000 * 10;
            pool.Initialize();
            cache = new MemcachedClient();
            //是否启用压缩数据:如果启用了压缩,数据压缩长于门槛的数据将被储存在压缩的形式
            cache.EnableCompression = false;
        }
}
View Code

相关文章: