1.查詢redis 數據庫有多少key可以使用 keys 或者scan
keys pattern 時間復雜度為O(n),會遍歷所有的key, 造成redis服務阻塞, 線上不可接受
2.scan curson match pattern count num
一次遍歷一個或多個桶,時間較少,不會造成阻塞
缺點:可能遍歷結果有重復數據
正常情況下,使用scan沒問題,如果正在rehash,則會造成重讀
比如現在有四個桶,讀了0,1,發生rehash時, 0會到4上,1是到5,造成重讀,
redis使用高位遞增遍歷,如下, 當02,遍歷完以后0426肯定是遍歷完的
但縮容有可能發成key重復
00 0
10 2
01 1
11 3
000 0
100 4
010 2
110 6
001 1
101 7
011 3
111 8