一、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"); ???????}
Memcache在.Net中的使用
原文地址:https://www.cnblogs.com/wyy1234/p/9029639.html