1.全量遍历键
keys pattern
支持pattern匹配,使用的是glob风格的通配符
*代表匹配任意字符
?匹配一个字符
[]代表匹配部分字符[1,3]代表匹配1,3,[1-10]代表匹配1到10的任意数字
\x用来做转义,匹配星号和问号需要进行转义
删除所有以video字符串开头的键,redis-cli keys video* | xargs redis-cli del
Redis是单线程架构,执行keys很可能造成阻塞,生产环境可以执行如下操作:
1.在一个不对外提供服务的Redis从节点上执行,这样不会阻塞客户端的请求,但是会影响主从复制
2.如果键值总数确实比较少,可执行
3.使用scan命令渐进式的遍历所有的键
2.渐进式遍历
scan采用渐进式遍历的方式来解决keys命令带来的阻塞问题,每次执行时间复杂度是O(1),需执行多次scan,每次执行只扫描一个字典中的一部分键,直到将字典中的所有键遍历完成
scan cursor [match pattern] [count number]
Redis 提供hscan sscan zscan防止执行hgetall smembers zrange 可能产生的阻塞问题
如果在scan的过程中有键的变化,那么在遍历可能会新增的键没有遍历到