2010-12-04 34 views

回答

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

由于持久性密钥/值存储是各种各样的需求,因为它发生了大量的解决方案。

YAML可能是保持Ruby对象最简单的方法。

JSON的作品,但不直接处理符号。

MySQL和其他SQL数据库如sqlite3当然也解决了这个问题。通常,访问被封装在ActiveRecord ORM library之内。

Ruby核心有一个Marshaling library

+1

的问题不仅仅是为了编组对象,而是要有一些可以更快地访问的东西来编组完整的东西H。我知道它存在于Perl中,所以我期望它存在于Ruby中。 – 2010-12-04 01:09:52

1

我会考虑使用redis-rb,其中有一个哈希值的数据类型。这不仅会在程序运行中持久保存散列值,而且还会在多台机器上保存散列值。它在内存中速度非常快,您可以在5分钟内完成并运行<。

在IRB(假设你已经安装并运行redis-server并且已经安装了Redis的-RB:

require "redis" 
redis = Redis.new 

重要的操作是:

redis.hset(key, field, value) 

redis.hget(key,field)