日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > php >内容正文

php

php使用redis持久化,Redis持久化完整版本

發(fā)布時(shí)間:2025/3/19 php 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php使用redis持久化,Redis持久化完整版本 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

持久化的簡(jiǎn)介

RDB

AOF

RDB與AOF的區(qū)別

持久化應(yīng)用場(chǎng)景

對(duì)于持久化這個(gè)功能點(diǎn),其實(shí)很簡(jiǎn)單沒(méi)有那么復(fù)雜

演示環(huán)境

centos7.0

redis4.0

redis存放目錄:/usr/local/redis

redis.conf存放目錄:/usr/local/redis/data

1. 持久化簡(jiǎn)介

redis的所有數(shù)據(jù)都是保存在內(nèi)存中,redis崩掉數(shù)據(jù)會(huì)丟失。redis持久化就是把數(shù)據(jù)保存在磁盤(pán)上。利用永久性存儲(chǔ)介質(zhì)將數(shù)據(jù)進(jìn)程保存,在特定的時(shí)間將保存的數(shù)據(jù)進(jìn)行恢復(fù)的工作機(jī)制稱為持久化。

持久化過(guò)程保存的是什么呢?

第一種快照形式,存儲(chǔ)數(shù)據(jù)結(jié)果,關(guān)注點(diǎn)在數(shù)據(jù),也就是下文會(huì)講到的RDB

第二種操作過(guò)程,存儲(chǔ)操作過(guò)程,關(guān)注點(diǎn)在數(shù)據(jù)的操作過(guò)程,也就是下文會(huì)講到的AOF

2. RDB

2-1 RDB啟動(dòng)方式 -- save命令

下圖是redis.conf的配置信息,在執(zhí)行完save后會(huì)生成一個(gè)dump.rdb的文件

現(xiàn)在我們?cè)O(shè)置一個(gè)值,然后save一下,在/usr/local/redis/data下就會(huì)有一個(gè)dump6379.rdb的一個(gè)文件

2-2 RDB使用方式之save

dbfilename dump6379.rdb :設(shè)置RDB文件名,默認(rèn)值為dump.rdb

dir:存儲(chǔ)rdb或者aof文件的路徑

rdbcompression yes :設(shè)置存儲(chǔ)時(shí)是否壓縮數(shù)據(jù),默認(rèn)為yes,采用lzf壓縮

rdbchecksum yes:設(shè)置是否進(jìn)行RDB文件格式校驗(yàn),該校驗(yàn)過(guò)程在寫(xiě)文件和讀文件過(guò)程均進(jìn)行

2-3 RDB數(shù)據(jù)恢復(fù)

其實(shí)這個(gè)數(shù)據(jù)恢復(fù)相對(duì)于其他關(guān)系型數(shù)據(jù)庫(kù)恢復(fù)基本就不用操作什么。只需要重新在啟動(dòng)就好了

2-4 RDB -- save指令工作原理

當(dāng)你執(zhí)行save時(shí),其他客戶端請(qǐng)求redis的指令都會(huì)等待,直到save指令執(zhí)行完成。因?yàn)閟ave指令是單線程執(zhí)行,一旦執(zhí)行時(shí)間過(guò)長(zhǎng)會(huì)直接導(dǎo)致其他用戶端無(wú)法正常存儲(chǔ)數(shù)據(jù)。所以這個(gè)指令我們默認(rèn)被廢棄。會(huì)使用下文介紹的bgsave來(lái)代替

2-5 RDB -- bgsave指令工作原理

當(dāng)在redis執(zhí)行了bgsave后會(huì)直接返回一個(gè)Background saving started

這個(gè)時(shí)候我們?cè)诳匆幌氯罩疚募?#xff0c;bgsave命令是針對(duì)save阻塞問(wèn)題做的優(yōu)化

2-5 RDB -- 配置文件自啟動(dòng)

以下配置是默認(rèn)配置

save 900 1

save 300 10

save 60 10000

stop-writes-on-bgsave-error yes

save 【時(shí)間】 【key改變數(shù)量】

也就是說(shuō)在300秒有10個(gè)key值發(fā)生變化了,就會(huì)在后臺(tái)執(zhí)行bgsave

3. AOF

3-1 AOF概念

AOF文件存儲(chǔ)的是執(zhí)行命令操作過(guò)程,恢復(fù)數(shù)據(jù)也是使用操作過(guò)程來(lái)恢復(fù)。

