Redis 4.0.10 中文文檔(內存優化)

這個頁面正在進行中,如今它只是你應該檢查的東西的列表,若是你有內存問題。redis

小聚合數據類型的特殊編碼

因爲Redis 2.2,許多數據類型都通過了優化,以便在必定的大小下使用更少的空間。Hash,List,由整數組成的Set,和有序Set,當小於給定數量的元素時,而且達到最大的元素大小,以一種很是節省內存的方式進行編碼,使用的內存要少10倍(平均節省內存5倍)。數組

從用戶和API的角度來看,這是徹底透明的,因爲這是CPU/內存的權衡,所以可使用如下redis.conf指令調優特殊編碼類型的最大元素數量和最大元素大小。測試

hash-max-zipmap-entries 512 (hash-max-ziplist-entries for Redis >= 2.6)
hash-max-zipmap-value 64  (hash-max-ziplist-value for Redis >= 2.6)
list-max-ziplist-entries 512
list-max-ziplist-value 64
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
set-max-intset-entries 512

若是一個特殊編碼的值將溢出配置的最大大小,Redis將自動將其轉換爲普通編碼,對於小的值,這個操做很是快,可是若是你更改了設置,以便爲更大的聚合類型使用特殊編碼的值,那麼建議運行一些基準測試來檢查轉換時間。優化

使用32位實例

Redis用32位目標編譯,每一個鍵使用的內存少得多,因爲指針很小,可是這樣的實例將被限制爲最大內存使用量爲4GB。要編譯Redis,須要使用32位二進制代碼,RDB和AOF文件能夠兼容32位和64位實例(固然也能夠兼容小的和大的endian),所以你能夠從32位切換到64位,或者相反,沒有問題。編碼

位和字節級操做

Redis 2.2引入了新的位級和字節級操做,GETRANGESETRANGEGETBITSETBIT。使用這些命令,你能夠將Redis字符串類型視爲隨機訪問數組,例如,若是你有一個應用程序,其中用戶由惟一的遞增整數標識,你可使用位圖來保存關於用戶性別的信息,爲女性設置位,爲男性清理位,或者反過來。對於1億用戶,這個數據在Redis實例中只須要12兆字節的RAM,你可使用GETRANGESETRANGE進行相同操做,以便爲每一個用戶存儲一個字節的信息,這只是一個例子,可是用這些新的基元在很是小的空間中模擬許多問題是可能的。指針

相關文章
相關標籤/搜索