Как сделать постоянный хеш в Ruby? - PullRequest
2 голосов
/ 04 декабря 2010

Я бы хотел постоянный хеш; объект, который действует как хеш, но может сохраняться между запусками программы.

В идеале, он будет загружать в память только то значение, к которому осуществляется доступ.

Ответы [ 3 ]

2 голосов
/ 04 декабря 2010

Поскольку постоянное хранение ключей / значений является обязательным требованием, так как существует большое количество решений.

YAML , вероятно, самый простой способ сохранения объектов Ruby.

JSON также работает, но напрямую не обрабатывает символы.

MySQL и другие базы данных SQL, такие как sqlite3, также решают эту проблему, конечно. Обычно доступ инкапсулируется в библиотеке ActiveRecord ORM .

В ядре Ruby есть Marshaling библиотека .

1 голос
/ 04 декабря 2010

Я хотел бы рассмотреть возможность использования redis-rb , который имеет хэш-тип данных.Это сохранит ваш хэш не только при запуске программы, но и на нескольких компьютерах.Это очень быстро, в памяти, и вы можете запустить его в течение <5 минут. </p>

в IRB (при условии, что вы установили и используете redis-server и установили redis-rb:

require "redis"
redis = Redis.new

Важными операциями являются:

redis.hset(key, field, value)

и

redis.hget(key,field)
1 голос
/ 04 декабря 2010

Использование sdbm

require 'sdbm'

SDBM.open("/mypath/myfile.dbm") do |myMap|
    [...]

    myMap[key] = avalue

    [...]

    myvar = myMap[anotherKey]

    [...]
end

создать в файлы: myfile.dbm.dir и myfile.dbm.pag

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...