3-2 AOF寫(xiě)數(shù)據(jù)過(guò)程

執(zhí)行一條redis命令

redis的AOF會(huì)把命令刷新緩沖區(qū)

然后根據(jù)一定的方式同步的到redis.conf配置的.aof文件中

3-3 AOF寫(xiě)數(shù)據(jù)的三種策略

always:執(zhí)行的命令都會(huì)存儲(chǔ)到AOF文件中,數(shù)據(jù)零誤差,性能較低,不建議使用

everysec:每秒將緩沖區(qū)中的指令同步到AOF文件中,數(shù)據(jù)準(zhǔn)確性較高,性能較高,建議使用,也是默認(rèn)配置。但是在系統(tǒng)突然宕機(jī)的情況下回丟失1秒內(nèi)的數(shù)據(jù)

no:由操作系統(tǒng)控制每次同步到AOF文件的周期,整體過(guò)程不可控

3-4 AOF功能開(kāi)啟

配置:appendonly yes|no

作用:是否開(kāi)啟AOF持久化功能,默認(rèn)為不開(kāi)啟狀態(tài)

配置:appendfsync always| everysec | no

作用:AOF寫(xiě)數(shù)據(jù)策略

配置:appenfilename filename

作用:AOF持久化文件名,默認(rèn)名為appendonly.aof

然后使用重啟redis服務(wù),就可以在usr/local/redis/data目錄下可以看到appendonly.aof文件了

然后我們?cè)趓edis客戶端執(zhí)行一條命令,在來(lái)查看一下。可以看到數(shù)據(jù)都會(huì)存入appendonly.aof這個(gè)文件中。

3-5 AOF寫(xiě)數(shù)據(jù)出現(xiàn)的問(wèn)題

我們先看一個(gè)案例,我們重復(fù)設(shè)置了name這個(gè)key后,打開(kāi)appendonly.aof文件查看,可以看到有三個(gè)操作,但是這三個(gè)操作我們都是修改的一個(gè)key啊!我們只保存最后一個(gè)key不行嗎?帶著這個(gè)疑問(wèn),我們?cè)诶^續(xù)往下看

3-6 AOF重寫(xiě)

如在上邊我們執(zhí)行了三次 set name 指令,但是我們最終就只需要最后一次執(zhí)行的記錄。也就是我們只需要最后一次執(zhí)行記錄即可。其他的記錄就不需要了,然后會(huì)把壓縮后的數(shù)據(jù)重寫(xiě)到aof文件中。

重寫(xiě)后我們的磁盤(pán)利用率就提高了

還有就是我們恢復(fù)數(shù)據(jù)的速度也會(huì)變快

同時(shí)也會(huì)提高持久化的效率

3-7 AOF重寫(xiě)規(guī)則

進(jìn)程內(nèi)已超時(shí)的數(shù)據(jù)不再寫(xiě)入文件

忽略刪除指令,如del,hdel,srem。 還有就是3-5說(shuō)的問(wèn)題,連續(xù)對(duì)一個(gè)key進(jìn)行操作

對(duì)同一數(shù)據(jù)的多條寫(xiě)入記錄合并為一條記錄:如lpush list a lpush lsit b lpush list c可以轉(zhuǎn)化為lpush list a b c。

3-8 AOF手動(dòng)重寫(xiě)

指令:bgrewriteaof

接著我們3-5的問(wèn)題,我們?cè)诿钚袌?zhí)行bgrewriteaof指令然后查看appendonly.aof文件

當(dāng)執(zhí)行完后會(huì)發(fā)現(xiàn)文件變小了,文件里也就只有一條指令了

3-9 AOF手動(dòng)重寫(xiě)工作原理

3-10 AOF自動(dòng)重寫(xiě)

配置:auto-aof-rewrite-percentage 100 | auto-aof-rewrite-min-size 64mb

觸發(fā)對(duì)比參數(shù):aof_current_size | aof_base_size

當(dāng)aof_current_size > auto-aof-rewrite-min-size 64mb 會(huì)啟動(dòng)重寫(xiě)

此圖來(lái)源于網(wǎng)絡(luò)

3-11 AOF工作流程和重寫(xiě)流=流程

4. 總結(jié)

以上就是redis持久化的所有內(nèi)容。

總結(jié)

以上是生活随笔為你收集整理的php使用redis持久化,Redis持久化完整版本的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。