代码之家  ›  专栏  ›  技术社区  ›  tbuehlmann

使用redis的列表数据结构或序列化Ruby哈希来存储数据

  •  1
  • tbuehlmann  · 技术社区  · 15 年前

    问候语,

    我想在redis数据库中存储一些数据,不知道该怎么做。数据相当于一个带有变量的地址。 name , street number . 它们将存放在下箱下面 名称 作为关键,不会有双打。

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

    当做

    托拜厄斯

    2 回复  |  直到 13 年前
        1
  •  1
  •   j0k gauthamp    13 年前

    使用编码的JSON对象是一个不错的主意。你可以在Hull_ how the models are saved .

    redis散列也很好,特别是当您需要对散列值进行原子操作时。

        2
  •  1
  •   djanowski    15 年前

    你也可以用 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
    
    推荐文章