Redis中KEYS和SCAN命令的區別和建議

chenfeng發表於2018-08-23

當我們需要遍歷Redis所有key或者指定模式的key時,首先想到的是KEYS命令,例如:keys *

相當於關係型資料庫裡的select *,因此在一個生產環境中的大Redis資料庫中使用這個命令可能會造成效能問題。

從Redis2.8版本以後官方給我們提供了一個更好的遍歷KEY的命令SCAN

語法為:

SCAN cursor [MATCH pattern] [COUNT count]


例如:

127.0.0.1:6379> scan 0 match *192.168*

1) "105"

2) 1) "192.168.0.220:6379:CommandCountByMinute"

   2) "192.168.0.121:6379:memory"

   3) "192.168.0.213:6379:CommandCount:1528190604"

   4) "192.168.0.221:6379:KeyCount:1528190601"

   5) "192.168.0.226:6379:KeyCount:1528190334"

   6) "192.168.0.129:6379:CommandCount:1528121363"

   7) "192.168.0.129:6379:KeyCount:1528121366"


SCAN 命令返回的每個元素都是一個資料庫鍵,該命令對資料庫的效能影響比較小,因此推薦在生產環境中使用。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2212688/,如需轉載,請註明出處,否則將追究法律責任。

相關文章