当前位置:  开发笔记 > 后端 > 正文

memcached是否有类似ORM的包装器

如何解决《memcached是否有类似ORM的包装器》经验,为你挑选了1个好方法。

我正在寻找一个ruby gem(或rails插件),它以与ActiveRecord抽象SQL细节相同的方式抽象memcached的细节.我不是在寻找有助于在memcached中缓存ActiveRecord模型的东西.我敢肯定有大约4215颗宝石可以帮助解决这个问题.

理想情况下,我希望能够做到这样的事情:

class Apple < MemcachedModel
# whatever else here
end

然后能够做的事情:

my_apple = Apple.find('some memcached key')

这将在memcached中查找此类的JSON表示并对其进行反序列化.我也许可以做以下事情:

my_apple.color = "red"

# persist changes back to memcached
my_apple.save 

# load any changes from memcached into local model
my_apple.update

似乎有人必须抓住这个痒,并沿着这些线创建一些东西,但每当我谷歌这样的宝石时,我只是不断出现有助于使用memcached缓存AR模型的东西.



1> Yehuda Katz..:

你可以看看我的moneta宝石,它是各种键值商店的ORM'ish.你可以在http://github.com/wycats/moneta/tree/master看到它

moneta背后的基本思想是所有KVS的行为应该与普通Ruby哈希的子集完全相同.我们支持:

#[]
#[]=
#delete
#fetch
#key?
#store
#update_key
#clear

storeupdate_key方法需要一个额外的选项哈希,你可以使用正是如此:

cache = Moneta::Memcache.new(:server => "localhost:11211", :namespace => "me")
cache.store("name", "wycats", :expires_in => 2)
cache.update_key("name", :expires_in => 10)

我们支持大量的KVS:

的BerkeleyDB

CouchDB的

DataMapper(表示DM支持的任何商店)

LMC

内存缓存

进程内存

MongoDB的

Redis的

东京内阁

东京暴君

S3

SDBM

使用XAttrs的文件

每个商店都支持到期,无论是原生(如在memcached中)还是使用模拟memcache风格到期的标准模块.API始终相同,并且存在共享规范,即运行所有适配器以确保合规性.

添加自己的适配器也很容易,这就是为什么存在这么多适配器的原因.

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有