写点什么

在 ASP.NET 中使用 Memcached

  • 2007 年 7 月 16 日
  • 本文字数:947 字

    阅读完需:约 3 分钟

现在一些.NET 开发人员开始放弃 ASP.NET 内置的缓存机制,转而使用 Memcached——一种分布式的内存缓存系统,其最初是由 Danga Interactive 公司为 LiveJournal 网站而开发。

存的一个基础性问题就是如何处理过时数据。当运行在单独的 Web 服务器上,你可以很容易地清除一个已经确认被改变了的缓存。可惜,ASP.NET 没有一个很好的方法来支持多服务器。每个服务器上的缓存都对其他缓存的改变一无所知。

ASP.NET 允许通过基于文件系统和数据库表的触发器来作废一个缓存。然而,这也存在问题,比如数据库触发器需要使用昂贵的轮询,以及触发器本身冗长的编程。但是,我们还是有其他的选择的。

不像 ASP.NET 内置的缓存机制,Memcached 是一个分布式的缓存系统。任何 Web 服务器都能更新或删除一个缓存项,并且所有其他的服务器都能在下次访问这些缓存项的时候自动获取到更新的内容。这是通过把这些缓存项存储在一个或者多个缓存服务器上来实现的。每一个缓存项都根据它的关键字的哈希值来分配到一个服务器上。

表面看来,Memcached 针对 ASP.NET 的 API 就像和内置的 API 一样。这让开发人员很容易地转换到 Memcached 上,仅仅通过在代码中查找和替换即可实现。

然而仅仅只是让其运行起来还不够,如果要在大型 Web Farms(译者注:大型站点)正确地使用还需要注意一些问题。 Richard Jones 写到:

当我们添加很多节点后,get_multi 函数的有用性在降低——这可能是由于单独的页面,需要访问几乎所有的 Memcached 实例。我在某处读到 Facebook(译者注:现在很火的校园社交网站)把他们的 Memcached 集群进行分割以提高 get_multi 的性能(例如,所有用户的数据都放置在名为 mc 的子集节点上)。有人能告诉我这样做的效果吗?

一个被推荐的解决方案是不根据缓存项的关键字来生成哈希键值。这将允许开发人员能够让一个给定页面中需要的所有缓存项,尽量存放在同一个服务器上。可惜,基于数据保存的地方而不是基于缓存项自身的关键字来生成哈希键,很容易产生错误,需要仔细来实现(这个算法)。

你可以在 BSD 的许可协议下使用 Memcached 。针对 C#的客户端API ,以及Perl、Python、PHP、Java 和其他语言的宿主都需要单独安装。最后,这有一个 Win32 的移植版本,可以让 Memcached 运行在非 Linux 的机器上。

查看英文原文: Using memcached with ASP.NET

2007 年 7 月 16 日 23:035880
用户头像

发布了 254 篇内容, 共 45.6 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

全面理解 Flutter(万字长文,深度解析,整理了3家面试问题:美团+字节+腾讯

android 程序员 移动开发

关于 Flutter 是不是“大有可为”这件事,androidjetpack教程

android 移动开发

关于大厂Android面试必问的事件分发机制,应该没有比这篇讲的更好的了

android 程序员 移动开发

元宇宙,如何看待它就是下一代互联网(附下载)

CECBC

关于MVC_MVP_MVVM的一些错误认识,android面试流程

android 程序员 移动开发

写给即将正在找工作的Android攻城狮,移动客户端开发面经

android 程序员 移动开发

架构训练营第1期 毕业总结

高远

六年Android从迷茫到大牛的成长之路,不忘初心,方得始终

android 程序员 移动开发

毕业设计—电商秒杀系统

俊杰

架构实战营

尝试一下最新的OV框架

IT蜗壳-Tango

11月日更

写给Android开发者的混淆使用手册,程序员工作2年月薪12K

android 程序员 移动开发

架构训练营毕业总结

喻高咏        

架构训练营

关于拼多多被曝删除用户本机照片的一点想法,移动服务框架app下载安装

android 程序员 移动开发

关于程序员35岁的坎:年龄不是挡板,当你匹配了这个年纪该有的能力还有什么畏惧

android 程序员 移动开发

这本“算法宝典”讲得透彻,完全掌握后,我竟拿到字节跳动offer

程序员 算法 字节

内存泄漏以优化大全,2021非科班生的Android面试之路

android 程序员 移动开发

区块链上的房地产:区块链会颠覆房地产吗?

CECBC

再见!onActivityResult!你好,android开发电子书阅读器

android 程序员 移动开发

架构学习总结

俊杰

关于Android的渲染机制,大厂面试官最喜欢问的7个问题【建议收藏

android 程序员 移动开发

关于拼多多被曝删除用户本机照片的一点想法(1),android程序设计基础

android 程序员 移动开发

写给软件工程师的 30 条建议,9次Android面试经验总结

android 程序员 移动开发

几乎包含了市面上所有启动优化方案,学习路线+知识点梳理

android 程序员 移动开发

架构实战营-模块九-毕业设计

Cingk

关于使用 Android MVVM + LiveData 模式的一些建议,ffmpeg音视频同步

android 程序员 移动开发

再见!onActivityResult!你好(1),太现实了

android 程序员 移动开发

05 K8S之kubeadm介绍

穿过生命散发芬芳

k8s 11月日更

再见!杭州!再见,kotlin数组fold方法

android 程序员 移动开发

全面!2020华为Android岗面试真题(已解析含答案,android蓝牙开发框架

android 程序员 移动开发

写代码还是做管理?安卓开发者的困扰,一文全懂

android 程序员 移动开发

尝试一下最新的OV框架

IT蜗壳-Tango

11月日更

在ASP.NET中使用Memcached_.NET_Jonathan Allen_InfoQ精选文章