阅读更多

21顶
0踩

编程语言

原创新闻 最新Rails缓存插件 cache-money

2008-12-12 14:00 by 见习记者 QuakeWang 评论(6) 有8265人浏览
在过去的几年中Twitter一直被视为Rails应用的代表作,在一段时间内还曾因为网站性能不佳,常被拿来作为"Rails无法扩展的"典型例子,但是现在Twitter的性能问题已经解决,它开始回馈一些解决方案给Rails社区了。

cache-money是Twitter最近贡献一个缓存插件,和常见的cache plugin不同,它提供的是write-through的缓存模式:在ActiveRecord对象更新的时候不是将缓存中的数据清除,而是直接将更新的内容写入到缓存中去。可以参考这篇文章 http://magicscalingsprinkles.wordpress.com/2008/11/24/write-through-cacheing-is-an-essential-part-of-a-healthy-scaling-strategy/
cache-money有许多很棒的特性:
1. 缓存自动清除机制(利用after_save/after_destroy)
2. 支持事务,由于rails的Active Record没有提供after_commit机制,目前常见的缓存插件在高并发下会出现缓存更新竞争冲突,而这个特性对于解决这个问题会很有帮助:
CACHE.transaction do
  CACHE.set(k, v)
  raise
end

3. 支持非主键的缓存,对于一些常用的非主键查找,比如根据用户名找用户,很有帮助:
class User
  index :name
end

User.find_by_name "javaeye"


更多的特性请参考这篇博客:http://magicscalingsprinkles.wordpress.com/2008/12/11/introducing-cache-money/
目前它处于RC版本,你可以从github上check out最新代码:
http://github.com/nkallen/cache-money/tree/master
21
0
评论 共 6 条 请登录后发表评论
6 楼 debbbbie 2011-03-29 10:51
好东东,学习了
5 楼 QuakeWang 2008-12-15 12:05
inosin 写道

RC版本,能用于产品环境吗?

它是从Twitter的生产环境剥离出来的插件,质量可以信任
另外你可以看一下它的源代码,得益于ruby语言的动态特性和rails的优良设计,和hibernate的2级缓存大段的代码相比,它非常容易阅读。
4 楼 inosin 2008-12-15 11:58
robbin 写道

这个缓存实现空前强大,接近于Hibernate的缓存功能了,强烈推荐!

