问候,
我想在 redis db 中存储一些数据,但不知道应该走哪条路。数据相当于带有变量name
和street
的地址number
。它们将作为键存储在小写字母下name
,不会有双拼。
现在,我应该将其保存为列表还是应该{:name => 'foo', :street => 'bar', :number => 'baz'}
使用 JSON/Marshall 序列化哈希(例如)并简单地存储它?
问候
托拜厄斯
使用编码的 json 对象是一个不错的主意。您可以在 hurl 中看到一些示例——查看模型是如何保存的。
Redis 哈希也很好,尤其是当您需要对哈希值进行原子操作时。
你也可以使用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,它将 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