1

我有由数千行组成的文件(每行包含 3 个字段,首先是 ak 长度字符串,然后是一个数字,第三个是另一个字符串)的形式:-

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 条记录常见的 ak 长度字符串)来存储表单的值:

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

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

4

1 回答 1

1

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

于 2015-05-28T17:43:57.603 回答