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

學無先后,達者為師

網站首頁 編程語言 正文

centos 單機版redis安裝與數據持久化

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

redis

  • 單機版安裝
  • 數據持久化
    • 持久化配置

單機版安裝

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     #如果報錯請將剛才解壓的安裝包刪除掉,再次重新解壓并進行make安裝即可。
mv redis.conf redis.conf.bak
vim redis.conf     
bind 192.168.246.202  #只監聽內網IP
daemonize yes     #開啟后臺模式將on改為yes
port 6379                      #端口號
dir /data/application/redis/data  #本地數據庫存放持久化數據的目錄該目錄-----需要存在

創建存放數據的目錄

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

參數詳解: ? [Unit] 表示這是基礎信息 ? Description 是描述 ? After
是在那個服務后面啟動,一般是網絡服務啟動后啟動

? [Service] 表示這里是服務信息 ? ExecStart 是啟動服務的命令 ? ExecStop 是停止服務的指令
? [Install] 表示這是是安裝相關信息
WantedBy =multi-user.target表明當系統以多用戶方式(默認的運行級別)啟動時,這個服務需要被自動運行。

8.啟動服務:

 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 : 將鍵的過期時間設置為 seconds 秒。 執行 SET key value EX seconds
的效果等同于執行 SETEX key seconds value。 PX milliseconds : 將鍵的過期時間設置為
milliseconds 毫秒。 執行 SET key value PX milliseconds 的效果等同于執行 PSETEX key
milliseconds value。 NX : 只在鍵不存在時, 才對鍵進行設置操作。 XX : 只在鍵已經存在時, 才對鍵進行設置操作。

使用 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的相關工具

./redis-cli           #redis的客戶端
./redis-server        #redis的服務端
./redis-check-aof     #用于修復出問題的AOF文件
./redis-sentinel      #用于集群管理

數據持久化

為什么要數據持久化???
redis是把數據儲存到內存中,那么當電腦關機的時候內存的數據就會消失這是我們不想看到的,即使它數據的讀寫很快。
所以內存持久化就是將內存的數據持久化到儲存中在,保證數據在內存中消失的時候可以可以通過儲存設備將數據讀到內存當中。

  1. RDB (Redis DataBase)·------默認開啟
    是在不同的時間點,將redis存儲的數據生成快照并存儲到磁盤等介質上

    周期性
    不影響數據寫入
    高效
    完整性較差

    解釋:

    ??周期性 ????這是由RDB 持久化的save規則決定的配置文件中

    ################################ 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 ""
    
    

    不影響數據寫入:
    ??RDB會啟動子進程,備份所有數據,當前進程繼續提供數據的讀寫。當備份完成,才替換老的配置文件。

    高效 ??一次性還原所有數據

    完整性較差 ??因為周期性的去持久化,所以遇到故障之后會丟故障點到上次做持久化之間的數據。

    每次快照持久化都是將內存數據完整寫入到磁盤一次,如果數據量大的話,而且寫操作比較多,必然會引起大量的磁盤io操作,可能會嚴重影響性能。

  2. AOF (Append Only File) 默認關閉

    ??記錄的是操作指令,在下次開啟redis時將以前記錄的寫指令再重新執行一遍從而實現數據恢復

    特點:

    實時性:
    ??這是有aof的持久化規則決定的

    完整性
    ??因為實時性每次寫入數據的同時可以將寫入的記錄都記錄下來

    體積大
    ??因為會記錄你的操作行為,你的刪操作也會被記錄,所以文件的體積一直在增大。

RDB和AOF兩種方式也可以同時使用,在這種情況下,如果redis重啟的話,則會優先采用AOF方式來進行數據恢復,這是因為AOF方式的數據恢復完整度更高。官方的建議也是將兩種持久化的方式都開啟

持久化配置

#RDB
bind 10.8.161.200 #綁定監聽ip
daemonize yes #后臺守護進程
port 6379  #監聽端口
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備份

其實備份很簡單,持久化的過程就是數據備份,當你開機啟動redis時redis從你做數據化持久的文件中讀取數據,這個過程就是恢復數據,所以當你從一臺redis備份從另一臺redis恢復數據時,你只需要把rdb或者aof文件移動到相應的位置,然后redis重啟讀取數據,這就是形成了備份到恢復的過程。

總結:
rdb的方式就是備份數據本身的文件,用save的策略實行持久化,有周期性
aof的方式就是sql語句的記錄,用appendfsync的三個選項來實施持久化的策略
其中rdb的方式是redis默認的持久化的方法,但是開啟aof的持久化方式時,redis會首先選擇aof

##snapshot觸發的時機,save <seconds> <changes> 
##如下為900秒后,至少有一個變更操作,才會snapshot  
##對于此值的設置,需要謹慎,評估系統的變更操作密集程度  
##可以通過save “”來關閉snapshot功能  
#save時間,以下分別表示更改了1個key時間隔900s進行持久化存儲;更改了10個key300s進行存儲;更改10000個key60s進行存儲。
save 900 1
appendfsync everysec
always     #每次有數據修改發生時都會寫入AOF文件
everysec   #每秒鐘同步一次,該策略為AOF的缺省策略/默認策略
no         #從不同步。高效但是數據不會被持久化

原文鏈接:https://blog.csdn.net/weixin_44754740/article/details/126550473

欄目分類
最近更新