我想要一个持久的哈希;一个充当哈希的对象,但它可以在程序运行之间持续存在。
理想情况下,它只会在内存中加载访问的值。
答案 0 :(得分:2)
由于持久性密钥/值存储是每个人的需求,因此会发生大量解决方案。
YAML可能是持久保存Ruby对象的最简单方法。
JSON也可以,但不会直接处理符号。
当然,MySQL和其他SQL数据库(如sqlite3)也解决了这个问题。通常,访问封装在ActiveRecord ORM library。中Ruby核心有一个Marshaling library。
答案 1 :(得分:1)
使用sdbm
require 'sdbm'
SDBM.open("/mypath/myfile.dbm") do |myMap|
[...]
myMap[key] = avalue
[...]
myvar = myMap[anotherKey]
[...]
end
创建文件:myfile.dbm.dir和myfile.dbm.pag
答案 2 :(得分:1)
我会考虑使用具有哈希数据类型的redis-rb。这不仅会在程序运行中保持哈希,而且会跨多台计算机。它在内存中非常快,你可以在<中运行它。 5分钟。
在IRB中(假设您已安装并正在运行redis-server
并已安装redis-rb:
require "redis"
redis = Redis.new
重要的操作是:
redis.hset(key, field, value)
和
redis.hget(key,field)