Redis扫描匹配大量key的性能?

标签 redis predis

找不到任何有关redis的信息scan match

这是否意味着如果我有 500,000 个键,它将一一迭代所有键并检查它们是否与模式匹配?或者它有其他一些巧妙的技巧来只提取相关键?

如果它实际上扫描了所有这些,它的性能是否明智?

谢谢

最佳答案

扫描基本上是阻塞的按键命令的替代。它将返回一个光标,您需要使用该光标再次扫描,然后该过程继续。重复也是可能的,因此您需要在应用程序逻辑中处理它们,这意味着即使您只有 100 万个 key 并且每次扫描扫描 10,000 个项目,它也可能会扫描超过 10 次。

所以这实际上是一种权衡,而不是使用keys,这是一个阻塞命令,但很快你可以使用scan,它实际上比keys命令慢,但在生产环境中不会阻塞,并且仍然可以实现你所需要的。

希望这有帮助

关于Redis扫描匹配大量key的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39273601/

相关文章:

redis - Redis-Java项目结构

java - Redisson新手(Redis java客户端)类型io.netty.util.concurrent.Future无法解析

session - Laravel 不在 Redis 中存储 session 数据

php - 将 'max number of client reached' redis 错误消息更改为 ''

node.js 和 redis : is a redis store accessible across node connections?

node.js - 在 Node 中保留聊天消息

php - php Redis::hscan使用通配符名称和条件检索所有哈希

redis - 如何通过 predis 刷新所有 redis 节点?

redis - 如何禁用 Redis RDB 和 AOF?

php - 如何在 Predis 中使用 SCAN 和 MATCH 选项