我正在寻找一个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模型的东西.
你可以看看我的moneta
宝石,它是各种键值商店的ORM'ish.你可以在http://github.com/wycats/moneta/tree/master看到它
moneta背后的基本思想是所有KVS的行为应该与普通Ruby哈希的子集完全相同.我们支持:
#[] #[]= #delete #fetch #key? #store #update_key #clear
该store
和update_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始终相同,并且存在共享规范,即运行所有适配器以确保合规性.
添加自己的适配器也很容易,这就是为什么存在这么多适配器的原因.