Redis中KEYS和SCAN命令的區別和建議
當我們需要遍歷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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Redis 中 Keys 與 Scan 的使用Redis
- INDEX FULL SCAN和INDEX FAST FULL SCAN的區別IndexAST
- Redis 中使用 scan 替換 keysRedis
- INDEX FULL SCAN和INDEX FAST FULL SCAN區別IndexAST
- index full scan 和 index FAST full scan 區別IndexAST
- Redis中的Scan命令踩坑記Redis
- Redis和Memcached的區別Redis
- Memcached和Redis的區別?Redis
- BufferedReader和Scanner的用法和區別(建議多使用BufferedReader)
- memcache和redis區別Redis
- HTTP協議中URI和URL區別HTTP協議
- source和.命令的區別
- 【轉】mysql 和 redis的區別MySqlRedis
- HTTP協議中PUT和POST使用區別HTTP協議
- 【linux】free命令中cached和buffers的區別Linux
- Linux free 命令中cached 和 buffers 的區別Linux
- Linux中rmdir和rm命令的主要區別!Linux
- su和sudo命令的區別
- source 和export 命令的區別Export
- 好好耕耘redis和memcached的區別Redis
- 談談mysql和redis的區別MySqlRedis
- Redis 和 Memcached 的區別詳解Redis
- SFTP和FTS協議的區別FTP協議
- 深入理解Redis的scan命令Redis
- link和@import引入css 區別,不建議使用@importImportCSS
- Redis的KEYS命令引起當機事件Redis事件
- Gossip協議和Grpc協議的區別Go協議RPC
- subprocess中命令為引數序列和字串的區別字串
- Linux中less和more命令的區別有哪些?Linux
- http協議中,“get”和“post”的區別是什麼HTTP協議
- for in,Object.keys,for of 的區別Object
- Linux su命令和sudo命令的區別Linux
- mysql中!=和is not的區別MySql
- JavaScript中for in 和for of的區別JavaScript
- mysql中“ ‘ “和 “ ` “的區別MySql
- Js中for in 和for of的區別JS
- Objective-C 中的協議(@protocol)和介面(@interface)的區別Object協議Protocol
- oracle index unique scan/index range scan和mysql range/const/ref/eq_ref的區別OracleIndexMySql