網(wǎng)站首頁 編程語言 正文
redis
- 單機(jī)版安裝
- 數(shù)據(jù)持久化
- 持久化配置
單機(jī)版安裝
mkdir -p /data/application
wget http://download.redis.io/releases/redis-4.0.9.tar.gz
tar xzf redis-4.0.9.tar.gz -C /data/application/
cd /data/application/
mv redis-4.0.9/ redis
cd redis/
yum install -y gcc make
make #如果報錯請將剛才解壓的安裝包刪除掉,再次重新解壓并進(jìn)行make安裝即可。
mv redis.conf redis.conf.bak
vim redis.conf
bind 192.168.246.202 #只監(jiān)聽內(nèi)網(wǎng)IP
daemonize yes #開啟后臺模式將on改為yes
port 6379 #端口號
dir /data/application/redis/data #本地數(shù)據(jù)庫存放持久化數(shù)據(jù)的目錄該目錄-----需要存在
創(chuàng)建存放數(shù)據(jù)的目錄
mkdir /data/application/redis/data
配置redis為systemctl啟動
vim /lib/systemd/system/redis.service
[Unit]
Description=Redis
After=network.target
[Service]
ExecStart=/data/application/redis/src/redis-server /data/application/redis/redis.conf --daemonize no
ExecStop=/data/application/redis/src/redis-cli -h 127.0.0.1 -p 6379 shutdown
[Install]
WantedBy=multi-user.target
參數(shù)詳解: ? [Unit] 表示這是基礎(chǔ)信息 ? Description 是描述 ? After
是在那個服務(wù)后面啟動,一般是網(wǎng)絡(luò)服務(wù)啟動后啟動? [Service] 表示這里是服務(wù)信息 ? ExecStart 是啟動服務(wù)的命令 ? ExecStop 是停止服務(wù)的指令
? [Install] 表示這是是安裝相關(guān)信息
WantedBy =multi-user.target表明當(dāng)系統(tǒng)以多用戶方式(默認(rèn)的運(yùn)行級別)啟動時,這個服務(wù)需要被自動運(yùn)行。
8.啟動服務(wù):
systemctl daemon-reload #重新加載
systemctl start redis.service
登陸redis
/data/application/redis/src/:
cd /data/application/redis/src/
./redis-cli -h 10.8.161.200 -p 6379
10.8.161.200:6379> ping
PONG
10.8.161.200:6379> ping 111
"111"
10.8.161.200:6379> set name xiaoming
OK
10.8.161.200:6379> get name
"xiaoming"
10.8.161.200:6379>
10.8.161.200:6379> set key value [EX seconds] [PX milliseconds] [NX|XX] EX seconds : 將鍵的過期時間設(shè)置為 seconds 秒。 執(zhí)行 SET key value EX seconds
的效果等同于執(zhí)行 SETEX key seconds value。 PX milliseconds : 將鍵的過期時間設(shè)置為
milliseconds 毫秒。 執(zhí)行 SET key value PX milliseconds 的效果等同于執(zhí)行 PSETEX key
milliseconds value。 NX : 只在鍵不存在時, 才對鍵進(jìn)行設(shè)置操作。 XX : 只在鍵已經(jīng)存在時, 才對鍵進(jìn)行設(shè)置操作。
使用 EX 選項:
10.8.161.200:6379> set name1 xiaoming EX 5
OK
10.8.161.200:6379> get name1
"xiaoming"
10.8.161.200:6379> get name1
(nil)
使用 PX 選項:
10.8.161.200:6379> set name3 xiaoming NX
OK
10.8.161.200:6379> set name3 xiaoming NX
(nil)
使用 XX 選項:
10.8.161.200:6379> set name4 xiaoli XX
(nil)
10.8.161.200:6379> set name3 xiaoli XX
OK
10.8.161.200:6379> get name3
"xiaoli"
刪除:
10.8.161.200:6379> del name3
(integer) 1
10.8.161.200:6379> get name3
(nil)
10.8.161.200:6379>
redis的相關(guān)工具
./redis-cli #redis的客戶端
./redis-server #redis的服務(wù)端
./redis-check-aof #用于修復(fù)出問題的AOF文件
./redis-sentinel #用于集群管理
數(shù)據(jù)持久化
為什么要數(shù)據(jù)持久化???
redis是把數(shù)據(jù)儲存到內(nèi)存中,那么當(dāng)電腦關(guān)機(jī)的時候內(nèi)存的數(shù)據(jù)就會消失這是我們不想看到的,即使它數(shù)據(jù)的讀寫很快。
所以內(nèi)存持久化就是將內(nèi)存的數(shù)據(jù)持久化到儲存中在,保證數(shù)據(jù)在內(nèi)存中消失的時候可以可以通過儲存設(shè)備將數(shù)據(jù)讀到內(nèi)存當(dāng)中。
-
RDB (Redis DataBase)·------默認(rèn)開啟
是在不同的時間點(diǎn),將redis存儲的數(shù)據(jù)生成快照并存儲到磁盤等介質(zhì)上周期性
不影響數(shù)據(jù)寫入
高效
完整性較差解釋:
??周期性 ????這是由RDB 持久化的save規(guī)則決定的配置文件中
################################ SNAPSHOTTING ################################ # # Save the DB on disk: # # save <seconds> <changes> # # Will save the DB if both the given number of seconds and the given # number of write operations against the DB occurred. # # In the example below the behaviour will be to save: # after 900 sec (15 min) if at least 1 key changed # after 300 sec (5 min) if at least 10 keys changed # after 60 sec if at least 10000 keys changed # # Note: you can disable saving completely by commenting out all "save" lines. # # It is also possible to remove all the previously configured save # points by adding a save directive with a single empty string argument # like in the following example: # # save ""
不影響數(shù)據(jù)寫入:
??RDB會啟動子進(jìn)程,備份所有數(shù)據(jù),當(dāng)前進(jìn)程繼續(xù)提供數(shù)據(jù)的讀寫。當(dāng)備份完成,才替換老的配置文件。高效 ??一次性還原所有數(shù)據(jù)
完整性較差 ??因為周期性的去持久化,所以遇到故障之后會丟故障點(diǎn)到上次做持久化之間的數(shù)據(jù)。
每次快照持久化都是將內(nèi)存數(shù)據(jù)完整寫入到磁盤一次,如果數(shù)據(jù)量大的話,而且寫操作比較多,必然會引起大量的磁盤io操作,可能會嚴(yán)重影響性能。
-
AOF (Append Only File) 默認(rèn)關(guān)閉
??記錄的是操作指令,在下次開啟redis時將以前記錄的寫指令再重新執(zhí)行一遍從而實(shí)現(xiàn)數(shù)據(jù)恢復(fù)
特點(diǎn):
實(shí)時性:
??這是有aof的持久化規(guī)則決定的完整性
??因為實(shí)時性每次寫入數(shù)據(jù)的同時可以將寫入的記錄都記錄下來體積大
??因為會記錄你的操作行為,你的刪操作也會被記錄,所以文件的體積一直在增大。
RDB和AOF兩種方式也可以同時使用,在這種情況下,如果redis重啟的話,則會優(yōu)先采用AOF方式來進(jìn)行數(shù)據(jù)恢復(fù),這是因為AOF方式的數(shù)據(jù)恢復(fù)完整度更高。官方的建議也是將兩種持久化的方式都開啟
持久化配置
#RDB
bind 10.8.161.200 #綁定監(jiān)聽ip
daemonize yes #后臺守護(hù)進(jìn)程
port 6379 #監(jiān)聽端口
dbfilename dump.rdb #持久化文件的名字
dir /data/application/redis/data #文件存放的目錄
save 900 1 #持久化策略
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes #出錯是否停止壓縮
rdbcompression yes #是否開啟文件壓縮
#AOF
bind 10.8.161.200
daemonize yes
port 6379
dir /data/application/redis/data
appendonly yes #開啟aof持久化
appendfilename appendonly.aof #文件名
appendfsync everysec #持久化策略
redis備份
其實(shí)備份很簡單,持久化的過程就是數(shù)據(jù)備份,當(dāng)你開機(jī)啟動redis時redis從你做數(shù)據(jù)化持久的文件中讀取數(shù)據(jù),這個過程就是恢復(fù)數(shù)據(jù),所以當(dāng)你從一臺redis備份從另一臺redis恢復(fù)數(shù)據(jù)時,你只需要把rdb或者aof文件移動到相應(yīng)的位置,然后redis重啟讀取數(shù)據(jù),這就是形成了備份到恢復(fù)的過程。
總結(jié):
rdb的方式就是備份數(shù)據(jù)本身的文件,用save的策略實(shí)行持久化,有周期性
aof的方式就是sql語句的記錄,用appendfsync的三個選項來實(shí)施持久化的策略
其中rdb的方式是redis默認(rèn)的持久化的方法,但是開啟aof的持久化方式時,redis會首先選擇aof
##snapshot觸發(fā)的時機(jī),save <seconds> <changes>
##如下為900秒后,至少有一個變更操作,才會snapshot
##對于此值的設(shè)置,需要謹(jǐn)慎,評估系統(tǒng)的變更操作密集程度
##可以通過save “”來關(guān)閉snapshot功能
#save時間,以下分別表示更改了1個key時間隔900s進(jìn)行持久化存儲;更改了10個key300s進(jìn)行存儲;更改10000個key60s進(jìn)行存儲。
save 900 1
appendfsync everysec
always #每次有數(shù)據(jù)修改發(fā)生時都會寫入AOF文件
everysec #每秒鐘同步一次,該策略為AOF的缺省策略/默認(rèn)策略
no #從不同步。高效但是數(shù)據(jù)不會被持久化
原文鏈接:https://blog.csdn.net/weixin_44754740/article/details/126550473
相關(guān)推薦
- 2023-03-15 Android?flutter?Dio鎖的巧妙實(shí)現(xiàn)方法示例_Android
- 2023-12-15 Linux系統(tǒng)——退出vi編輯模式
- 2022-04-08 從頭學(xué)習(xí)C語言之二維數(shù)組_C 語言
- 2022-07-23 springboot-數(shù)據(jù)驗證及全局異常處理
- 2022-05-19 nginx中封禁ip和允許內(nèi)網(wǎng)ip訪問的實(shí)現(xiàn)示例_nginx
- 2023-07-26 vite項目中處理各種靜態(tài)資源的引入方式介紹
- 2023-01-01 解決React報錯No?duplicate?props?allowed_React
- 2022-03-15 org.springframework.web.client.RestTemplate 上傳文件無法
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支