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
- skim、scan和browse的區別
- Redis 中使用 scan 替換 keysRedis
- Redis中的Scan命令踩坑記Redis
- BufferedReader和Scanner的用法和區別(建議多使用BufferedReader)
- Memcached和Redis的區別?Redis
- Linux中rmdir和rm命令的主要區別!Linux
- 【linux】free命令中cached和buffers的區別Linux
- Linux free 命令中cached 和 buffers 的區別Linux
- 深入理解Redis的scan命令Redis
- HTTP協議中URI和URL區別HTTP協議
- Redis的KEYS命令引起當機事件Redis事件
- source 和export 命令的區別Export
- linuxsu和sudo命令的區別Linux
- link和@import引入css 區別,不建議使用@importImportCSS
- Linux中less和more命令的區別有哪些?Linux
- Gossip協議和Grpc協議的區別Go協議RPC
- for in,Object.keys,for of 的區別Object
- HTTP協議中PUT和POST使用區別HTTP協議
- 好好耕耘redis和memcached的區別Redis
- 談談mysql和redis的區別MySqlRedis
- Linux 命令 su 和 sudo 的區別Linux
- subprocess中命令為引數序列和字串的區別字串
- Python教程分享:Redis和Memcache的區別?PythonRedis
- http協議中,“get”和“post”的區別是什麼HTTP協議
- JavaScript中for in 和for of的區別JavaScript
- Js中for in 和for of的區別JS
- mysql中!=和is not的區別MySql
- Python中is和==的區別Python
- JavaScript中==和===的區別JavaScript
- Linux中“>”和“>>”的區別Linux
- Python 中 is 和 == 的區別Python
- mysql中“ ‘ “和 “ ` “的區別MySql
- 非同步API中事件、命令和狀態區別非同步API事件
- Linux中程式和執行緒的區別與聯絡,建議收藏!Linux執行緒
- Object.keys() 與 for in 區別Object
- PHP 中的 -> 和 :: 的區別PHP
- HTTP協議類POST 和GET的區別HTTP協議