一、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"); }