1. 問題來源
創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供南崗網(wǎng)站建設(shè)、南崗做網(wǎng)站、南崗網(wǎng)站設(shè)計、南崗網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、南崗企業(yè)網(wǎng)站模板建站服務(wù),10多年南崗做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
這個問題可能看起來很奇怪,但很多 redis 集群會有一個統(tǒng)一的入口,入口會作兼容 redis 命令的代理,一般出于新能考慮是禁止使用 keys 命令來獲取鍵值信息的,但是可以通過 scan 命令來代替 keys
2. 使用 keys 的方法
127.0.0.1:6379> KEYS * 1) "_kombu.binding.test_queue" 2) "a8e620b9-e52e-3498-8a1c-448f35783058" 3) "_kombu.binding.celery"
3. 使用 scan 的方法
127.0.0.1:6379> DBSIZE (integer) 3 127.0.0.1:6379> SCAN 0 MATCH * COUNT 3 1) "5" 2) 1) "a8e620b9-e52e-3498-8a1c-448f35783058" 2) "_kombu.binding.test_queue" 3) "_kombu.binding.celery"
簡單說明
SCAN 命令 (以及相關(guān)的 SSCAN/HSCAN/ZSCAN,分別用于 SET/HASH/ZSET) 用于增量式的遍歷一個集合中的元素。因為其增量特性 (每次使用只返回一小部分元素),所以在生產(chǎn)環(huán)境中可以用來替代 KEYS 或 SMEMBERS 命令 (KEYS 或 SMEMBERS 命令可能會因為返回的元素過多而阻塞 redis)
所以在生產(chǎn)環(huán)境中即便 redis 服務(wù)支持 keys 命令,也應(yīng)該用 scan 來代替
參考:
1. https://groups.google.com/forum/#!topic/redis-db/zZeI_PjHF_M
2. https://redis.io/commands/scan
總結(jié)
以上所述是小編給大家介紹的Redis 不使用 keys 命令獲取鍵值信息的相關(guān)知識,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會就及時回復(fù)大家的!