本文是繼上一篇Redis-安裝啟動(dòng)篇之后。
Redis的緩存持久化分為四種情況:
- 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ù),不安全。 - 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ù)備份。 - 無(wú)持久化:此時(shí)Redis值能作為緩存過渡數(shù)據(jù)庫(kù)。
- 同時(shí)使用AOF和RDB:AOF和RDB同時(shí)進(jìn)行配置。
Redis的緩存持久化配置:
- RDB配置:
修改dbfilename(dump數(shù)據(jù)庫(kù)保存的文件名)dir(保存數(shù)據(jù)庫(kù)文件的目錄)。

//save 時(shí)間 次數(shù)的說(shuō)明 TODO
- 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,可以找到以下信息:

其中,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)不清除。

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ù)。