我的文件由数千行组成(每行包含 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/