1

问候,

我想在 redis db 中存储一些数据,但不知道应该走哪条路。数据相当于带有变量namestreet的地址number。它们将作为键存储在小写字母下name,不会有双拼。

现在,我应该将其保存为列表还是应该{:name => 'foo', :street => 'bar', :number => 'baz'}使用 JSON/Marshall 序列化哈希(例如)并简单地存储它?

问候

托拜厄斯

4

2 回答 2

1

使用编码的 json 对象是一个不错的主意。您可以在 hurl 中看到一些示例——查看模型是如何保存的

Redis 哈希也很好,尤其是当您需要对哈希值进行原子操作时。

于 2010-07-12T04:46:02.193 回答
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,它将 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
于 2010-08-26T03:11:13.143 回答