将set存储为redis中的hash值

时间:2015-05-28 12:55:13

标签: data-structures redis redis-py

我的文件包含数千行(每行包含3个字段,第一个是k长度字符串,然后是数字,第三个是另一个字符串),形式为: -

k|1|r1
k|1|r2
k|2|r2
k1|1|r3

我使用redis-py加载它,使用: -

sadd('k:1', 'r1')
sadd('k:1', 'r2')
sadd('k:2', 'r2')
sadd('k1:1', 'r3')

形成类似

的映射
{
     "k:1"  : ("r1", "r2"),
     "k:2"  : ("r2"),
     "k1:1" : ("r3")
}

我打算通过删除k的重复信息来存储表单的值(这是前3条记录常用的k长度字符串):

{
     "k": {
         "1"  : ("r1", "r2"),
        "2"  : ("r2")
      }
     "k1": {
       "1" : ("r3")
     }
}

我的想法是将存储集的值存储在不同的密钥下,该密钥可以作为哈希中k的值。还有比这更好的方法吗?

1 个答案:

答案 0 :(得分:1)

将这些集存储在不同的密钥下将起作用,但是如果这些集是静态的,那么您不需要设置功能 - 相反,您可以保存自己的查找并将该集直接存储在地图中,例如:作为逗号分隔值(或任何适合您的数据的分隔符),如果您只有几个值,或者如果您有很多值,则作为gzip压缩分隔值(根据我的经验,如果字符串是足够大,然后g(un)zip的成本被降低的网络成本抵消。