您好,登錄后才能下訂單哦!
Redis所有數(shù)據(jù)都是存放在內(nèi)存中的,所以內(nèi)存的監(jiān)控及管理對redis來是是非常重要的。下面從內(nèi)存監(jiān)控、管理及優(yōu)化三個方面來說說redis的內(nèi)存。
內(nèi)存監(jiān)控
redis為我們提供了info memory命令來查看內(nèi)存使用。該命令的展示的數(shù)據(jù)非常多,下面只看其中比較重要的一些。
used_memory:1146648 (redis分配器分配的內(nèi)存量)
used_memory_human:1.09M(以可讀方式展示)
used_memory_rss:4358144 (redis總占用內(nèi)存量)
used_memory_rss_human:4.16M(可讀方式展示redis總占用內(nèi)存量)
used_memory_peak:1229448 (userd_memory_peak峰值)
used_memory_peak_human:1.17M
used_memory_overhead:857036(緩沖區(qū)、backlog等占用的內(nèi)存)
used_memory_startup:791384(啟動redis消耗的內(nèi)存)
used_memory_dataset:289612(redis數(shù)據(jù)所占用的內(nèi)存)
used_memory_lua:37888(lua腳本消耗的內(nèi)存)
used_memory_lua_human:37.00K(可讀方式展現(xiàn))
mem_fragmentation_ratio:4.02(內(nèi)存碎片率,used_memory_rss / used_memory)
mem_fragmentation_ratio大于1時,表示有內(nèi)存碎片,數(shù)值越低表示碎片率越嚴重。應用允許的情況下,可以重啟redis來降低碎片率。當小于0時,就要非常注意了,表示內(nèi)存不夠用了,使用了部分swap。
內(nèi)存管理
一般建議給redis設(shè)置內(nèi)存上限,maxmory
修改方式有兩種
修改配置文件
動態(tài)設(shè)置
下面展示動態(tài)設(shè)置
127.0.0.1:6379> config set maxmemory 1G OK 127.0.0.1:6379> config rewrite OK
設(shè)置最大內(nèi)存有兩個方面的作用,首先可以限制redis占用的內(nèi)存大小,防止超過物理內(nèi)存大小。另外,當設(shè)置了最大內(nèi)存后,redis超過了最大內(nèi)存后,就可以觸發(fā)內(nèi)存回收策略(通常應用于緩存場景)
redis可以動態(tài)調(diào)整最大內(nèi)存是非常好用的,當服務(wù)器內(nèi)存不夠用的情況下,需要增加內(nèi)存,當服務(wù)器內(nèi)存增大了,再動態(tài)調(diào)整redis的mammemory。
另外,redis的內(nèi)存回收策略的配置(maxmemory-policy)有幾個,其中有兩個單詞經(jīng)常出現(xiàn),LRU、LFU,意義分別如下:
最近最少使用的(Least Recently Used)
最近最不常用的(Least Frequently Used)
下面來看看所有的回收策略及意義:
noeviction:默認策略,不會刪除任何鍵,當超過最大內(nèi)存后,拒絕任何寫入命令,只響應讀命令
volatile-lru:根據(jù)lru算法刪除過期的鍵,如果沒有可刪除的鍵,則回退到noeviction策略。
allkeys-lru:根據(jù)lru算法刪除鍵,不管鍵是否過期,直到占用內(nèi)存小于maxmeory為止。
allkeys-lfu:和上面含義一致,只不過是使用lfu算法來刪除。
allkeys-random:當達到最大內(nèi)存后,隨機刪除鍵。
volatile-ttl:刪除快要過期的鍵。如果沒有則回退到noeviction。
內(nèi)存優(yōu)化
上面說了redis回收策略,它屬于被動刪除策略,我們可以主動去刪除長時間沒有訪問的鍵。可以通過使用scan遍歷鍵,然后使用object ideltime來查看鍵的空閑時間,刪除那些長時間沒有訪問的鍵。
此外,還可以縮減鍵值對象的方式來減低內(nèi)存的占用量。
127.0.0.1:6379> scan 0 1) "272" 2) 1) "story:course:3915" 2) "story:course:1681" 3) "story:course:4982" ……
比如,上面的鍵可以改為:sy:cos:id來減低鍵的長度。對于,值的話,可以使用壓縮技術(shù)來降低值的長度。(壓縮會增加cpu的壓力,可根據(jù)具體應用酌情應用)
以上就是Redis內(nèi)存監(jiān)控及管理的詳細內(nèi)容,更多請關(guān)注億速云其它相關(guān)文章!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。