什么是Redis等同于TransactionDB的getRange?

时间:2016-08-30 07:35:07

标签: python redis jedis foundationdb

transactionDB python api说,

  

Database.get_range(开始,结束[,限制,反转,streaming_mode])

     

返回所有键k,使得begin< = k<结束及其相关值作为   KeyValue对象列表。请注意,将范围排除在范围之外。

     

此读取完全同步。

我想在Redis中使用相同的东西。我查看了lrange和zrange函数,但不认为它们是相似的。

2 个答案:

答案 0 :(得分:2)

TL; DR没有直接的等价物并扫描整个密钥空间总是很慢(呃) - 你应该避免它,除非你的意图是获得大部分/全部密钥。

有两个允许您扫描密钥空间的Redis命令 - 一个名为SCANother one不应该被提及,也不能用于除开发之外的任何内容。然而,与您所追求的不同,这些命令: 1.不要处理键的范围,而是处理类似于glob的模式 2.不要返回相关值,你必须专门阅读它

一般来说,你应该避免练习这样的阅读模式,除非你的意思是 - 在大多数情况下,你希望快速和便宜的反应,所以全扫描几乎总是不正确的方式,

答案 1 :(得分:0)

Sorted sets允许您通过range进行查询。如果您正在存储一个对象,您可以使用有序集来获取所需的对象ID,然后使用hget / hgetall从哈希中查找对象信息。