redis 使用注意事项SCAN KEYS FLUSHALL
最近在排查生产环境响应慢的问题时,通过排查数据库、内存、网络等指标,都未发现异常。
在排查redis慢日志时,发现调用了API底层的Keys命令,导致生产环境redis命令操作都比较慢,延迟比较大。
因此,
生产环境redis是不允许使用keys ,flushall这些命令的。
如果要使用类似keys的场景,需要换成scan命令
注:
SCAN、SSCAN、HSCAN、ZSCAN 4 个命令,分别用于集合、哈希键及有序集等。
- SCAN:命令用于迭代当前数据库中的数据库键,除了可以遍历所有的 key 之外,还可以对指定的容器集合进行遍历。
- SSCAN:命令用于迭代set集合键中的元素。
- HSCAN:命令用于迭代哈希键中的键值对。
- ZSCAN:命令用于迭代zset有序集合中的元素(包括元素成员和元素分值)。
命令格式如下:
SCAN cursor [MATCH pattern] [COUNT count]
scan 游标 MATCH <返回和给定模式相匹配的元素> count 每次迭代所返回的元素数量 SCAN 命令是增量的循环,每次调用只会返回一小部分的元素。所以不会有 KEYS 命令的坑(key 的数量比较多,一次 KEYS 查询会 block 其他操作)。