data-structures - 在 Redis 中将集合存储为散列值

标签 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 的值。还有比这更好的方法吗?

最佳答案

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

关于data-structures - 在 Redis 中将集合存储为散列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30507206/

相关文章:

c - 结构中的语法 [c]

algorithm - 什么是桶或双桶数据结构?

c - edis 中的 BRPOP 非阻塞

python - redis-py 管道可以有多少个命令?

algorithm - "volume rental"多维调度器的数据结构和算法

c - "temp=*q"和 "temp->link=*q"之间的区别

magento - 什么会导致 redis 保留旧 key ?

php - 使用 phpredis 从 Redis 中的 key 存储中调用值

python - 哨兵自动发现master

python - redis-py 管道 hset 不保存