當咱們須要遍歷Redis全部key或者指定模式的key時,首先想到的是KEYS命令,可是若是redis數據很是大,而且key也很是多的狀況下,查詢的時候極可能會很慢,形成整個redis阻塞,那麼有什麼辦法解決呢?
固然有了,今天就簡單的介紹一下,如:scan和hscanredis
格式以下:服務器
SCAN cursor [MATCH pattern] [COUNT count] HSCAN key cursor [MATCH pattern] [COUNT count]
SCAN命令是一個基於遊標的迭代器, 這意味着命令每次被調用都須要使用上一次這個調用返回的遊標做爲該次調用的遊標參數,以此來延續以前的迭代過程, 當SCAN命令的遊標參數被設置爲 0 時, 服務器將開始一次新的迭代, 而當服務器向用戶返回值爲 0 的遊標時, 表示迭代已結束,HSCAN同SCAN命令相同。ide
1、 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" 2、鍵值對操做 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"