Jedis
需要使用java來操作Redis 時(shí)可以使用jedis借跪,Jedis是Redis的Java客戶端,在SpringBoot 1.x版本中也是默認(rèn)的客戶端鸠儿。在SpringBoot 2.x版本中默認(rèn)客戶端是Luttuce果录。
- 導(dǎo)入對(duì)應(yīng)的依賴
<dependencies>
<!--導(dǎo)入jedis包-->
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.2.0</version>
</dependency>
<!--fastjson-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.62</version>
</dependency>
</dependencies>
- 編碼測(cè)試
- 連接數(shù)據(jù)庫
- 操作命令
- 斷開連接
由于自己的idea,maven有問題丸卷,短時(shí)間沒搞好,所以此處直接先看
連接成功輸出pong
jedis的常用api即redis的數(shù)據(jù)類型對(duì)應(yīng)的一些操作:
- key的一些操作
- String的一些操作
- List的一些操作
- Set的一些操作
- Hash的一些操作
Jedis操作事務(wù)
- 正常執(zhí)行
- 異常執(zhí)行询刹,在try中加入 int i = 1/0;語句
Springboot整合Redis
Springboot操作數(shù)據(jù):spring-data谜嫉,mongodb萎坷,jpa,jdbc沐兰,redis
springdata也是和springboot類似的框架
springboot后面版本將jedis換成了lettuce
jedis和lettuce區(qū)別
- jedis:采用直連哆档,多個(gè)線程操作的話,不安全住闯,若想避免不安全瓜浸,使用jedis pool連接池! 像BIO
- lettuce: 采用的netty比原,實(shí)例可以在多個(gè)線程中共享斟叼,不存在線程不安全的情況!更像NIO
源碼分析:
整合測(cè)試
- 引入依賴:
- 配置連接:
- 測(cè)試:
opsForxxx即操作xxx數(shù)據(jù)類型
redisconfig的一些源碼春寿,有關(guān)于序列化的
- 直接傳對(duì)象到redis會(huì)報(bào)錯(cuò)沒有序列化,所以傳對(duì)象是需要序列化的(實(shí)現(xiàn)Serializable接口即可)忽孽,springboot的默認(rèn)jdk序列化方法使得傳遞的中文在redis命令行界面出現(xiàn)亂碼
- 默認(rèn)的RedisTemplate的序列化方式為jdk序列化
- 編寫自己RedisTemplate绑改,不用默認(rèn)的jdk序列化方式,可以自己指定序列化方式:
使用自己寫的redis模板及指定特定的序列化方法后兄一,可以使得redis命令行界面沒有亂碼
使用redis的原生api會(huì)比較麻煩厘线,可以自己寫一個(gè)RedisUtil工具類來封裝各種redis數(shù)據(jù)類型的原生api。
- 先注入自己寫的RedisTemplate出革,然后設(shè)置一個(gè)緩存過期時(shí)間:
- 獲取過期時(shí)間:
- 判斷key是否存在:
- 刪除緩存 :
- 普通緩存獲仍熳场:
- 普通緩存放入:
- 普通緩存放入并設(shè)置時(shí)間:
- 值遞增遞減:
等等等
- 最后只要在啟動(dòng)類中注入工具類即可使用:
Redis.conf配置文件詳解
- 指明了默認(rèn)單位,大小寫不敏感
- include包含骂束,可以使用其他的conf文件耳璧,類似spring的import
- NetWork網(wǎng)絡(luò),可以綁定ip展箱;
保護(hù)模式旨枯;
綁定端口
- general通用配置,開啟守護(hù)進(jìn)程混驰;
以后臺(tái)方式運(yùn)行就需要指定pid
日志級(jí)別
日志的文件位置及其名字
數(shù)據(jù)庫的數(shù)量
是否顯示logo
- shopshotting快照攀隔,持久化時(shí)使用,redis內(nèi)存數(shù)據(jù)庫栖榨,不持久化斷電即失
解釋:
save 900 1 #如果900s內(nèi)昆汹,至少有一個(gè)key進(jìn)行了修改,則進(jìn)行持久化操作
可以自己修改策略如save 60 5
持久化出錯(cuò)時(shí)婴栽,是否還需要繼續(xù)工作
是否壓縮rdb文件满粗,壓縮需要消耗cpu資源,zef壓縮算法居夹,官方建議開啟
保存rdb文件時(shí)败潦,是否進(jìn)行錯(cuò)完整新校驗(yàn)本冲,會(huì)損失性能
rdb保存的文件目錄
- replication 復(fù)制,在主從復(fù)制時(shí)使用
- security安全
默認(rèn)是沒有密碼的:
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) ""
可以在配置文件中設(shè)置:
但通常在命令行中設(shè)置:
- client客戶端劫扒,可以設(shè)置最大連接數(shù)
- memory management內(nèi)存管理
設(shè)置最大的內(nèi)存容量:
內(nèi)存滿了的策略:
6種策略(常文):
- append only模式檬洞,aof的配置部分
默認(rèn)不開啟aof,使用的時(shí)rdb:
持久化的文件名字:
同步策略:
3種同步策略:
appendfsync always #每次修改都會(huì)同步沟饥,消耗性能
appendfsync everysec #每秒執(zhí)行一次同步添怔,可能會(huì)丟失這1s的數(shù)據(jù)
appendfsync no #不執(zhí)行同步,操作系統(tǒng)自己同步數(shù)據(jù)贤旷,數(shù)度最快
具體情況在Redis持久化中解釋
Redis持久化
redis是內(nèi)存數(shù)據(jù)庫广料,為了防止數(shù)據(jù)丟失以及服務(wù)重啟時(shí)能夠恢復(fù)數(shù)據(jù),不需要從后端恢復(fù)數(shù)據(jù)幼驶,Redis支持?jǐn)?shù)據(jù)的持久化艾杏,主要分為兩種方式,分別是RDB和AOF; 當(dāng)然實(shí)際場(chǎng)景下還會(huì)使用這兩種的混合模式
RDB持久化
RDB 就是 Redis DataBase 的縮寫盅藻,中文名為快照/內(nèi)存快照购桑,RDB持久化是把當(dāng)前進(jìn)程數(shù)據(jù)生成快照保存到磁盤上的過程,由于是某一時(shí)刻的快照氏淑,那么快照中的值要早于或者等于內(nèi)存中的值
基本流程:
- 保存文件位置:
# The filename where to dump the DB
dbfilename dump.rdb
可以刪除dump.rdb文件勃蜘,再使用save 對(duì)應(yīng)的策略,當(dāng)執(zhí)行就會(huì)觸發(fā)rdb機(jī)制產(chǎn)生dump.rdb
- 觸發(fā)方式:手動(dòng)觸發(fā)和自動(dòng)觸發(fā)
- 手動(dòng)觸發(fā)
1)save命令:阻塞當(dāng)前Redis服務(wù)器假残,直到RDB過程完成為止缭贡,對(duì)于內(nèi)存 比較大的實(shí)例會(huì)造成長(zhǎng)時(shí)間阻塞,線上環(huán)境不建議使用
2)bgsave命令:Redis進(jìn)程執(zhí)行fork操作創(chuàng)建子進(jìn)程辉懒,RDB持久化過程由子 進(jìn)程負(fù)責(zé)阳惹,完成后自動(dòng)結(jié)束。阻塞只發(fā)生在fork階段耗帕,一般時(shí)間很短
具體流程如下:
1)redis客戶端執(zhí)行bgsave命令或者自動(dòng)觸發(fā)bgsave命令(滿足修改觸發(fā)策略)穆端;
2)主進(jìn)程判斷當(dāng)前是否已經(jīng)存在正在執(zhí)行的子進(jìn)程,如果存在仿便,那么主進(jìn)程直接返回体啰;
3)如果不存在正在執(zhí)行的子進(jìn)程,那么就fork一個(gè)新的子進(jìn)程進(jìn)行持久化數(shù)據(jù)嗽仪,fork過程是阻塞的荒勇,fork操作完成后主進(jìn)程即可執(zhí)行其他操作;
4)子進(jìn)程先將數(shù)據(jù)寫入到臨時(shí)的rdb文件中闻坚,待快照數(shù)據(jù)寫入完成后再原子替換舊的rdb文件沽翔;
5)同時(shí)發(fā)送信號(hào)給主進(jìn)程,通知主進(jìn)程rdb持久化完成,主進(jìn)程更新相關(guān)的統(tǒng)計(jì)信息(info Persitence下的rdb_*相關(guān)選項(xiàng))仅偎。
- 自動(dòng)觸發(fā)
1)redis.conf中配置save m n
跨蟹,即在m秒內(nèi)有n次修改時(shí),自動(dòng)觸發(fā)bgsave生成rdb文件痢艺;
2)主從復(fù)制時(shí),從節(jié)點(diǎn)要從主節(jié)點(diǎn)進(jìn)行全量復(fù)制時(shí)也會(huì)觸發(fā)bgsave操作舌缤,生成當(dāng)時(shí)的快照發(fā)送到從節(jié)點(diǎn)友驮;
3)執(zhí)行debug reload命令重新加載redis時(shí)也會(huì)觸發(fā)bgsave操作椭豫;
4)默認(rèn)情況下執(zhí)行shutdown命令時(shí)赏酥,如果沒有開啟aof持久化裸扶,那么也會(huì)觸發(fā)bgsave操作;
- 如何使用rdb文件恢復(fù)
- 只需要將rdb文件放在我們的redis啟動(dòng)目錄即可摸屠,redis啟動(dòng)的時(shí)候就會(huì)自動(dòng)檢查dump.rdb來恢復(fù)其中的數(shù)據(jù)
- 查看需要存在的位置
127.0.0.1:6379> config get dir 1) "dir" 2) "/www/server/redis" #如果這個(gè)下不存在dump.rdb文件,啟動(dòng)就會(huì)自動(dòng)恢復(fù)其中的數(shù)據(jù)
- RDB的優(yōu)點(diǎn)
- RDB文件是某個(gè)時(shí)間節(jié)點(diǎn)的快照刻蚯,默認(rèn)使用LZF算法進(jìn)行壓縮炊汹,壓縮后的文件體積遠(yuǎn)遠(yuǎn)小于內(nèi)存大小,適用于備份器钟、全量復(fù)制等場(chǎng)景傲霸;
- Redis加載RDB文件恢復(fù)數(shù)據(jù)要遠(yuǎn)遠(yuǎn)快于AOF方式;
- 適合大規(guī)模數(shù)據(jù)恢復(fù)梳凛,對(duì)數(shù)據(jù)完整性要求性不高
- RDB的缺點(diǎn)
- RDB方式實(shí)時(shí)性不夠,無法做到秒級(jí)的持久化叛溢;意外宕機(jī)會(huì)有數(shù)據(jù)丟失
- 每次調(diào)用bgsave都需要fork子進(jìn)程楷掉,fork子進(jìn)程屬于重量級(jí)操作,會(huì)阻塞進(jìn)程刊橘,新建一個(gè)臨時(shí)的rdb文件會(huì)占內(nèi)存,頻繁執(zhí)行成本較高浓冒;
- RDB文件是二進(jìn)制的稳懒,沒有可讀性,AOF文件在了解其結(jié)構(gòu)的情況下可以手動(dòng)修改或者補(bǔ)全或油;
- 版本兼容RDB文件問題;
AOF持久化
Redis是“寫后”日志辖佣,Redis先執(zhí)行命令,把數(shù)據(jù)寫入內(nèi)存雏搂,然后才記錄日志。日志里記錄的是Redis收到的每一條命令,這些命令是以文本形式保存浊吏。PS: 大多數(shù)的數(shù)據(jù)庫采用的是寫前日志(WAL)找田,例如MySQL,通過寫前日志和兩階段提交漆改,實(shí)現(xiàn)數(shù)據(jù)和邏輯的一致性。
- 寫后日志好處:
- 避免額外的檢查開銷**:Redis 在向 AOF 里面記錄日志的時(shí)候愉棱,并不會(huì)先去對(duì)這些命令進(jìn)行語法檢查。所以档押,如果先記日志再執(zhí)行命令的話,日志中就有可能記錄了錯(cuò)誤的命令,Redis 在使用日志恢復(fù)數(shù)據(jù)時(shí)癞松,就可能會(huì)出錯(cuò)。
- 不會(huì)阻塞當(dāng)前的寫操作
- 寫后日志壞處:
- 如果命令執(zhí)行完成枫甲,寫日志之前宕機(jī)了,會(huì)丟失數(shù)據(jù)。
- 主線程寫磁盤壓力大幔崖,導(dǎo)致寫盤慢砂代,阻塞后續(xù)操作。
- 基本流程:
- 保存文件位置:appendonly.aof文件
append操作
appendonly默認(rèn)為no率挣,不開啟aof日志刻伊,改為yes開啟;重啟redis之后生效會(huì)出現(xiàn)aof文件
當(dāng)aof文件被破壞后椒功,連接redis會(huì)失敶废洹:
修復(fù)aof文件:redis提供的工具為 redis-check-aof --fix
文件修復(fù)正常后,重啟就可以直接恢復(fù)數(shù)據(jù)
如何實(shí)現(xiàn)AOF
AOF日志記錄Redis的每個(gè)寫命令动漾,步驟分為:命令追加(append)、文件寫入(write)和文件同步(sync)
命令追加:當(dāng)AOF持久化功能打開了妈拌,服務(wù)器在執(zhí)行完一個(gè)寫命令之后,會(huì)以協(xié)議格式將被執(zhí)行的寫命令追加到服務(wù)器的 aof_buf 緩沖區(qū)
文件寫入和同步:關(guān)于何時(shí)將 aof_buf 緩沖區(qū)的內(nèi)容寫入AOF文件中雹洗,Redis提供了三種寫回策略
1)Always,同步寫回:每個(gè)寫命令執(zhí)行完氮凝,立馬同步地將日志寫回磁盤;同步性高帽驯,數(shù)據(jù)基本不丟失梳侨,但影響性能
2)Everysec择示,每秒寫回:每個(gè)寫命令執(zhí)行完区匠,只是先把日志寫到AOF文件的內(nèi)存緩沖區(qū)喜颁,每隔一秒把緩沖區(qū)中的內(nèi)容寫入磁盤鬓长;
3)No炭序,操作系統(tǒng)控制的寫回:每個(gè)寫命令執(zhí)行完笨觅,只是先把日志寫到AOF文件的內(nèi)存緩沖區(qū)担巩,由操作系統(tǒng)決定何時(shí)將緩沖區(qū)內(nèi)容寫回磁盤送火。
redis官方解釋:
為了提高文件寫入效率,在現(xiàn)代操作系統(tǒng)中,當(dāng)用戶調(diào)用write函數(shù),將一些數(shù)據(jù)寫入文件時(shí)边涕,操作系統(tǒng)通常會(huì)將數(shù)據(jù)暫存到一個(gè)內(nèi)存緩沖區(qū)里沼沈,當(dāng)緩沖區(qū)的空間被填滿或超過了指定時(shí)限后,才真正將緩沖區(qū)的數(shù)據(jù)寫入到磁盤里旦装。
這樣的操作雖然提高了效率页衙,但也為數(shù)據(jù)寫入帶來了安全問題:如果計(jì)算機(jī)停機(jī),內(nèi)存緩沖區(qū)中的數(shù)據(jù)會(huì)丟失阴绢。為此拷姿,系統(tǒng)提供了fsync、fdatasync同步函數(shù)旱函,可以強(qiáng)制操作系統(tǒng)立刻將緩沖區(qū)中的數(shù)據(jù)寫入到硬盤里响巢,從而確保寫入數(shù)據(jù)的安全性。
- redis相關(guān)aof的一些配置文件項(xiàng)
no-appendfsync-on-rewrite
:always和everysec的設(shè)置會(huì)使真正的I/O操作高頻度的出現(xiàn)棒妨,甚至?xí)霈F(xiàn)長(zhǎng)時(shí)間的卡頓情況踪古,這個(gè)問題出現(xiàn)在操作系統(tǒng)層面上,所有靠工作在操作系統(tǒng)之上的Redis是沒法解決的券腔。為了盡量緩解這個(gè)情況伏穆,Redis提供了這個(gè)設(shè)置項(xiàng),保證在完成fsync函數(shù)調(diào)用時(shí)纷纫,不會(huì)將這段時(shí)間內(nèi)發(fā)生的命令操作放入操作系統(tǒng)的Page Cache(這段時(shí)間Redis還在接受客戶端的各種寫操作命令)枕扫。
auto-aof-rewrite-percentage
:在生產(chǎn)環(huán)境下,技術(shù)人員不可能隨時(shí)隨地使用“bgrewriteaof”命令去重寫AOF文件辱魁。所以更多時(shí)候我們需要依靠Redis中對(duì)AOF文件的自動(dòng)重寫策略烟瞧。Redis中對(duì)觸發(fā)自動(dòng)重寫AOF文件的操作提供了兩個(gè)設(shè)置:auto-aof-rewrite-percentage表示如果當(dāng)前AOF文件的大小超過了上次重寫后AOF文件的百分之多少后,就再次開始重寫AOF文件染簇。例如該參數(shù)值的默認(rèn)設(shè)置值為100参滴,意思就是如果AOF文件的大小超過上次AOF文件重寫后的1倍,就啟動(dòng)重寫操作锻弓。
auto-aof-rewrite-min-size
:參考auto-aof-rewrite-percentage選項(xiàng)的介紹砾赔,auto-aof-rewrite-min-size設(shè)置項(xiàng)表示啟動(dòng)AOF文件重寫操作的AOF文件最小大小。如果AOF文件大小低于這個(gè)值,則不會(huì)觸發(fā)重寫操作暴心。注意妓盲,auto-aof-rewrite-percentage和auto-aof-rewrite-min-size只是用來控制Redis中自動(dòng)對(duì)AOF文件進(jìn)行重寫的情況,如果是技術(shù)人員手動(dòng)調(diào)用“bgrewriteaof”命令专普,則不受這兩個(gè)限制條件左右本橙。
AOF重寫
AOF會(huì)記錄每個(gè)寫命令到AOF文件,隨著時(shí)間越來越長(zhǎng)脆诉,AOF文件會(huì)變得越來越大,如果不加以控制贷币,會(huì)對(duì)Redis服務(wù)器击胜,甚至對(duì)操作系統(tǒng)造成影響,而且AOF文件越大役纹,數(shù)據(jù)恢復(fù)也越慢偶摔。為了解決AOF文件體積膨脹的問題,Redis提供AOF文件重寫機(jī)制來對(duì)AOF文件進(jìn)行“瘦身”促脉。
原理:
Redis通過創(chuàng)建一個(gè)新的AOF文件來替換現(xiàn)有的AOF辰斋,新舊兩個(gè)AOF文件保存的數(shù)據(jù)相同,但新AOF文件沒有了冗余命令瘸味。AOF重寫會(huì)阻塞嗎宫仗?
AOF重寫過程是由后臺(tái)進(jìn)程bgrewriteaof來完成的。主線程fork出后臺(tái)的bgrewriteaof子進(jìn)程旁仿,fork會(huì)把主線程的內(nèi)存拷貝一份給bgrewriteaof子進(jìn)程藕夫,這里面就包含了數(shù)據(jù)庫的最新數(shù)據(jù)。然后枯冈,bgrewriteaof子進(jìn)程就可以在不影響主線程的情況下毅贮,逐一把拷貝的數(shù)據(jù)寫成操作,記入重寫日志尘奏。
所以aof在重寫時(shí)滩褥,在fork進(jìn)程時(shí)是會(huì)阻塞住主線程的。AOF日志何時(shí)會(huì)重寫炫加?
控制AOF重寫的觸發(fā)的兩個(gè)配置項(xiàng):
auto-aof-rewrite-min-size
:表示運(yùn)行AOF重寫時(shí)文件的最小大小瑰煎,默認(rèn)為64MB。超過這個(gè)設(shè)定的大小就會(huì)觸發(fā)
auto-aof-rewrite-percentage
:當(dāng)前aof文件比上一次重寫后aof文件的增量大小俗孝,和上一次重寫后aof文件大小的比值超過設(shè)定值就會(huì)重寫丢间。重寫日志時(shí),有新數(shù)據(jù)寫入怎么辦驹针?
重寫過程總結(jié)為:“一個(gè)拷貝烘挫,兩處日志”在fork出子進(jìn)程時(shí)的拷貝,以及在重寫時(shí),如果有新數(shù)據(jù)寫入饮六,主線程就會(huì)將命令記錄到兩個(gè)aof日志內(nèi)存緩沖區(qū)中其垄。如果AOF寫回策略配置的是always,則直接將命令寫回舊的日志文件卤橄,并且保存一份命令至AOF重寫緩沖區(qū)绿满,這些操作對(duì)新的日志文件是不存在影響的。(舊的日志文件:主線程使用的日志文件窟扑,新的日志文件:bgrewriteaof進(jìn)程使用的日志文件)
而在bgrewriteaof子進(jìn)程完成會(huì)日志文件的重寫操作后喇颁,會(huì)提示主線程已經(jīng)完成重寫操作,主線程會(huì)將AOF重寫緩沖中的命令追加到新的日志文件后面嚎货。這時(shí)候在高并發(fā)的情況下橘霎,AOF重寫緩沖區(qū)積累可能會(huì)很大,這樣就會(huì)造成阻塞殖属,Redis后來通過Linux管道技術(shù)讓aof重寫期間就能同時(shí)進(jìn)行回放姐叁,這樣aof重寫結(jié)束后只需回放少量剩余的數(shù)據(jù)即可。
最后通過修改文件名的方式洗显,保證文件切換的原子性外潜。
在AOF重寫日志期間發(fā)生宕機(jī)的話,因?yàn)槿罩疚募€沒切換挠唆,所以恢復(fù)數(shù)據(jù)時(shí)处窥,用的還是舊的日志文件。
精簡(jiǎn)為:
- 主線程fork出bgrewriteaof子進(jìn)程重寫aof日志
- 子進(jìn)程重寫日志完成后玄组,主線程追加aof日志緩沖
- 替換日志文件
主線程fork出子進(jìn)程的是如何復(fù)制內(nèi)存數(shù)據(jù)的
fork采用操作系統(tǒng)提供的寫時(shí)復(fù)制(copy on write)機(jī)制碧库,fork子進(jìn)程時(shí),子進(jìn)程時(shí)會(huì)拷貝父進(jìn)程的頁表巧勤,即虛實(shí)映射關(guān)系(虛擬內(nèi)存和物理內(nèi)存的映射索引表)嵌灰,而不會(huì)拷貝物理內(nèi)存為什么AOF重寫不復(fù)用原AOF日志?
- 父子進(jìn)程寫同一個(gè)文件會(huì)產(chǎn)生競(jìng)爭(zhēng)問題颅悉,影響父進(jìn)程的性能沽瞭。
- 如果AOF重寫過程中失敗了,相當(dāng)于污染了原本的AOF文件剩瓶,無法做恢復(fù)數(shù)據(jù)使用驹溃。
新版Redis 使用AOF和RDB混合持久化
內(nèi)存快照以一定的頻率執(zhí)行,在兩次快照之間延曙,使用 AOF 日志記錄這期間的所有命令操作豌鹤。
數(shù)據(jù)恢復(fù):
性能實(shí)踐:
理論上:
- 降低fork的頻率,比如可以手動(dòng)來觸發(fā)RDB生成快照枝缔、與AOF重寫布疙;
- 控制Redis最大使用內(nèi)存蚊惯,防止fork耗時(shí)過長(zhǎng);
- 使用更牛逼的硬件灵临;
- 合理配置Linux的內(nèi)存分配策略截型,避免因?yàn)槲锢韮?nèi)存不足導(dǎo)致fork失敗。
實(shí)踐中:
- 如果Redis中的數(shù)據(jù)并不是特別敏感或者可以通過其它方式重寫生成數(shù)據(jù)儒溉,可以關(guān)閉持久化宦焦,如果丟失數(shù)據(jù)可以通過其它途徑補(bǔ)回;
- 自己制定策略定期檢查Redis的情況顿涣,然后可以手動(dòng)觸發(fā)備份波闹、重寫數(shù)據(jù);
- 單機(jī)如果部署多個(gè)實(shí)例涛碑,要防止多個(gè)機(jī)器同時(shí)運(yùn)行持久化精堕、重寫操作,防止出現(xiàn)內(nèi)存锌唾、CPU、IO資源競(jìng)爭(zhēng)夺英,讓持久化變?yōu)榇校?/li>
- 可以加入主從機(jī)器晌涕,利用一臺(tái)從機(jī)器進(jìn)行備份處理,其它機(jī)器正常響應(yīng)客戶端的命令痛悯;
- RDB持久化與AOF持久化可以同時(shí)存在余黎,配合使用