是否有Redis命令來獲取數據庫中的所有密鑰?我看到一些python-redis庫提取它們。但想知道是否可以從redis客戶端。Redis命令獲取所有可用密鑰?
回答
更新了Redis的2.8及以上
如前回答這個問題的評論中指出,KEYS
是一種具有潛在危險的命令,因爲您的Redis服務器將不可用做其他操作,同時它提供它。 KEYS
的另一個風險是它可以消耗(取決於您的密鑰空間的大小)很多RAM來準備響應緩衝區,因此可能會耗盡您的服務器的內存。
Redis 2.8版引入了SCAN系列更有禮貌的命令,可用於相同的目的。
CLI還提供了一個很好的方式,與它的工作:
$ redis-cli --scan --pattern '*'
看看以下Redis Cheat Sheet。 要獲得Redis的鍵的子集與Redis的-CLI我使用命令
KEYS "prefix:*"
它可以發生,使用Redis的CLI,您連接到遠程Redis的服務器,然後在命令:
KEYS *
沒有顯示任何東西,或更好的,它表明:
(empty list or set)
如果你是絕對確保您使用Redis的服務器是你的數據之一,那麼也許你的Redis-CL我沒有連接到Redis正確的數據庫實例。
正如在Redis文檔中提到的,新連接默認連接到db 0。
在我的情況下,KEYS
命令沒有檢索結果,因爲我的數據庫是1.爲了選擇你想要的數據庫,使用SELECT。
數據庫由一個整數標識。
SELECT 1
KEYS *
我發佈此信息,因爲沒有以前的答案解決我的問題。
是的,你可以通過使用得到所有鍵此
var redis = require('redis');
redisClient = redis.createClient(redis.port, redis.host);
redisClient.keys('*example*', function (err, keys) {
})
不完全是OP所要求的(redis-cli),但謝謝爲了指出這一點。 – Herick 2016-08-11 17:51:36
- >獲取從Redis的-CLI所有鍵
-redis 127.0.0.1:6379> keys *
- >獲取的模式列表
-redis 127.0.0.1:6379> keys d??
這將產生以'd'開始並具有三個字符的鍵。
-redis 127.0.0.1:6379> keys *t*
這港島線獲得關鍵
用火柴 'T' 鍵字符 - >通過
-redis-cli keys * |wc -l
計數的命令行鍵 - >或者你可以使用dbsize
-redis-cli dbsize
剛剛複製答案並嘗試。它給了「未知命令」鍵「」。 「鑰匙」不是命令,「鑰匙」是。請將'key * t *'更正爲'keys * t *'。 – 2016-11-02 14:15:17
感謝兄弟的信息。這是我的錯誤。當前我在mobile.i將改變這個命令eairlier。 – denny 2016-11-02 16:14:51
SCAN不需要客戶端將所有密鑰加載到像KEYS那樣的內存中。 SCAN爲您提供了一個可以使用的迭代器。我的redis中有一個1B記錄,我無法獲得足夠的內存來一次返回所有的密鑰。
這裏是一個Python代碼片段獲得從商店所有匹配模式鍵和刪除:
import redis
r = redis.StrictRedis(host='localhost', port=6379, db=0)
for key in r.scan_iter("key_pattern*"):
print key
redis-cli -h <host> -p <port> keys *
其中*是模式列出所有鍵
我不得不引用這位明星,如下:''redis-cli -h
- 1. 獲取所有redis數據庫中的所有密鑰和值?
- 2. Redis命令獲取pub/sub的所有可用頻道?
- 3. 如何使用crediscache獲取所有redis密鑰
- 4. 使用redis獲取一系列密鑰?
- 5. Redis從值中獲取密鑰
- 6. 獲取play.api.libs.json.JsValue的所有密鑰
- 7. Sharepoint SiteUserInfoList獲取所有密鑰和值
- 8. Python,gae,ndb - 獲取所有密鑰
- 9. Redis:是否可以通過密鑰獲取Set的一個值?
- 10. 無法獲取Windows ProductId密鑰,但可以獲取ProductName密鑰
- 11. 獲取出現在多個redis排序集上的所有密鑰
- 12. 獲取JCE KeyGenerators的所有可能的密鑰大小
- 13. Prestodb map(varchar,varchar):如何獲取所有可能的密鑰?
- 14. 我使用什麼命令獲取Redis中所有列表的列表?
- 15. 使用redis中的密鑰
- 16. 是否有任何命令傳遞密鑰列表並獲取Redis中的哈希列表?
- 17. 如何獲取所有可用shell命令的列表
- 18. 如何使用redis-rb gem獲取基於wildchar redis密鑰的集合?
- 19. 我在哪裏可以獲得可用命令和密鑰的列表?
- 20. 使用bash命令配置密鑰
- 21. 使用JQ獲取所有唯一的JSON密鑰名稱
- 22. 如何獲得列表中所有密鑰的密鑰列表?
- 23. Java:從編碼密鑰獲取密鑰
- 24. redis中有沒有可能對密鑰類型進行分類?
- 25. 獲取密鑰vue.js
- 26. flushdb不清除redis中的所有密鑰?
- 27. 如何保留Redis中的所有密鑰
- 28. Redis:如何刪除所有超過3個月的密鑰
- 29. 獲取上次訪問給定Redis密鑰的時間
- 30. 的多模式獲取密鑰在Redis的
CLI使用示例:' redis-cli keys「*」' – 2016-11-28 10:11:26
請檢查Itamar Haber對2.8及更高版本的另一個答案,以使用SCAN來代替https://stackoverflow.com/questions/5252099/redis-command-to-get-all-available-keys/ 23877883#23877883 – enator 2017-12-25 07:48:41