Сохранение HASH в Redis в приложении rails - PullRequest
27 голосов
/ 23 марта 2012

Я только начинаю с Redis с Rails, так что это может быть глупый вопрос.

Я пытаюсь сохранить хэш на сервере Redis, но когда я получаю его, это просто строка IE.*

Это, очевидно, неправильно, так как он возвращается в виде строки.

Я также пытался зациклить некоторые результаты и использовать hset, т.е.Я удалил ключ $ redis.del ('data'), чтобы убедиться, что проблема не в этом.

Надеюсь, вы можете посоветовать, Ли

Ответы [ 4 ]

55 голосов
/ 23 марта 2012

Я должен был прочитать документы Redis более тщательно.

Ответ:

IN
$redis.set 'data', hash.to_json

OUT
data = JSON.parse($redis.get("data"))
47 голосов
/ 11 января 2013

Redis Gem переназначит ваш хэш следующим образом:

$redis.mapped_hmset "test", { foo: "bar" }
$redis.hgetall "test" => {"foo"=>"bar"}
10 голосов
/ 03 сентября 2014

Чтобы сохранить хэш в redis.Вы должны передать ключ в качестве первого параметра, а затем следующие параметры должны быть ключами и значениями метода hmset.

$redis.hmset('user:007', :name, 'Antonio', :busy, 'maybe', :ping, 'pong')

Happy Coding.

0 голосов
/ 23 марта 2012

Когда вы используете $redis.set('data', hash), вы фактически сохраняете обычную строку Redis, даже если вы используете хеш-переменную (она может быть сериализована в строку Json, но я действительно не уверен в этом).

Попробуйте использовать $redis.hset('data', hash) (не зацикливая поля, как вы сделали).

Еще один момент: вы уверены, что полностью удалили предыдущий ключ? Вы пытались hset совершенно другой ключ, чтобы исключить возможность, что предыдущий строковый ключ все еще "там"?

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