您的位置:首页 > 理论基础 > 计算机网络

asp.net高性能之路:无缝切换HttpRuntime.Cache与Memcached,附代码

2011-12-01 10:09 357 查看

概述

之前网站一直使用asp.net自带的cache,也就是HttpRuntime.Cache。这个的优点是进程内cache,效率非常高,同时对于缓存的对象可以直接获得

引用,并进行修改,不需要再进行清空缓存。但是使用HttpRuntime.Cache,无法进行扩展,也无法使用web园等等。

方案

之前有看dudu写的关于northscale memcached的文章,觉得很不错,故进行了一下尝试。由于初次使用,出问题的时候要能随时切换回HttpRuntime.Cache,

故使用了策略模式,实现无缝切换缓存模式的功能。Memcached的封装类请在https://github.com/enyim/EnyimMemcached/downloads进行下载,我使用的是Northscale.Store.2.8

接口

View Code

public void ClearCacheByPattern(string pattern)
{

if(client!=null)
return;

object c = client.Get("globel_cacheitems");

if (c==null)
return;

List<string> cacheitems = (List<string>) c;

foreach (string cacheitem in cacheitems)

{

if (cacheitem.StartsWith(pattern))

{

client.Remove(cacheitem);

}

}
}


补充:感谢园友YLH对批量删除缓存的回复:

Memcached为了高性能而设计,功能少了很多。 如果内存不吃紧的话,批量删除缓存项,可以采用设置key分区,为分区加上版本号来解决。

要批量删除一个分区的缓存,只需要升级一下缓存分区的版本号即可。目前我们在项目中就是采用这种方案。

这个方案是目前批量删除缓存项的比较完美的方案了,多谢YLH!

如有什么问题,请在下面回复,大家一起讨论。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: