Использование структуры данных списка redis или сериализованного хэша ruby ​​для хранения данных - PullRequest
1 голос
/ 10 июля 2010

Привет,

Я хочу сохранить некоторые данные в базе данных Redis и не знаю, куда мне идти. Данные эквивалентны чему-то вроде адреса с переменными name, street и number. Они будут храниться в нижнем регистре name как ключ, дублетов не будет.

Теперь я должен сохранить его в виде списка или сериализовать хэш (например, {:name => 'foo', :street => 'bar', :number => 'baz'}) с помощью JSON / Marshall и просто сохранить его?

Привет

Tobias

Ответы [ 2 ]

1 голос
/ 26 августа 2010

Также вы можете использовать что-то вроде Гнездо , чтобы помочь вам высушить ваши ключи:

addresses = Nest.new("Address", Redis.new)

this_address = addresses[1]
# => "Address:1"

this_address.hset(:name, "foo")
this_address.hset(:street, "bar")

this_address.hgetall
# => {"name" => "foo", "street" => "bar"}

Если вам нужно что-то более продвинутое, есть Ом , которыйсопоставляет классы Ruby с Redis:

class Address < Ohm::Model
  attribute :name
  attribute :street
  attribute :number
end

# Create
Address.create(:name => "foo", :street => "bar")

# Find by ID
Address[1]

# Find all addresses with name "foo"
class Address < Ohm::Model
  attribute :name
  attribute :street
  attribute :number

  index :name
end

Address.find(:name => "foo")
# => Array-like with all the Address objects
1 голос
/ 12 июля 2010

Использование закодированного объекта json - довольно хорошая идея. Вы можете увидеть некоторые примеры в Hurl - посмотрите , как сохраняются модели .

Хэши Redis тоже хороши, особенно если вам нужны атомарные операции со значениями хэшей.

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