前段时间去一家公司面试,面试官问到我对缓存了解多少,因为我是做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都可以用来管理缓存,我测试了。

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.UI;
  6. using System.Web.UI.WebControls;
  7.  
  8. using MemcachedProviders.Cache;
  9. using Enyim.Caching;
  10. using Enyim.Caching.Memcached;
  11. using System.Text;
  12.  
  13. namespace test
  14. {
  15. public partial class Index : System.Web.UI.Page
  16. {
  17. //private static MemcachedClient client = new MemcachedClient("enyim.com/memcached");
  18.  
  19. protected void Page_Load(object sender, EventArgs e)
  20. {
  21. //DistCache.Add("test", "hello,memcache");
  22. //Object result = DistCache.Get("test");
  23. //Response.Write(result.ToString());
  24.  
  25. Enyim.Caching.MemcachedClient mc = new Enyim.Caching.MemcachedClient();
  26. mc.Store(StoreMode.Add, "h", "HI");
  27. mc.Append("h", this.StringToByte("很好", Encoding.UTF8));
  28. //mc.Remove("h");
  29. Response.Write(mc.Get("h"));
  30. }
  31.  
  32. private Byte[] StringToByte(String s, Encoding encoding)
  33. {
  34. return encoding.GetBytes(s);
  35. }
  36. private String ByteToString(Byte[] b, Encoding encoding)
  37. {
  38. return encoding.GetString(b);
  39. }
  40. }
  41. }

4、配置Web.config

  1. <?xml version="1.0"?>
  2. <configuration>
  3. <configSections>
  4. <!-- Memcached -->
  5. <section name="cacheProvider" type="MemcachedProviders.Cache.CacheProviderSection, MemcachedProviders" allowDefinition="MachineToApplication" restartOnExternalChanges="true"/>
  6. <sectionGroup name="enyim.com">
  7. <section name="memcached" type="Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching"/>
  8. </sectionGroup>
  9. </configSections>
  10.  
  11. <connectionStrings>
  12. <add name="ApplicationServices"
  13. connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"
  14. providerName="System.Data.SqlClient" />
  15. </connectionStrings>
  16.  
  17. <enyim.com>
  18. <memcached>
  19. <servers>
  20. <add address="127.0.0.1" port="11211"/>
  21. </servers>
  22. <socketPool minPoolSize="10" maxPoolSize="100" connectionTimeout="00:00:10" deadTimeout="00:02:00"/>
  23. </memcached>
  24. </enyim.com>
  25.  
  26. <cacheProvider defaultProvider="MemcachedCacheProvider">
  27. <providers>
  28. <add name="MemcachedCacheProvider" type="MemcachedProviders.Cache.MemcachedCacheProvider, MemcachedProviders" keySuffix="_WebApp_MemoryCached_" defaultExpireTime="2000"/>
  29. </providers>
  30. </cacheProvider>
  31.  
  32. <system.web>
  33. <compilation debug="true" targetFramework="4.0" />
  34. </system.web>
  35. </configuration>

5、新建个页面试试

  A、引用using MemcachedProviders.Cache;

  B、在Page_Load里面加入一下代码测试就行了

  1. DistCache.Add("test", "hello,memcache");
  2. Object result = DistCache.Get("test");
  3. Response.Write(result.ToString());

参考网址:

http://www.cnblogs.com/binfire/archive/2011/06/20/2085079.html

http://blog.csdn.net/zhoufoxcn/article/details/6282099

注意:memcached本身就带有负载均衡的功能,至于怎么实现的,不需要我们去管,你只需要在服务器上安装memcached,然后配置下就可以了,比如:

  1. <enyim.com>
  2. <memcached>
  3. <servers>
  4. <add address="192.168.1.17" port="11211"/>
  5. <add address="192.168.1.18" port="11211"/>
  6. </servers>
  7. <socketPool minPoolSize="10" maxPoolSize="100" connectionTimeout="00:00:10" deadTimeout="00:02:00"/>
  8. </memcached>
  9. </enyim.com>

