日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

centos 單機(jī)版redis安裝與數(shù)據(jù)持久化

作者:hsvenus 更新時間: 2022-08-28 編程語言

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

  1. 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)重影響性能。

  2. 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

欄目分類
最近更新