新聞中心
這篇文章主要介紹redis內(nèi)存滿了的解決方法,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!
redis內(nèi)存滿了解決方法:
1,增加內(nèi)存。
2,使用內(nèi)存淘汰策略。
3,Redis集群。
重點介紹下2、3:
第二點:
我們知道,redis設(shè)置配置文件的maxmemory參數(shù),可以控制其大可用內(nèi)存大?。ㄗ止?jié))。
那么當(dāng)所需內(nèi)存,超過maxmemory怎么辦?
這個時候就該配置文件中的maxmemory-policy出場了。
其默認(rèn)值是noeviction。
下面我將列出當(dāng)可用內(nèi)存不足時,刪除redis鍵具有的淘汰規(guī)則。
規(guī)則說明:
1、volatile-lru
使用LRU算法刪除一個鍵(只對設(shè)置了生存時間的鍵)
2、allkeys-lru
使用LRU算法刪除一個鍵
3、volatile-random
隨機刪除一個鍵(只對設(shè)置了生存時間的鍵)
4、allkeys-random
隨機刪除一個鍵
5、volatile-ttl
刪除生存時間最近的一個鍵
6、noeviction
不刪除鍵,只返回錯誤
LRU算法,least RecentlyUsed,最近最少使用算法。也就是說默認(rèn)刪除最近最少使用的鍵。
但是一定要注意一點!redis中并不會準(zhǔn)確的刪除所有鍵中最近最少使用的鍵,而是隨機抽取3個鍵,刪除這三個鍵中最近最少使用的鍵。
那么3這個數(shù)字也是可以設(shè)置的,對應(yīng)位置是配置文件中的maxmeory-samples.
三、集群怎么做
Redis僅支持單實例,內(nèi)存一般最多10~20GB。對于內(nèi)存動輒100~200GB的系統(tǒng),就需要通過集群來支持了。
Redis集群有三種方式:客戶端分片、代理分片、RedisCluster(在之后一篇文章詳細(xì)說一下。)
1、客戶端分片
通過業(yè)務(wù)代碼自己實現(xiàn)路由
優(yōu)勢:可以自己控制分片算法、性能比代理的好
劣勢:維護成本高、擴容/縮容等運維操作都需要自己研發(fā)
2、代理分片
代理程序接收到來自業(yè)務(wù)程序的數(shù)據(jù)請求,根據(jù)路由規(guī)則,將這些請求分發(fā)給正確的Redis實例并返回給業(yè)務(wù)程序。使用類似Twemproxy、Codis等中間件實現(xiàn)。
優(yōu)勢:運維方便、程序不用關(guān)心如何鏈接Redis實例
劣勢:會帶來性能消耗(大概20%)、無法平滑擴容/縮容,需要執(zhí)行腳本遷移數(shù)據(jù),不方便(Codis在Twemproxy基礎(chǔ)上優(yōu)化并實現(xiàn)了預(yù)分片來達到Auto Rebalance)。
3、Redis Cluster
優(yōu)勢:官方集群解決方案、無中心節(jié)點,和客戶端直連,性能較好
劣勢:方案太重、無法平滑擴容/縮容,需要執(zhí)行相應(yīng)的腳本,不方便、太新,沒有相應(yīng)成熟的解決案例
以上是redis內(nèi)存滿了的解決方法的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
文章題目:redis內(nèi)存滿了的解決方法-創(chuàng)新互聯(lián)
轉(zhuǎn)載注明:http://fisionsoft.com.cn/article/cophei.html