如何在Redis中进行模糊扫描?

时间:2017-08-29 06:31:38

标签: redis

尝试从Redis获取所有值。

关键是:

key: mission:step:{missionId}:{yyMMdd} field:{userId} value:{progress}

我想获得三列:mission_id - user_id - progress并将它们放到Hive / MySQLmission_id的值每天都不同。

如何实现这一目标?任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:0)

你可以,但这将是一个缓慢的操作。 Redis KEYS命令列出了正则表达式匹配的所有键。 但它是一个O(N)操作,因为它扫描redis中的每个键以使其与模式匹配。

答案 1 :(得分:0)

您可以在生产环境中使用比SCAN更安全的keys命令。

  

由于这些命令允许增量迭代,每次调用只返回少量元素,因此可以在生产中使用它们,而不会像KEYS或SMEMBERS这样的命令的缺点,这些命令可能会长时间阻塞服务器(甚至几秒钟)当被调用大量的键或元素时。

您可以使用SCAN 0 MATCH your-key-pattern进行循环查询,并且每个下一个查询的光标都在此时间的回复中,如果回复光标为0。

  

SCAN是基于游标的迭代器。这意味着在每次调用命令时,服务器都会返回一个更新的游标,用户需要在下一次调用中将其用作游标参数。

     

当游标设置为0时开始迭代,当服务器返回的游标为0时终止。

答案 2 :(得分:0)

你真正想要的是一个非常快的NoSQL商店。 Azure CosmosDB 是一个,其中< 15ms写入和< 10ms读取受SLA绑定并且您自己选择耐用性。

https://docs.microsoft.com/en-us/azure/cosmos-db/introduction

正则表达式查询示例:
https://docs.microsoft.com/en-us/azure/cosmos-db/documentdb-sql-query