Memcache在.Net中的使用

一、Memcache基本概念(socket服务器)

本质:是一个在内存上存储的hash表, key的最大值是255字符,最长过期时间为30天
特点:惰性删除,没有监控数据过期的机制,实现最基本的key-value存储, 只要MemCache重启了,数据就会消失
搭建集群:通过客户端驱动实现集群的配置,MemCache集群之间不会相互通信
客户端实现集群的原理:在memcache配置多台服务器的ip和port的列表,客户端对key进行hash处理得到hashCode,这个hashCode对机器个数取余,把数据存在余数对应的机器上,读取时算法一样(简单余数法,扩容时有弊端,用redis替代比较好)

基本概念:MemCache是项目的名称, MemCached是MemCache服务器端可以执行文件的名称

 

二、使用方法:

   第1步:
  (管理员身份)cd memcache所在的文件夹
  安装: Memcached -d install
  启动: Memcached -d start
  卸载: Memcached -d stop
      Memcached -d uninstall
   第2步:
  添加引用 
          
 
下边是一个Memche的帮助类(忘记是从哪copy的,未标出处见谅)
 1 public static class MemcheHelper
 2     {
 3         static readonly MemcachedClient mc=null;
 4         static MemcheHelper()
 5         {
 6             //最好放在配置文件中
 7             string[] serverlist = { "127.0.0.1:11211", "10.0.0.132:11211" };
 8 
 9             //初始化池
10             SockIOPool pool = SockIOPool.GetInstance();
11             pool.SetServers(serverlist);
12             pool.InitConnections = 3;
13             pool.MinConnections = 3;
14             pool.MaxConnections = 5;
15             pool.SocketConnectTimeout = 1000;
16             pool.SocketTimeout = 3000;
17             pool.MaintenanceSleep = 30;
18             pool.Failover = true;
19             pool.Nagle = false;
20             pool.Initialize();
21 
22             // 获得客户端实例
23             mc = new MemcachedClient();
24             mc.EnableCompression = false;
25         }
26         /// <summary>
27         /// 这是添加的方法
28         /// </summary>
29         /// <param name="key"></param>
30         /// <param name="value"></param>
31         /// <returns></returns>
32         public static bool Set(string key,object value)
33         {
34             return mc.Set(key, value);
35         }
36         public static bool Set(string key, object value,DateTime time)//指定过期时间,最大30天
37         {
38             return mc.Set(key, value,time);
39            
40         }
41         /// <summary>
42         /// 获取数据
43         /// </summary>
44         /// <param name="key"></param>
45         /// <returns></returns>
46         public static object Get(string key)
47         {
48             return mc.Get(key);
49         }
50 
51         /// <summary>
52         /// 删除数据
53         /// </summary>
54         /// <param name="key"></param>
55         /// <returns></returns>
56         public static bool Delete(string key)
57         {
58             if (mc.KeyExists(key))
59             {
60                return mc.Delete(key);
61             }
62             return false;
63         }
64     }

  代码中简单使用

 static void Main(string[] args)
        {
            //添加,保存一天
            MemcheHelper.Set("TestKey", "TestValue",DateTime.Now.AddDays(1));
            //取值
            MemcheHelper.Get("TestKey");
            //删除
            MemcheHelper.Delete("TestKey");
        }

猜你喜欢

转载自www.cnblogs.com/wyy1234/p/9029639.html