天天看點

如何用分布式緩存服務實作Redis記憶體優化

Redis是一種支援Key-Value等多種資料結構的存儲系統,其資料特性是“ALL IN MEMORY”,是以優化記憶體十分重要。在對Redis進行記憶體優化時,先要掌握Redis記憶體存儲的特性比如字元串,壓縮編碼,整數集合等,再根據資料規模和所用指令需求去調整,進而達到空間和效率的最佳平衡。

但随着資料大幅增長,開發人員需要面對重新優化記憶體所帶來開發和資料遷移的雙重成本也越來越高。Redis所有的資料都在記憶體中,那麼,我們是否可以通過簡便高效的方式去實作Redis記憶體優化呢?

答案當然是可以的。分布式緩存服務DCS是相容Redis的記憶體資料庫服務,基于雙機熱備的高可用架構,提供單機、主從、叢集等豐富類型的緩存類型,滿足使用者高讀寫性能及快速資料通路的業務訴求。如何使用分布式緩存服務DCS實作Redis的記憶體優化呢?讓我們一起來看看。

操作步驟:

1、登入管理控制台。在管理控制台左上角單擊圖示,選擇區域和項目。

2、單擊頁面上方的“服務清單”,選擇“資料庫 > 分布式緩存服務”,進入分布式緩服務資訊頁面。

3、單擊左側菜單欄的“緩存管理”。

4、在“緩存管理”頁面,單擊緩存執行個體的名稱。

5、單擊“配置參數”頁簽進入配置界面。

6、單擊“修改”。

7、根據需要修改相關參數。

各參數的詳細介紹見表1,一般情況下,按照系統預設值設定參數即可。

為了確定分布式緩存服務DCS發揮出最優性能,使用者可以根據自己的業務情況對Redis執行個體的運作參數進行調整。以下為Redis執行個體配置參數說明:

參數名 參數解釋 取值範圍 預設值
timeout 用戶端與服務端連接配接空閑逾時斷開時間,參數設為0表示連接配接永不斷開。 0~7200,機關:秒。
maxmemory-policy

記憶體使用達到上限時對緩存資料管理政策。

參數說明請參考https://redis.io/topics/lru-cache。

volatile-lru

allkeys-lru

volatile-random

allkeys-random

volatile-ttl

noeviction

noeviction
hash-max-ziplist-entries 當hash表中記錄數少于參數值,使用ziplist編碼格式,節約記憶體。 1~10000 512
hash-max-ziplist-value 當hash表中各字段長度的最大值小于參數值時,使用ziplist編碼格式,節約記憶體。 1~10000 64
list-max-ziplist-entries 當清單中記錄數少于參數值,使用ziplist編碼格式,節約記憶體。 1~10000 512
list-max-ziplist-value 當清單中各字段長度的最大值小于參數值時,使用ziplist編碼格式,節約記憶體。 1~10000 64
set-max-intset-entries 當一個集合僅包含字元串且整形元素數量少于參數值時,使用intset編碼格式,節約記憶體。 1~10000 512
zset-max-ziplist-entries 當有序集合中記錄數少于參數值,使用ziplist編碼格式,節約記憶體。 1~10000 128
zset-max-ziplist-value 當有序集合中各字段長度的最大值小于參數值時,使用ziplist編碼格式,節約記憶體。 1~10000 64
latency-monitor-threshold

延時監控的采樣時間門檻值(最小值)。

當門檻值設定為0時,不做監控,也不采樣;當門檻值設定為大于0時,将監控并記錄執行耗時大于門檻值的操作。

使用者可以通過LATENCY等指令擷取統計資料和配置、執行采樣監控。詳情參考Redis官網說明:https://redis.io/topics/latency-monitor。

0~86400000,機關:毫秒。
reserved-memory

預留記憶體,主備執行個體才有此配置。

預留記憶體将被配置設定給執行個體所在虛拟機,保證DCS執行個體背景程序在做持久化和主從同步等任務時擁有足夠的記憶體。

預留記憶體大小可以調高或者調低,但不能超過執行個體目前剩餘的可用記憶體,以及最大可用記憶體的50%。其中執行個體最大可用記憶體可參考《分布式緩存服務産品介紹》。

執行個體最大可用記憶體數的0-50%,同時不能超過執行個體目前剩餘的可用記憶體,具體以界面提示為準,機關:MB。
notify-keyspace-events 鍵空間通知,配置該參數後用戶端可以通過Redis的訂閱與釋出功能,來接收那些以某種方式改動了Redis資料集的事件。

配置為空字元串""時,不支援該功能。

可配置為以下字元的任意組合,指定了伺服器該發送哪些類型的通知:

K:鍵空間通知,所有通知以[email protected]__為字首。

E:鍵事件通知,所有通知以[email protected]__為字首。

g:DEL、EXPIRE、RENAME等類型無關的通用指令的通知。

$:字元串指令的通知。

l:清單指令的通知。

s:集合指令的通知。

h:哈希指令的通知。

z:有序集合指令的通知。

x:過期事件:每當有過期鍵被删除時發送。

e:驅逐(evict)事件:每當有鍵因為maxmemory政策而被删除時發送。

""

以上就是如何用分布式緩存服務實作Redis記憶體優化的大緻介紹,想要了解更多,歡迎點開分布式緩存服務DCS檢視。

繼續閱讀