赞
踩
- keys keys *一次性的把整个 redis 中所有的 key 都获取到.(这个操作比较危险.可能会一下子得到太多的 key, 阻塞 redis 服务器!)
- 通过渐进式遍历,就可以做到,既能够获取到所有的 key, 同时又不会卡死服务器~
- 不是一个命令,把所有的 key 都拿到.
而是每执行一次命令,只获取到其中的一小部分~~这样的话保证当前这一次操作不会太卡~~
要想得到所有的 key 就需要多次遍历了~~多次执行渐进式遍历命令(化整为零~)
以渐进式的⽅式进⾏键的遍历。
SCAN cursor [MATCH pattern] [COUNT count] [TYPE type]命令有效版本:2.8.0 之后时间复杂度:O(1)返回值:下⼀次 scan 的游标(cursor)以及本次得到的键。
redis 127.0.0.1:6379> scan 01) "17"2) 1) "key:12"2) "key:8"3) "key:4"4) "key:14"5) "key:16"6) "key:17"7) "key:15"8) "key:10"9) "key:3"10) "key:7"11) "key:1"redis 127.0.0.1:6379> scan 171) "0"2) 1) "key:5"2) "key:18"3) "key:0"4) "key:2"5) "key:19"6) "key:13"7) "key:6"8) "key:9"9) "key:11"
- count 这里的 数字,不是说每次遍历都得设置成一样~~
- 这里的渐进式遍历,在遍历过程中,不会在服务器这边存储任何的状态信息此处的遍历是随时可以终止的~~不会对服务器产生任何的副作用~~
渐进性遍历 scan 虽然解决了阻塞的问题,但如果在遍历期间键有所变化(增加、修改、删除),可能导致遍历时键的重复遍历或者遗漏,这点务必在实际开发中考虑。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。