Я хочу сохранить массив хэшей в redis, что лучший способ его кодировать?
Как сохранить массив хэшей в redis
Ответ 1
Единственный способ, которым AFAIK должен отменить их. Скажем, у вас есть массив из 2 хэшей вроде: {foo: 'bar', baz: 'qux'}
.
Вы сохранили их отдельно, а затем создадите SET, который ссылается на все:
HMSET myarr:0 foo bar baz qux
SADD myarr myarr:0
HMSET myarr:1 foo bar baz qux
SADD myarr myarr:1
Затем вы можете получить их все, запросив набор: SMEMBERS myarr
, а затем вызовите HGETALL <key>
для всех возвращаемых ключей для восстановления исходного массива хэшей.
Надеюсь, это имеет смысл. И если вы найдете более разумный способ, я был бы счастлив услышать это.
Ответ 2
Если вы используете язык, который поддерживает/json-преобразование, вы можете преобразовать свой хэш в json и добавить его в список. Вы можете сделать следующее в Ruby:
require 'rubygems'
require 'redis'
require 'json'
require 'pp'
redis = Redis.new(:host => '127.0.0.1', :port => 6379)
h1 = { :k1 => 'v1', :k2 => 'v2' }
redis.rpush('arr', h1.to_json)
h2 = { :k3 => 'v3', :k4 => 'v4' }
redis.rpush('arr', h2.to_json)
hashes = redis.lrange('arr', 0, -1)
hashes.map! { |x| JSON.parse(x) }
pp hashes