2010-12-04 50 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)