日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Redis:内存满了的解决方案

發(fā)布時(shí)間:2025/3/21 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis:内存满了的解决方案 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1,增加內(nèi)存;

2,使用內(nèi)存淘汰策略。(LRU)

3,Redis集群。

?

重點(diǎn)介紹下23;

第2點(diǎn):

我們知道,redis設(shè)置配置文件的maxmemory參數(shù),可以控制其最大可用內(nèi)存大小(字節(jié))。

那么當(dāng)所需內(nèi)存,超過maxmemory怎么辦?

這個(gè)時(shí)候就該配置文件中的maxmemory-policy出場了。

其默認(rèn)值是noeviction。

下面我將列出當(dāng)可用內(nèi)存不足時(shí),刪除redis鍵具有的淘汰規(guī)則。

?

規(guī)則名稱

規(guī)則說明

volatile-lru

使用LRU算法刪除一個(gè)鍵(只對(duì)設(shè)置了生存時(shí)間的鍵),最少使用的

allkeys-lru

使用LRU算法刪除一個(gè)鍵,最少使用的

volatile-random

隨機(jī)刪除一個(gè)鍵(只對(duì)設(shè)置了生存時(shí)間的鍵)

allkeys-random

隨機(jī)刪除一個(gè)鍵

volatile-ttl

刪除生存時(shí)間最近的一個(gè)鍵

noeviction

不刪除鍵,只返回錯(cuò)誤

LRU算法,least RecentlyUsed,最近最少使用算法也就是說默認(rèn)刪除最近最少使用的鍵。

作為內(nèi)存數(shù)據(jù)庫,出于對(duì)性能和內(nèi)存消耗的考慮,Redis 的淘汰算法實(shí)際實(shí)現(xiàn)上并非針對(duì)所有 key,而是抽樣一小部分并且從中選出被淘汰的 key。

使用 Redis 緩存數(shù)據(jù)時(shí),為了提高緩存命中率,需要保證緩存數(shù)據(jù)都是熱點(diǎn)數(shù)據(jù)??梢詫?nèi)存最大使用量設(shè)置為熱點(diǎn)數(shù)據(jù)占用的內(nèi)存量,然后啟用 allkeys-lru 淘汰策略,將最近最少使用的數(shù)據(jù)淘汰。

Redis 4.0 引入了 volatile-lfu 和 allkeys-lfu 淘汰策略,LFU 策略通過統(tǒng)計(jì)訪問頻率,將訪問頻率最少的鍵值對(duì)淘汰。

?

但是一定要注意一點(diǎn)redis中并不會(huì)準(zhǔn)確的刪除所有鍵中最近最少使用的鍵,而是隨機(jī)抽取3個(gè)鍵,刪除這三個(gè)鍵中最近最少使用的鍵。

那么3這個(gè)數(shù)字也是可以設(shè)置的,對(duì)應(yīng)位置是配置文件中的maxmeory-samples.

?第3點(diǎn):

3.集群怎么做

Redis僅支持單實(shí)例,內(nèi)存一般最多10~20GB。對(duì)于內(nèi)存動(dòng)輒100~200GB的系統(tǒng),就需要通過集群來支持了。

Redis集群有三種方式:客戶端分片、代理分片、RedisCluster(在之后一篇文章詳細(xì)說一下。)

· 客戶端分片

通過業(yè)務(wù)代碼自己實(shí)現(xiàn)路由

優(yōu)勢:可以自己控制分片算法、性能比代理的好

劣勢:維護(hù)成本高、擴(kuò)容/縮容等運(yùn)維操作都需要自己研發(fā)

· 代理分片(redis中間件)

代理程序接收到來自業(yè)務(wù)程序的數(shù)據(jù)請(qǐng)求,根據(jù)路由規(guī)則,將這些請(qǐng)求分發(fā)給正確的Redis實(shí)例并返回給業(yè)務(wù)程序。使用類似Twemproxy、Codis等中間件實(shí)現(xiàn)。

優(yōu)勢:運(yùn)維方便、程序不用關(guān)心如何鏈接Redis實(shí)例

劣勢:會(huì)帶來性能消耗(大概20%)、無法平滑擴(kuò)容/縮容,需要執(zhí)行腳本遷移數(shù)據(jù),不方便(Codis在Twemproxy基礎(chǔ)上優(yōu)化并實(shí)現(xiàn)了預(yù)分片來達(dá)到Auto Rebalance)。

·Redis Cluster

優(yōu)勢:官方集群解決方案、無中心節(jié)點(diǎn),和客戶端直連,性能較好

劣勢:方案太重、無法平滑擴(kuò)容/縮容,需要執(zhí)行相應(yīng)的腳本,不方便、太新,沒有相應(yīng)成熟的解決案例

總結(jié)

以上是生活随笔為你收集整理的Redis:内存满了的解决方案的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。