一.memcached环境搭建
1、下载后解压到D:memcached(下载地址:memcached-win64下载地址)
2、安装到windows服务,打开cmd命令行,进入memcached目录,执行memcached -d install命令,安装服务。
如果在没有安装过的情况下,出现"failed to install service or service already installed"错误,可能是cmd.exe需要用管理员身份运行。
3、启动服务,执行memcached -d start
4、参数介绍
-p 监听的端口
-l 连接的IP地址, 默认是本机
-d start 启动memcached服务
-d restart 重起memcached服务
-d stop|shutdown 关闭正在运行的memcached服务
-d install 安装memcached服务
-d uninstall 卸载memcached服务
-u 以的身份运行 (仅在以root运行的时候有效)
-m 最大内存使用,单位MB。默认64MB
-M 内存耗尽时返回错误,而不是删除项
-c 最大同时连接数,默认是1024
-f 块大小增长因子,默认是1.25
-n 最小分配空间,key+value+flags默认是48
-h 显示帮助
二. .net缓存实例
1.添加缓存项目
2.nuget中下载enyimmemcached包
3.web.config添加配置文件
<configuration> <configSections> <sectionGroup name="enyim.com"> <section name="memcached" type="Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching" /> </sectionGroup> </configSections> <enyim.com protocol="Binary"> <memcached> <servers> <add address="127.0.0.1" port="11211" /> </servers> <socketPool minPoolSize="10" maxPoolSize="100" connectionTimeout="00:00:10" deadTimeout="00:02:00" /> </memcached> </enyim.com> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> </startup> </configuration>
4.添加MemcachedHelper类
public class MemcachedHelper { MemcachedClient memClient = new MemcachedClient(); /// <summary> /// 设置缓存 /// </summary> /// <param name="key"></param> /// <param name="value"></param> /// <returns></returns> public bool Set(string key, object value) { object memValue; if (memClient.TryGet(key, out memValue)) { memClient.Remove(key); } return memClient.Store(Enyim.Caching.Memcached.StoreMode.Add, key, value); } /// <summary> /// 获取缓存 泛型方法 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="key"></param> /// <returns></returns> public T Get<T>(string key) where T : class { object result; if (memClient.TryGet(key, out result)) return result as T; return null; } /// <summary> /// 获取缓存 通用方法 /// </summary> /// <param name="key"></param> /// <returns></returns> public object Get(string key) { object result; if (memClient.TryGet(key, out result)) return result; return null; } }
5.Main方法中代码
class Program { static void Main(string[] args) { try { MemcachedHelper memHelper = new MemcachedHelper(); //缓存字符串 memHelper.Set("memStr", "Hello World!"); var a = memHelper.Get("memStr"); Console.WriteLine(a); //缓存类型 memHelper.Set("memClass", new MemClass() { Id = 1, Name = "class" }); var b = memHelper.Get<MemClass>("memClass"); Console.WriteLine(string.Format("Id:{0} Name:{1}", b.Id, b.Name)); Console.ReadLine(); } catch (Exception ex) { throw; } } } [Serializable]//注:缓存类型一定要加可序列化的特性,否则无法缓存成功 public class MemClass { public int Id { get; set; } public string Name { get; set; } }
至此一个简单的memcached项目顺利