如何在Ruby中创建持久化哈希?

时间:2010-12-04 00:58:21

标签: ruby

我想要一个持久的哈希;一个充当哈希的对象,但它可以在程序运行之间持续存在。

理想情况下,它只会在内存中加载访问的值。

3 个答案:

答案 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)