前段时间去一家公司面试,面试官问到我对缓存了解多少,因为我是做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);
}
}
}

4、配置Web.config

<?xml version="1.0"?>
<configuration>
<configSections>
<!-- Memcached -->
<section name="cacheProvider" type="MemcachedProviders.Cache.CacheProviderSection, MemcachedProviders" allowDefinition="MachineToApplication" restartOnExternalChanges="true"/>
<sectionGroup name="enyim.com">
<section name="memcached" type="Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching"/>
</sectionGroup>
</configSections> <connectionStrings>
<add name="ApplicationServices"
connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"
providerName="System.Data.SqlClient" />
</connectionStrings> <enyim.com>
<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> <cacheProvider defaultProvider="MemcachedCacheProvider">
<providers>
<add name="MemcachedCacheProvider" type="MemcachedProviders.Cache.MemcachedCacheProvider, MemcachedProviders" keySuffix="_WebApp_MemoryCached_" defaultExpireTime="2000"/>
</providers>
</cacheProvider> <system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
</configuration>

5、新建个页面试试

  A、引用using MemcachedProviders.Cache;

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

DistCache.Add("test", "hello,memcache");
Object result = DistCache.Get("test");
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,然后配置下就可以了,比如:

  <enyim.com>
<memcached>
<servers>
<add address="192.168.1.17" port="11211"/>
<add address="192.168.1.18" port="11211"/>
</servers>
<socketPool minPoolSize="10" maxPoolSize="100" connectionTimeout="00:00:10" deadTimeout="00:02:00"/>
</memcached>
</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. broadcom移植到openwrt总结

    评估及移植BCM5862x及BCM5301x到openwrt平台下: 一.首先得分清楚几个基本概念: 1.文件系统  文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固 ...

  2. Eclipse tooltip变黑的修正

  3. 【QCon笔记】Native 和 Web 融合

    #main img{width:100%;} 简介 理清 Native 和 Web 的亮点和痛点,借鉴对方亮点解决自身的痛点,并给出淘系 App 在这些方面的实践. Mobile Web 的协作能力底 ...

  4. linux下安装安装pcre-8.32 configure: error: You need a C++ compiler for C++ support

    linux下安装安装pcre-8.32./configure --prefix=/usr/local/pcre 出现以下错误configure: error: You need a C++ compi ...

  5. CGPoint、CGSize、CGRect and UIView

    首先要弄懂几个基本的概念. 一)三个结构体:CGPoint.CGSize.CGRect 1. CGPoint /* Points. */ struct CGPoint { CGFloat x; CGF ...

  6. java:读/写配置文件

    package jimmy; import java.io.*; import java.util.Properties; public class Program { public static v ...

  7. CUDA1-hello world

    电脑配置:windows7 sp1 64bit  + CUDA6.5 + GeForce GTX780 Ti 显卡中的GPU因为多核可以处理很多相同的操作,相比较来说cpu就像个健全的手,什么活都能干 ...

  8. 产品列表页分类筛选、排序的算法实现(PHP)

    一.简单的单条件查询 工作都是从简单的开始,先从最简单的单表查询开始,这个一般用在首页以及一些比较独立的页面,只需要查找几个符合条件的产品展示出来即可,可以使用分页或者不使用分页.下面这个是产品控制器 ...

  9. DOM 概况

    DOM(文档对象模型)是针对 HTML 和 XML 文档的一个API(应用程序编程接口).DOM 描绘了一个层次化的节点树,允许开发人员添加.移除和修改页面的某一部分. 层次节点 DOM可以将任何 H ...

  10. 理解JavaScript中的参数传递 - leetcode189. Rotate Array

    1.关于leetcode 这是第一篇关于leetcode的题解,就先扯点关于leetcode的话. 其实很早前就在博客园看到过leetcode一些题解,总以为跟一般OJ大同小异,直到最近点开了一篇博文 ...