RC版本,能用于产品环境吗?
3 楼 Raecoo 2008-12-13 09:45
看起来是个不错的改进
2 楼 kevin_liu 2008-12-12 17:22
这么好的工具~
1 楼 robbin 2008-12-12 14:48
这个缓存实现空前强大,接近于Hibernate的缓存功能了,强烈推荐!

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • Windows驱动开发WDM

    Windows驱动 这次重新阅读《windows驱动开发技术详解》(张帆,史彩成等编著),写博客记录一下,用以加深自己对驱动的理解。 驱动对象(DRIVER_OBJECT) 每个驱动程序会有唯一的驱动对象与之对应,并且这个驱动对象是在驱动加载的时候,被内核中的对象管理程序所创建的。 驱动对象用DRIVER_OBJECT来表示,内核对一个驱动只加载一个实例。对于DRIVER_OBJECT的说明,详见:http://msdn.microsoft.com/en-us/library/windows/h

  • windows设备驱动程序WDF开发(3)

    第8章 KMDF过滤器驱动程序 1. 管理设备的主功能为功能驱动FDO, 过滤器驱动位于FDO的上层或下层 WdfFdoInitSetFilter // 声明这个一个过滤驱动 2. 安装要修改FDO的inf文件 FilterSample实例 第9章 USB设备开发 1. USB2.0 最快480Mb/s, UBS3.0速度 5.0Gbps(500MB/s) 2. US...

  • WDM驱动程序

    <br />先说下关于WDM驱动程序一些原理。Windows2000后,微软加入了新的驱动程序模型,就是WDM。在WDM中,完成一个设备的操作,至少有两个设备共同完成。其中,一个是物理设备对象PDO,另一个是功能设备对象FDO。两者的关系是"附加"和"被附加"的关系。当PC插入某个设备时,总线驱动程序创建PDO,而设备的驱动程序创建FDO,并附加到PDO上。当FDO附加到PDO上时,PDO设备对象的子域AttachedDevice会记录FDO的位置,而FDO可以通过定义设备扩展来记录FDO下层设备,如PDO

  • WDM驱动程序入门(1)——HelloWDM

    WDM驱动程序是一种很新的东西,相信很多人都跟我一样,对它很感兴趣,但是又找不到学习的切入点。究其原因,还是因为WDM是一种非常“死板板”的程序,它一运行就是工作在系统的底层RING 0处,提供各种接口给应用程序调用。也正因为如此,它不像普通的应用程序一样,可以很快地上手——更多的时候,你是在阅读它的技术资料和各种接口信息,你还要非常地熟悉系统底层的工作原理,否则一个不小心,就“蓝屏”了,呵呵——

  • WDM驱动模型简介

    WDM驱动是在NT驱动模型上进化而来的,因此在本质上,WDM驱动并没有太大区别,只是在支持即插即用、电源管理等功能上做了很多扩展,再多说一句,WDF驱动模型(UMDF、KMDF)也是对WDM的封装和扩展。不要纠结自己开发驱动应该使用哪种模型,需求明确了,模型也就知道了,当然,对于从零编写一个新驱动来说,建议使用最新的WDF驱动模型。 在加载驱动时,NT驱动是被动加载的,而WDM是主动加载的。NT驱动只有被动安装后,才可以工作,WDM驱动会在设备被发现时,提示安装驱动。WDM驱动是分层的(其实NT驱动也.

  • WDM驱动程序介绍(引)

    http://zhidao.baidu.com/question/56715021.html WDM(Windows driver model)是微软为开发人员提供的一种编写运行在Windows平台下新硬件驱动程序的有效方法,此即所谓的Windows驱动程序模型。WDM提供了设备类(device classes),由此形成的源代码可以运行在各类Windows平台:Win XP/2000/Me/9...

  • 35、PCI设备驱动简介

    PCI(Peripheral Component Interconnect)总线标准是一种将系统外部设备连接起来的总线标准,速度可以达到133MB/s,它是PC中最重要的总线,其他总路线如ISA总线,USB总线等,都挂载在PCI总线上(通过桥接电路)。由Intel推出的一种局部总线,为32位数据地址总线,可以扩展为64位,支持突发读写,及多组外围设备。 在PCI系统中,Host/PCI称为北...

  • IO_Card 驱动

    公司别人写的。 /* IO_Card 驱动 1、系统找到DriverEntry()函数,初始化驱动程序。 2、系统调用AddDevice例程添加设备对象。 3、FDO收到IRP_MN_START_DEVICE IRP,将其设置完成例程(实际设置在下个IO堆栈)后传递给PDO。接着FDO等待同步。(实际上PDO完成资源分配) 4、当PDO完成IRP_MN_START_DEVICE IRP,设备堆

  • WDM系统入门基础篇

    WDM(Win32 Driver Model),即Win32驱动程序模型,是Microsoft力推的全新驱动程序模式,旨在通过提供一种灵活的方式来简化驱动程序的开发,在实现对新硬件支持的基础上减少并降低所必须开发的驱动程序的数量和复杂性。   除了通用的平台服务和扩展外,WDM还实现了一个模块化的、分层次类型的微型驱动程序结构(见图1)。类型驱动程序实现了支持通用总线、协议或设备类所需的功能性接口

  • WinCE CEDDK之IO访问函数

    CEDDK就是CE的DDK,其中封装了一些驱动开发会用到的函数。有时在开发驱动的时候用CEDDK中的函数会比较方便,使用的时候需要连接ceddk.dll,源代码为于WinCE的PUBLICCommonOakDriversCEDDK下面找到,其中大致可以分为几类,如下:  IO访问函数(ddk_io.c)  DMA操作函数(ddk_dma.c)  总线控制函数(ddk_bus.c)  地址映射函

  • PCI驱动程序--编译错误函数

    这段是PCI设备驱动的遍历信息函数,实现了遍历PCI的设备的具体配置信息#pragma PAGEDCODENTSTATUS InitMyPCI(IN PDEVICE_EXTENSION pdx,IN PCM_PARTIAL_RESOURCE_LIST list){ PDEVICE_OBJECT fdo = pdx->fdo; ULONG vector; KIRQL irql; KINTERRUPT_MODE mode; KAFFINITY affinity; BOOLEAN irqshare; BOOLEA

  • WDM驱动设计系统环境设置

    系统环境设置在编写USB设备驱动程序时,开发人员需要使用下列软件: 1、 Microsoft Visual C++。 2、 SDK(Software Development Kit,软件开发工具包),它是可选的。 3、 DDK(Driver Development Kit,驱动开发工具包)。 Visual C++是包含标准编译工具(编译程序和连接程序)的集成开发环境,通过正确设置,其可以用来建立内

  • windows WDM驱动程序设计

    回顾微软10年,驱动开发模型从VxD->WDM->WDF,开发工具从VtoolsDDDKWDK,在这个过程中,出现了一些优秀的开发工具,windriver,driver studio 3.2 等。其中windriver适合用来调试硬件,driver studio 3.2 采用C++开发框架,用户只要简单的写几个回调函数就可以完成驱动的编写,但是该软件又微软新的驱动模型WDF的冲击,不在

  • WDM驱动程序设计 (转)

    导读:   WDM驱动程序设计 (转)   WDM驱动程序设计 作者:汤琳 发布时间:2001/03/14 文章摘要:   现在windows98和Windows2000已经成了主流操作系统的主流,原先用来实现驱动程序的VxD技术随着Win95的淡出也慢慢地将退出历史舞台,在Windows98和Windows2000中设备驱动程序将根据Windows驱动程序模型(WDM)来设计。WDM

  • RING3″过主防读物理内存、读写IO端口

    最近拜读了王爽老师的《汇编语言》,学到了不少东西,终于能勉强逆点简单的小程序了。于是想到了Extreme神犇很早以前提出的这个点子:调用带正规签名的驱动来干坏事- - 鲁大师有正规数字签名,所以它的驱动加载时不会被主防报警,而鲁大师驱动里也没有验证调用者,所以可以利用~ 以前ASM完全不懂,用IDA只会F5,一看IoDispatchControl就苦逼了,所以一直搞不定(F5的话,System

  • 写一个最简单的WDM驱动

    虽然能在网上找到很多 所谓Hello World的WDM例子程序,但都含有太多功能性的东西,反而让初学者无所适从,我就有这个体会,现在把我自己的第一个Hello World程序放在这里。#include "ntifs.h"//驱动卸载例程,该例程也可以不定义。若不定义该例程驱动可以正常运行,但驱动不能动态卸载,只有重启机器才//能卸载驱动VOID Unload(IN PDRIVER_OBJECT

Global site tag (gtag.js) - Google Analytics