您如何获得流列表?

时间:2019-01-09 00:12:51

标签: redis

我需要获取数据库中所有流(键)的列表,但找不到该命令。

我已经尝试遍历所有键并检查它们的类型,但这太慢/太昂贵了。

我想做类似XSCAN的事情,并得到像["stream1", "stream2"]

这样的键的列表。

3 个答案:

答案 0 :(得分:2)

没有这样的命令。与无法获取其他数据结构的列表相同,例如列表,设置。

相反,您可以创建一个额外的SET来记录创建的流的键。这样您就可以扫描SET以获得流的列表。

答案 1 :(得分:1)

从6.0版开始,您可以使用TYPE选项要求SCAN仅返回与给定类型匹配的对象。

SCAN 0 TYPE stream

https://redis.io/commands/scan

答案 2 :(得分:0)

如果流名称中可以有前缀,例如:“ MyStream:1”,“ MyStream:2” 然后,您可以将常规扫描命令与匹配MyStream的模式一起使用:*

编辑: 为了解决有关OP的问题,不必使用前缀并按原样使用SCAN命令,请在注释中添加:

您可以通过使用redis提供的命名空间功能来避免使用前缀。您可以为流名称分配一个“数据库”(默认为0-15)。假设您将数据库5用于流,那么数据库5中的scan命令应仅返回其中的键。 redis.io/commands/select