redis之Scan

scan 相比
keys 具有有如下特色:
一、複雜度雖然也是 O(n),可是它是經過遊標分步進行的,不會阻塞線程;
二、提供 limit 參數,能夠控制每次返回結果的最大條數,limit 只是一個 hint,返回的
結果可多可少;
三、同 keys 同樣,它也提供模式匹配功能;
四、服務器不須要爲遊標保存狀態,遊標的惟一狀態就是 scan 返回給客戶端的遊標整數;
五、返回的結果可能會有重複,須要客戶端去重複,這點很是重要;
六、遍歷的過程當中若是有數據修改,改動後的數據能不能遍歷到是不肯定的;
七、單次返回的結果是空的並不意味着遍歷結束,而要看返回的遊標值是否爲零html

 

scan 參數提供了三個參數,第一個是 cursor 整數值,第二個是 key 的正則模式,第三
個是遍歷的 limit hint。第一次遍歷時,cursor 值爲 0,而後將返回結果中第一個整數值做爲
下一次遍歷的 cursor。一直遍歷到返回的 cursor 值爲 0 時結束。
127.0.0.1:6379> scan 0 match key99* count 1000
1) "13976"
2) 1) "key9911"
2) "key9974"
3) "key9994"
4) "key9910"
5) "key9907"
6) "key9989"
7) "key9971"
8) "key99"
9) "key9966"
10) "key992"
11) "key9903"
12) "key9905"
127.0.0.1:6379> scan 13976 match key99* count 1000
1) "1996"
2) 1) "key9982"
2) "key9997"
3) "key9963"
4) "key996"
5) "key9912"
6) "key9999"
7) "key9921"
8) "key994"
9) "key9956"
10) "key9919"
127.0.0.1:6379> scan 1996 match key99* count 1000
1) "12594"
2) 1) "key9939"
2) "key9941"
3) "key9967"
4) "key9938"
5) "key9906"
6) "key999"
7) "key9909"
8) "key9933"
9) "key9992"
......
127.0.0.1:6379> scan 11687 match key99* count 1000
1) "0"
2) 1) "key9969"
2) "key998"
3) "key9986"
4) "key9968"
5) "key9965"
6) "key9990"
7) "key9915"
8) "key9928"
9) "key9908"
10) "key9929"
11) "key9944"服務器

原文出處:https://www.cnblogs.com/wuwuyong/p/11756207.html線程

相關文章
相關標籤/搜索