這個頁面正在進行中,如今它只是你應該檢查的東西的列表,若是你有內存問題。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將自動將其轉換爲普通編碼,對於小的值,這個操做很是快,可是若是你更改了設置,以便爲更大的聚合類型使用特殊編碼的值,那麼建議運行一些基準測試來檢查轉換時間。優化
Redis用32位目標編譯,每一個鍵使用的內存少得多,因爲指針很小,可是這樣的實例將被限制爲最大內存使用量爲4GB。要編譯Redis,須要使用32位二進制代碼,RDB和AOF文件能夠兼容32位和64位實例(固然也能夠兼容小的和大的endian),所以你能夠從32位切換到64位,或者相反,沒有問題。編碼
Redis 2.2引入了新的位級和字節級操做,GETRANGE、SETRANGE、GETBIT 和 SETBIT。使用這些命令,你能夠將Redis字符串類型視爲隨機訪問數組,例如,若是你有一個應用程序,其中用戶由惟一的遞增整數標識,你可使用位圖來保存關於用戶性別的信息,爲女性設置位,爲男性清理位,或者反過來。對於1億用戶,這個數據在Redis實例中只須要12兆字節的RAM,你可使用GETRANGE和SETRANGE進行相同操做,以便爲每一個用戶存儲一個字節的信息,這只是一個例子,可是用這些新的基元在很是小的空間中模擬許多問題是可能的。指針