Redis-緩存持久篇

本文是繼上一篇Redis-安裝啟動(dòng)篇之后。

Redis的緩存持久化分為四種情況:
  1. RDB方式:以.rdb文件的形式存儲(chǔ)數(shù)據(jù)。
    優(yōu)點(diǎn):只包含一個(gè)文件,利于備份、數(shù)據(jù)轉(zhuǎn)移等操作。適合處理量大的數(shù)據(jù)。
    缺點(diǎn):在保存數(shù)據(jù)時(shí)會(huì)有短暫的停頓。
    數(shù)據(jù)有相對(duì)應(yīng)的保存間隔,服務(wù)器異常容易丟數(shù)據(jù),不安全。
  2. AOF方式(Append Only File):以指定的形式追加到對(duì)應(yīng)文件的末尾。
    優(yōu)點(diǎn):采用追加方式,不會(huì)影響以前的數(shù)據(jù),安全。
    如果在寫入一半時(shí)出現(xiàn)問題,可以使用redis-check-aof來(lái)修復(fù)數(shù)據(jù)一致性的問題。
    缺點(diǎn):文件大,同步效率低。不適合做數(shù)據(jù)備份。
  3. 無(wú)持久化:此時(shí)Redis值能作為緩存過渡數(shù)據(jù)庫(kù)。
  4. 同時(shí)使用AOF和RDB:AOF和RDB同時(shí)進(jìn)行配置。
Redis的緩存持久化配置:
  1. RDB配置:
    修改dbfilename(dump數(shù)據(jù)庫(kù)保存的文件名)dir(保存數(shù)據(jù)庫(kù)文件的目錄)。
RDB配置.png

//save 時(shí)間 次數(shù)的說(shuō)明 TODO

  1. AOF配置:
    AOF的默認(rèn)文件為appendonly.aof(此aof文件會(huì)和dmp文件在同一處出現(xiàn))。
    修改追加方式appendfsync(要使用哪條,前面的#號(hào)去掉,給不用的加#)。
    AOF數(shù)據(jù)追加形式:
    appendfsync:always(一直執(zhí)行此方法)
    appendfsync:everysec(每秒自動(dòng)同步到磁盤)
    appendfsync:no(不追加)
緩存清除策略:
  • noeviction: 不清除。返回內(nèi)存限制錯(cuò)誤。
  • allkeys-lru: 在所有key中執(zhí)行LRU清除策略。
  • volatile-lru: 在已設(shè)置過期的key中執(zhí)行LRU清除策略。
  • allkeys-random: 在所有key中隨機(jī)清除。
  • volatile-random: 在已設(shè)置過期的key中執(zhí)行隨機(jī)清除。
  • volatile-ttl:清除帶有過期設(shè)置的,并且只有短時(shí)間TTL(存活)的。

使用情況:
allkeys-lru:你想讓經(jīng)常訪問的請(qǐng)求以冪次數(shù)的形式分布?;蛘卟淮_定的情況下。
allkeys-random:你有一個(gè)連續(xù)循環(huán)訪問或者你期望key均勻分布。
volatile-ttl:當(dāng)你在創(chuàng)建緩存對(duì)象時(shí)使用了不同的存活時(shí)間并提供給redis時(shí)。

在redis-cli中輸入info,可以找到以下信息:


info信息.png

其中,expired_keys:已經(jīng)過期的key;evicted_keys:已經(jīng)清除的key;
keyspace_hits:使用到的key;keyspace_misses:消失的key。
使用到的key/(使用到的key+消失的key)就是現(xiàn)有key的使用率,使用率在95%以上時(shí),說(shuō)明緩存機(jī)制效果好。

配置:在redis.conf中:
其中maxmemory:可以設(shè)置大小。比如15mb等。
maxmemory-policy:清除策略。默認(rèn)不清除。

緩存清除策略.png
Redis的LRU算法:

redis的LRU算法受控于

maxmemory-samples 5

這個(gè)值越大,緩存清除不常用的就越多。但帶來(lái)的負(fù)面影響是耗內(nèi)存,達(dá)不到緩存的效果。

Redis的LFU算法(4.0以后推出):

LFU算法在某些時(shí)候,對(duì)于使用頻繁的key將不再考慮,即便是舊的。防止頻繁的key來(lái)占用算法。

  • volatile-lfu 在已設(shè)置過期的key中執(zhí)行LFY清除策略。
  • allkeys-lfu 在所有的key中執(zhí)行LFU清除策略。
    redis的LFU算法受控于
lfu-log-factor 10
lfu-decay-time 1

factor越高,可以達(dá)到飽和(極限)容納的key就越多。
decay-time是計(jì)數(shù)器的衰變時(shí)間。

//緩存時(shí)間的配置 TODO

配置完成!

附錄 意外宕機(jī)策略

本方法只對(duì)于指定情況
1開啟AOF方式,查看aof文件,并刪除最后一行不完整的數(shù)據(jù)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容