遍历键"/>
redis遍历键
redis 遍历键
1、全量遍历键
keys patten
keys * 遍历所有的键
-
*代表匹配任意字符
-
?代表匹配一个字符
-
【】代表匹配部分字符,例如【1,3】代表匹配1,3,【1-10】代表匹配1到10的任意数字
如果有键hello和hill,可以使用 keys h?ll 进行匹配*
由于redis是单线程的如果使用keys *遍历所有的键会造成redis阻塞,所以一般不建议在生产上使用这个命令。如果一定要遍历所有的键,要使用scan命令渐进式的遍历所有的键,可以有效防止阻塞。
2、渐进式遍历
scan命令能够有效的解决keys命令存在的问题。和keys命令执行是会遍历所有键不同,scan采用渐进式的遍历方式来解决keys命令可能带来的阻塞问题,每次scan的时间复杂度都是O(1),但要实现keys的功能,需要多次执行scan,Redis存储键值对实际使用的是hashtable的数据结构。scan的使用方法如下:
scan cursor [match pattern] [count number]
cursor是必须参数,实际上cursor是一个游标,第一次遍历从0开始,每次scan遍历完都会返回当前游标的值,直到游标值为0,表示遍历结束。
match pattern 是可选参数,他的作用是做模式的匹配,这点和keys 的模式匹配很像。
count number是可选参数,它的作用是表明每次要遍历的键个数,默认值是10,此参数可以适当增大。
除了scan以外,Redis还提供了面向哈希类型、集合类型、有序集合的扫描遍历命令,解决hgetall、smembers、zrange可能产生的阻塞问题。对应的命令分别为,hscan、sscan、zscan,它们的用法和scan类似。
更多推荐
redis遍历键
发布评论