當我們需要遍歷Redis所有key或者指定模式的key時,首先想到的是KEYS命令,但是如果redis數據非常大,並且key也非常多的情況下,查詢的時候很可能會很慢,造成整個redis阻塞,那麼有什麼辦法解決呢?
當然有了,今天就簡單的介紹一下,如:scan和hscan
格式如下:
SCAN cursor [MATCH pattern] [COUNT count]
HSCAN key cursor [MATCH pattern] [COUNT count]
SCAN命令是一個基於遊標的迭代器, 這意味着命令每次被調用都需要使用上一次這個調用返回的遊標作爲該次調用的遊標參數,以此來延續之前的迭代過程, 當SCAN命令的遊標參數被設置爲 0 時, 服務器將開始一次新的迭代, 而當服務器向用戶返回值爲 0 的遊標時, 表示迭代已結束,HSCAN同SCAN命令相同。
一、 hash操作
1,查看一下hash有多少條記錄
127.0.0.1:6379[1]> hgetall pms:1
1) "stock"
2) "12"
3) "freeze"
4) "10"
5) "stock:1"
6) "11"
7) "stock:2"
8) "23"
9) "stock:freeze:1"
10) "111"
11) "stock:5"
12) "1212"
2,模糊查看pms:1下的鍵
127.0.0.1:6379[1]> hscan pms:1 0 match stock:* count 100
1) "0"
2) 1) "stock:1"
2) "11"
3) "stock:2"
4) "23"
5) "stock:freeze:1"
6) "111"
7) "stock:5"
8) "1212"
3,模糊查看pms:1下的鍵
127.0.0.1:6379[1]> hscan pms:1 0 match stock* count 100
1) "0"
2) 1) "stock"
2) "12"
3) "stock:1"
4) "11"
5) "stock:2"
6) "23"
7) "stock:freeze:1"
8) "111"
9) "stock:5"
10) "1212"
4,模糊查看pms:1下的鍵
127.0.0.1:6379[1]> hscan pms:1 0 match stock:freeze:* count 100
1) "0"
2) 1) "stock:freeze:1"
2) "111"
二、鍵值對操作
1,查看有多少個鍵
127.0.0.1:6379[1]> keys *
1) "pms:1"
2) "pms:freeze:21"
3) "pms:10"
4) "pms:11"
5) "pms:9"
6) "pms:4"
7) "name"
8) "pms:5"
9) "pms:8"
10) "pms:7"
11) "pms:2"
12) "go:123"
13) "pms:3"
14) "pms:6"
2,模糊查找pms:*的鍵
127.0.0.1:6379[1]> scan 0 match pms:* count 10
1) "3"
2) 1) "pms:1"
2) "pms:8"
3) "pms:freeze:21"
4) "pms:5"
5) "pms:11"
6) "pms:9"
7) "pms:4"
8) "pms:3"
9) "pms:6"
3,模糊查找pms:*的鍵,遊標從3開始
127.0.0.1:6379[1]> scan 3 match pms:* count 10
1) "0"
2) 1) "pms:10"
2) "pms:7"
3) "pms:2"