前段时间去一家公司面试,面试官问到我对缓存了解多少,因为我是做B/S开发的,所以把知道的都说了。比如:Application、Cache、页面缓存、文件缓存。然后面试官说“不止这些,还有呢?”,我后来想了想说“以前在做PHP开发的时候有memcache,不知道.NET里面有没有?”。然后那面试官突然接过话来说:“对呀,有空自己看下。”。哈,然后我今天才有空看。
1、下载memcached,我下载的是memcached-win32-1.4.4-14,然后就是安装,安装过程如下:
A、在 C:\Program Files 建立一个 memcached 目录,将解压缩的文件拷贝到此目录
B、在命令窗口执行:"C:\Program Files\memcached\memcached.exe" -d install
C、在命令窗口执行:"C:\Program Files\memcached\memcached.exe" -d start
这样算是安装成功了,完了看下服务(直接命令里面:services.msc)里面有没有memcache,是否已启动。下载地址:http://www.jb51.net/softs/44843.html
2、下载Memcached Providers 1.2,解压缩。下载地址:http://memcachedproviders.codeplex.com/releases/view/10468
3、新建一项目,将第2步解压缩之后的文件夹里面的Enyim.Caching.dll和MemcachedProviders.dll添加到引用。
说明:这两个DLL都可以用来管理缓存,我测试了。
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using MemcachedProviders.Cache; using Enyim.Caching; using Enyim.Caching.Memcached; using System.Text; namespace test { public partial class Index : System.Web.UI.Page { //private static MemcachedClient client = new MemcachedClient("enyim.com/memcached"); protected void Page_Load(object sender, EventArgs e) { //DistCache.Add("test", "hello,memcache"); //Object result = DistCache.Get("test"); //Response.Write(result.ToString()); Enyim.Caching.MemcachedClient mc = new Enyim.Caching.MemcachedClient(); mc.Store(StoreMode.Add, "h", "HI"); mc.Append("h", this.StringToByte("很好", Encoding.UTF8)); //mc.Remove("h"); Response.Write(mc.Get("h")); } private Byte[] StringToByte(String s, Encoding encoding) { return encoding.GetBytes(s); } private String ByteToString(Byte[] b, Encoding encoding) { return encoding.GetString(b); } } }