.net 使用memcache做缓存的更多相关文章

  1. Redis和MemCache静态Map做缓存区别

    本地缓存和分布式缓存 本地缓存:使用自带的map或者guava实现的是本地缓存,最主要的特点是轻量以及快速,生命周期随着jvm的销毁而结束,并且在多实例的情况下,每个实例都需要各自保存一份缓存,缓存不 ...

  2. java使用Map做缓存你真的用对了吗?弱引用WeakHashMap了解一下

    目录 关于缓存我们应该考虑什么?-intsmaze WeakHashMap弱引用-intsmaze 线程安全问题-intsmaze Collections-intsmaze ThreadLocal-i ...

  3. spring+redis的集成,redis做缓存

    1.前言 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.我们都知道,在日常的应用中,数据库瓶颈是最容易出现的 ...

  4. django使用redis做缓存

    Django 使用 Redis 做缓存 django中应用redis:pip3 install django-redis - 配置 CACHES = { "default": { ...

  5. nginx添加proxy_cache模块做缓存服务器

    业务需求nginx对后端tomcat(静态文件)做缓存 减轻后端服务器的压力 # nginx-1.6.2.tar.gz  ngx_cache_purge-2.3.tar.gz #编译安装 ./conf ...

  6. 浏览器的Storage做缓存需要注意的地方

    使用浏览器的Storage来做缓存.如: window.sessionStorage.setItem("cache", $(data).stringify()) 需要注意以下几点: ...

  7. NHibernate中使用memcache二级缓存

    在NHibernate中使用memcache二级缓存 一.Windows下安装Memcache  1. 下载   http://jehiah.cz/projects/memcached-win32/  ...

  8. 使用ReTrofit做缓存(结合上拉加载和下拉刷新)

    1. noCache 不使用缓存,全部走网络 2. noStore 不使用缓存,也不存储缓存 3. onlyIfCached 只使用缓存 4. maxAge 设置最大失效时间,失效则不使用 需要服务器 ...

  9. 简单封装Redis做缓存

    基于Redis封装一个简单的Python缓存模块 0. Docker Redis安装 参考: Get Docker CE for CentOS Docker 安装 Redis 安装Docker时错误s ...

随机推荐

  1. input文本框和img验证码对齐问题

    左边放input,右边img验证码,然后一直不能对齐,如图: img老是比input高出一个头,然后调的头都大了还是不行,照例百度之, 给input和img都加一个 vertical-align:mi ...

  2. MMORPG大型游戏设计与开发(游戏服务器 游戏场景 概述 updated)

    我们在玩游戏的时候,我们进入游戏后第一眼往往都是看到游戏世界中的场景,当然除了个别例外,因为那些游戏将游戏场景隐藏了起来,如文字游戏中的地点一样.既然我们接触了游戏世界的核心,那么作为核心的场景又包括 ...

  3. 我的Github之旅(一)

    第一站:本地环境中的Github配置 1.参考链接 作为初学者,需要了解的有[本地环境中的github配置(基于mac)][1],以及git知识,这里推荐一个网站[猴子都能懂的Git入门][2],最后 ...

  4. HDU5492 Find a path[DP 方差]

    Find a path Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  5. USACO1.2Milking Cows

    题目描述 三个农民每天清晨5点起床,然后去牛棚给3头牛挤奶.第一个农民在300秒(从5点开始计时)给他的牛挤奶,一直到1000秒.第二个农民在700秒开始,在 1200秒结束.第三个农民在1500秒开 ...

  6. 第28章 行为型模式大PK

    27.1 策略模式 VS 命令模式 27.1.1 策略模式实现压缩算法 //行为型模式大PK——策略模式和命令模式 //实例:用策略模式实现压缩算法 #include <iostream> ...

  7. Linux常用命令学习

    1.ls命令 就是list的缩写,通过ls 命令不仅可以查看linux文件夹包含的文件,而且可以查看文件权限(包括目录.文件夹.文件权限)查看目录信息等等 常用参数搭配: ls -a 列出目录所有文 ...

  8. [No000032]程序员的年龄天花板

    程序员职业生涯中流行这这样一个定律:35岁定律,那35岁以上的老程序员都干吗去了呢?为了讨论程序员的职业寿命,我们先得给公司或者团队分分类.大概有这么三类: 外包型 项目型 产品型 咱们一一来说一下吧 ...

  9. java 22 - 15 死锁的问题

    同步的弊端:  A:效率低  B:容易产生死锁 死锁:  两个或两个以上的线程在争夺资源的过程中,发生的一种相互等待的现象. 举例: 中国人,美国人一起吃饭. 正常情况: 中国人:筷子两支  美国人: ...

  10. android ndk 无法找到 so 案例一例

    代码如下: public class JNIWrapWorkerThread{    static {        System.loadLibrary("libjni_base_fram ...