2010-07-10 3 views
1

Привет,Использование структуры данных списка Redis' или сериализованную рубиновый хэш для хранения данных

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

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

С уважением

Tobias

+0

I узнал о хэшах redis (> = 1.3.10), и они кажутся совершенными! – tbuehlmann

ответ

1

Использование кодированного объекта JSON является довольно хорошей идеей. Вы можете увидеть некоторые примеры в hurl - проверьте how the models are saved.

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

+0

Ссылка is 404ing :( –

+0

Редис хеш был способ пойти, просто отлично. Спасибо! – tbuehlmann

1

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

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"} 

Если вам нужно что-то более продвинутое, есть Ohm, который отображает классы Руби 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 

 Смежные вопросы

  • Нет связанных вопросов^_^