Redis命令HMSET字段的最大數量限制是多少?如果我通過HMSET將100000個字段設置爲一個密鑰,如果將每個字段用作密鑰,會導致性能問題。Redis命令HMSET有字段限制嗎?
回答
它是相當大的,2^64-1在64位系統,和2^32 -1在32位系統, https://groups.google.com/d/msg/redis-db/eArHCH9kHKA/UFFRkp0iQ4UJ
1)中每一個的Redis數據庫鍵數:2^64-1位64位系統。 32位系統中的2^32-1。 2)每個散列中的散列字段數:在64位系統中的012 ^2^64-1。 32位系統中的2^32-1。
鑑於32位實例具有最大4GB的可尋址空間,因此 限制無法訪問。對於64位實例,給定2^64-1有多大,這個限制是不可達的。
因此,對於每一個實際的角度來看,考慮鍵和散列只有 受限於RAM的數量。
薩爾瓦託雷
根據Redis documentation,沒有這樣的限制。
其實你可以把一個哈希裏面的字段數量沒有實際的限制(除了可用內存等)
我覺得有沒有性能損失將數據保存在一個HASH
。但是,如果您有一個非常大的HASH
,撥打HGETALL
總是一個壞主意。因爲HGETALL
會返回HASH
的所有字段和值,並且在HASH
非常大時會長時間阻止Redis實例。
HASH
是否比鍵值存儲更好,很大程度上取決於您的場景。
我做了幾個快速測試此使用lua的客戶端。
我試圖用一個單一的hmset命令,個人hmset命令存儲10萬場,和流水線各個命令,並定時他們花了多長時間來完成:
hmset 100000個領域:3.164817
hmset各個字段: 9.564578
hmset管道:4.784714
爲1,000,000所花時間太長,但代碼是在這裏,如果你想鼓搗我沒有嘗試更大的值。 https://gist.github.com/kraftman/1f15dc75649f07ee044eccab5379a8e3
根據心目中的應用程序記住,你失去哈希的存儲效率,一旦你添加太多的字段(「太多」可以設置,見here更多信息。
謝謝你的測試,但是我的場景是一個關鍵字和10000個字段。 – Jason
我想我使用了錯誤的術語:我設置了一個關鍵字'newhash',包含100,000個字段,我將編輯我的答案。 –
- 1. Redis - hmset()in hash - 效率
- 2. 用LUA觸發Redis HMSET
- 3. 使用hiredis執行HMSET命令
- 4. Redis中的命令命令
- 5. Redis鏈命令
- 6. 限制shell命令
- 7. 限制sed命令
- 8. Servicestack.Redis酒吧/與其他嵌套Redis的子命令限制
- 9. hmset redis來自mysqlDB的結果
- 10. REDIS哈希計數和搜索HMSET
- 11. Redis HMSET文檔:'hash'是什麼意思?
- 12. Redis中的HSET和HMSET是否相同
- 13. 使用jedis hmset方法在redis中插入多個字段元素
- 14. python有數字限制嗎?
- 15. ImageMagick命令行字符數限制
- 16. CMD.EXE命令行字符串限制
- 17. Redis鏈接命令
- 18. 有沒有更新redis的命令?
- 19. 限制所有Linux命令的輸出
- 20. 限制SSH - 沒有命令的bash
- 21. Crm字段控制命令Javascript
- 22. Redis eval命令vs事務命令
- 23. Redis複合命令或命令管道
- 24. 有人可以解釋redis setbit命令嗎?
- 25. 命令限制時間
- 26. ZPL命令長度限制?
- 27. R中的限制命令?
- 28. LEFT JOIN命令,限制
- 29. Philips Hue命令限制
- 30. MongoDB的命令,並限制
好信息 – Jason