memcached是否有类似ORM的包装器

Pet*_*son 6 ruby memcached

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

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

class Apple < MemcachedModel
# whatever else here
end
Run Code Online (Sandbox Code Playgroud)

然后能够做的事情:

my_apple = Apple.find('some memcached key')
Run Code Online (Sandbox Code Playgroud)

这将在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
Run Code Online (Sandbox Code Playgroud)

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

Yeh*_*atz 11

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

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

#[]
#[]=
#delete
#fetch
#key?
#store
#update_key
#clear
Run Code Online (Sandbox Code Playgroud)

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)
Run Code Online (Sandbox Code Playgroud)

我们支持大量的KVS:

  • 的BerkeleyDB
  • CouchDB的
  • DataMapper(表示DM支持的任何商店)
  • LMC
  • 内存缓存
  • 进程内存
  • MongoDB的
  • Redis的
  • 东京内阁
  • 东京暴君
  • S3
  • SDBM
  • 使用XAttrs的文件

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

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