最佳化Redis記憶體的9個要點,redis要點

來源:互聯網
上載者:User

最佳化Redis記憶體的9個要點,redis要點
最佳化Redis記憶體的9個要點

 

1.注意在redis.conf中的小彙總資料類型的特殊編碼設定:

 

hash-max-zipmap-entries 64 (hash-max-ziplist-entries for Redis >= 2.6)
hash-max-zipmap-value 512  (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

 

2.使用32位執行個體將記憶體受限在4G內,不過他們的RDB和AOF檔案是相容在32位和64位下去切換使用的。
3。使用bit位層級操作和byte位元組層級操作來減少不必要的記憶體使用量


bit位層級操作:GETRANGE, SETRANGE, GETBIT and SETBIT
byte位元組層級操作:GETRANGE and SETRANGE


4.儘可能地使用hashes雜湊,因為小Hashes會被編碼成一個非常小的空間。
5.使用雜湊來在Redis的頂部在普通key-value儲存上來抽象記憶體使用量效率
6.關於記憶體配置:


如果maxmemory沒有設定的Redis會繼續分配記憶體,因為它認為合適的,因此它可以(逐漸)吃了你的全部可用記憶體。因此,通常建議配置一些限制。您可能還需要設定maxmemory策略,以noeviction(這不是在一些舊版本的Redis的預設值)。

這使得Redis的返回記憶體不足的錯誤寫命令,如果當它到達了極限 - 這反過來可能會導致應用程式錯誤,但不會導致因為記憶體饑餓而整機死亡。

另外redis 的6種到期策略redis 中的預設的到期策略是volatile-lru 。設定方式
  config set maxmemory-policy volatile-lru
  maxmemory-policy 六種方式
  volatile-lru:只對設定了到期時間的key進行LRU(預設值)
  allkeys-lru : 是從所有key裡 刪除 不經常使用的key
  volatile-random:隨機刪除即將到期key
  allkeys-random:隨機刪除
  volatile-ttl : 刪除即將到期的
  noeviction : 永不到期,返回錯誤
  maxmemory-samples 3 是說每次進行淘汰的時候 會隨機抽取3個key 從裡面淘汰最不經常使用的(預設選項)

 7. 在存到Redis之前先把你的資料壓縮下

 

8.盡量使用短的鍵(Keys)

 

9.使用Hashes值儲存而不帶額外的資料元 參考:

http://redis.io/topics/memory-optimization
http://baike.baidu.com/link?url=eb4_JlCybpp1AuRHHBd8GmZdftrAUa-FSc_Y6hFujHejnGb_AHLxteQRacXonNYoaJmbigEyb3yBe_z67gzI9a 

http://labs.octivi.com/how-we-cut-down-memory-usage-by-82/

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.