.net 使用memcache做缓存
前段时间去一家公司面试,面试官问到我对缓存了解多少,因为我是做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做缓存的更多相关文章
- Redis和MemCache静态Map做缓存区别
本地缓存和分布式缓存 本地缓存:使用自带的map或者guava实现的是本地缓存,最主要的特点是轻量以及快速,生命周期随着jvm的销毁而结束,并且在多实例的情况下,每个实例都需要各自保存一份缓存,缓存不 ...
- java使用Map做缓存你真的用对了吗?弱引用WeakHashMap了解一下
目录 关于缓存我们应该考虑什么?-intsmaze WeakHashMap弱引用-intsmaze 线程安全问题-intsmaze Collections-intsmaze ThreadLocal-i ...
- spring+redis的集成,redis做缓存
1.前言 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.我们都知道,在日常的应用中,数据库瓶颈是最容易出现的 ...
- django使用redis做缓存
Django 使用 Redis 做缓存 django中应用redis:pip3 install django-redis - 配置 CACHES = { "default": { ...
- nginx添加proxy_cache模块做缓存服务器
业务需求nginx对后端tomcat(静态文件)做缓存 减轻后端服务器的压力 # nginx-1.6.2.tar.gz ngx_cache_purge-2.3.tar.gz #编译安装 ./conf ...
- 浏览器的Storage做缓存需要注意的地方
使用浏览器的Storage来做缓存.如: window.sessionStorage.setItem("cache", $(data).stringify()) 需要注意以下几点: ...
- NHibernate中使用memcache二级缓存
在NHibernate中使用memcache二级缓存 一.Windows下安装Memcache 1. 下载 http://jehiah.cz/projects/memcached-win32/ ...
- 使用ReTrofit做缓存(结合上拉加载和下拉刷新)
1. noCache 不使用缓存,全部走网络 2. noStore 不使用缓存,也不存储缓存 3. onlyIfCached 只使用缓存 4. maxAge 设置最大失效时间,失效则不使用 需要服务器 ...
- 简单封装Redis做缓存
基于Redis封装一个简单的Python缓存模块 0. Docker Redis安装 参考: Get Docker CE for CentOS Docker 安装 Redis 安装Docker时错误s ...
随机推荐
- C# 为私有方法添加单元测试(反射)
1: using System; 2: using System.Collections.Generic; 3: using System.Linq; 4: using System.Text; 5: ...
- monkeyrunner之环境搭建及实例(三)
Monkeyrunner工具提供了一个API,使用此API写出的程序可以在Android代码之外控制Android设备和模拟器. 一.Monkeyrunner简介 1.MOnkeyrunner相对Mo ...
- 理解 OpenStack + Ceph (5):OpenStack 与 Ceph 之间的集成 [OpenStack Integration with Ceph]
理解 OpenStack + Ceph 系列文章: (1)安装和部署 (2)Ceph RBD 接口和工具 (3)Ceph 物理和逻辑结构 (4)Ceph 的基础数据结构 (5)Ceph 与 OpenS ...
- css多栏自适应布局
css多栏自适应布局还是需要总结一下的,都是基本功. 一般使用position属性布局,或者用float属性布局,也可以使用display属性. 看资料说position适合首页布局,因为首页内容往往 ...
- css3 border-radius
前缀对应浏览器 前缀 浏览器 -webkit chrome和safari -moz firefox -ms IE -o opera border-radius: <style type=&quo ...
- 关于电磁场中的E.B.D.H的理解
电磁场理论中存在四个基本物理量,电场强度E,磁场强度H,电场通量密度D,磁场通量密度B. E:其中E和H最简单,电场中的电荷受到电场力的作用,单位电荷受的力称为电场强度,这种定义得到E的单位为N/C, ...
- 【温故而知新-Javascript】使用 Ajax
Ajax 是现代Web 应用程序开发的一项关键工具.它让你能向服务器异步发送和接收数据,然后用 Javascript 解析. Ajax 是 Asynchronous JavaScript and XM ...
- NOIP2000单词接龙[DFS]
题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合 ...
- 用Access作为后台数据库支撑,书写一个用C#写入记录的案例
具体的步骤: 1.创建并打开一个OleDbConnection对象 2.创建插入的SQL语句 3.创建一个OleDbCommand对象 4.使用OleDbCommand对象来插入数据 5.关闭OleD ...
- KSFramework配置表:扩展表格解析类型
解析和扩展表格 配置表示例 配置表模块在编译时,把Excel转化成TSV,并根据Excel的头部信息,生成对应的代码: 比如源码库中的Test.xlsx Excel文件,两个列头,Id和Value,其 ...