1. 程式人生 > >redis操作之叠代器(scan和hscan)講解

redis操作之叠代器(scan和hscan)講解

edi 服務器 cursor redis scan 模式 att 情況 叠代器

當我們需要遍歷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"             

redis操作之叠代器(scan和hscan)講解