How to store array of hashes in redis

后端 未结 2 799
遇见更好的自我
遇见更好的自我 2021-02-18 23:24

I want to store array of hashes in redis , what is best way to code it ?

相关标签:
2条回答
  • 2021-02-19 00:07

    The only way AFAIK is to de-reference them. Say you have an array of 2 hashes like: {foo: 'bar', baz: 'qux'}.

    You'd store them separately, and then create a SET that references them all:

    HMSET myarr:0 foo bar baz qux
    SADD myarr myarr:0
    HMSET myarr:1 foo bar baz qux
    SADD myarr myarr:1
    

    Then you can retrieve them all by querying the set: SMEMBERS myarr and then call HGETALL <key> on all the returned keys to rebuild your original array of hashes.

    I hope this makes sense. And if you find a smarter way I'd be happy to hear it.

    0 讨论(0)
  • 2021-02-19 00:26

    If you are using a language which supports to/from json conversion, you can convert your hash to json and append it in a list. You can do the following in Ruby:

    require 'rubygems'
    require 'redis'
    require 'json'
    require 'pp'
    
    redis = Redis.new(:host => '127.0.0.1', :port => 6379)
    
    h1 = { :k1 => 'v1', :k2 => 'v2' }
    redis.rpush('arr', h1.to_json)
    
    h2 = { :k3 => 'v3', :k4 => 'v4' }
    redis.rpush('arr', h2.to_json)
    
    hashes = redis.lrange('arr', 0, -1)
    hashes.map! { |x| JSON.parse(x) }
    pp hashes
    
    0 讨论(0)
提交回复
热议问题