尝试从Redis获取所有值。
关键是:
key: mission:step:{missionId}:{yyMMdd} field:{userId} value:{progress}
我想获得三列:mission_id
- user_id
- progress
并将它们放到Hive
/ MySQL
。 mission_id
的值每天都不同。
如何实现这一目标?任何帮助表示赞赏。
答案 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