溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Redis中內(nèi)存溢出問題和持久化方法

發(fā)布時間:2020-07-02 04:47:23 來源:網(wǎng)絡(luò) 閱讀:337 作者:wx5d81cde3a38cf 欄目:編程語言

一、內(nèi)存溢出問題

解決辦法

  1. 設(shè)置key的過期時間 2. 按需求使用8種數(shù)據(jù)淘汰策略

  2. volatile-lru(Least Recently Used):從已設(shè)置過期時間的數(shù)據(jù)集中挑選最近最少使用的數(shù)據(jù)淘汰

  3. volatile-lfu(Least Frequently Used):從已設(shè)置過期時間的數(shù)據(jù)集中挑選一段時間內(nèi)使用頻率最少的數(shù)據(jù)淘汰

  4. volatile-ttl(Time To Live):從已設(shè)置過期時間的數(shù)據(jù)集中挑選將要過期的數(shù)據(jù)淘汰

  5. volatile-random:從已設(shè)置過期時間的數(shù)據(jù)集中隨機(jī)選擇數(shù)據(jù)淘汰

  6. allkeys-lru:從數(shù)據(jù)集中挑選最近最少使用的數(shù)據(jù)淘汰

  7. allkeys-lfu:從所有Keys中挑選一段時間內(nèi)使用頻率最低的數(shù)據(jù)淘汰

  8. allkeys-random:從數(shù)據(jù)集中隨機(jī)選擇數(shù)據(jù)淘汰

  9. no-envicition(驅(qū)逐):禁止驅(qū)逐數(shù)據(jù),針對寫操作,返回錯誤信息(不采用任何淘汰策略,默認(rèn)即此配置)

Redis中內(nèi)存溢出問題和持久化方法

二、持久化方法

方式一:RDB 簡介

  • RDB:Redis Database(默認(rèn)持久化機(jī)制,默認(rèn)文件名dump.rdb)

  • 有兩個功能函數(shù)rdbSave(生成RDB文件)和rdbLoad(從文件加載到內(nèi)存)

優(yōu)點

  1. 快照保存數(shù)據(jù)極快,還原數(shù)據(jù)極快

  2. 適用于災(zāi)難備份

缺點

  1. 小內(nèi)存及其不適合使用

  2. 符合快照條件才會進(jìn)行快照,意外宕機(jī)會丟失最后一次快照后的所有修改

*快照條件**

  1. Redis服務(wù)器正常關(guān)閉:./bin/redis-cli shutdown

  2. 配置文件中設(shè)置的條件
  • save 900 1 //每900秒(15分鐘)至少1個key發(fā)生變化,產(chǎn)生快照

  • save 300 10 //每300秒(5分鐘)至少10個key發(fā)生變化,產(chǎn)生快照

  • save 60 10000 //每60秒(1分鐘)至少10000個key發(fā)生變化,產(chǎn)生快照

Redis中內(nèi)存溢出問題和持久化方法

方式二:AOF 原理簡介

  1. redis會將每一個收到的命令都通過write函數(shù)追加到文件中(默認(rèn)是appendonly.aof), 當(dāng)redis重啟時會通過重新執(zhí)行文件中保存的“寫命令”來在內(nèi)存中重建整個redis數(shù)據(jù)庫中的內(nèi)容

Redis中內(nèi)存溢出問題和持久化方法

2. 每當(dāng)執(zhí)行服務(wù)器(定時)任務(wù)或者函數(shù)時flushAppendOnlyFile 函數(shù)都會被調(diào)用, 這個函數(shù)執(zhí)行以下兩個工作:

  • WRITE:根據(jù)條件,將 aof_buf 中的緩存寫入到 AOF 文件

  • SAVE:根據(jù)條件,調(diào)用 fsync 或 fdatasync 函數(shù),將 AOF 文件保存到磁盤中

優(yōu)點

持久化比RDB更好,不會丟失任何的修改

缺點

  • 持久化文件會變的越來越大

  • 重復(fù)命令很多(例如:調(diào)用100次 “incr dcl" 命令,則文件中必須保存100條“incr dcl"命令記錄,但是其中的99條記錄都是重復(fù)的)
向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI