设为首页 收藏本站
查看: 974|回复: 0

[经验分享] .net 使用memcache做缓存

[复制链接]

尚未签到

发表于 2015-8-31 09:16:50 | 显示全部楼层 |阅读模式
  前段时间去一家公司面试,面试官问到我对缓存了解多少,因为我是做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.iyunv.com/softs/44843.html
  2、下载Memcached Providers 1.2,解压缩。下载地址:http://memcachedproviders.codeplex.com/releases/view/10468
  3、新建一项目,将第2步解压缩之后的文件夹里面的Enyim.Caching.dll和MemcachedProviders.dll添加到引用。
    说明:这两个DLL都可以用来管理缓存,我测试了。


DSC0000.gif DSC0001.gif


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);
}
}
}
View Code   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>
View Code   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.iyunv.com/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>
View Code

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-106636-1-1.html 上篇帖子: Linux 操作memcache命令行 下篇帖子: Django 缓存框架
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表