Part_three:Redis持久化存儲

redis持久化存儲

  • Redis是一種內存型數據庫,一旦服務器進程退出,數據庫的數據就會丟失,爲了解決這個問題,Redis提供了兩種持久化的方案,將內存中的數據保存到磁盤中,避免數據的丟失。

1.RDB持久化

  • redis提供了RDB持久化的功能,這個功能能夠將redis在內存中的狀態數據保存到磁盤html

  • 觸發機制:python

    • 手動執行save命令
    • 或者配置觸發條件
  • 配置文件:s21_rdb.confmysql

    • 配置核心參數:
      • dbfilename s21redis.rdb
      • save 900 1
    daemonize yes
    port 6379
    logfile /data/6379/redis.log
    dir /data/6379                      #定義持久化文件存儲位置/data/6379
    dbfilename  s21redis.rdb              #rdb持久化文件s21redis.rdb
    bind  127.0.0.1            #redis綁定地址
    #save 900 1                         #
    #save 200 10 #在200秒中內,超過10個修改類的操做
    save  20  2                        #
    • 建立文件夾 data/6379
    [root@xujunk s21redis]#mkdir -p /data/6379/
    • 開啓redis-server
    [root@xujunk s21redis]#redis-server s21_rdb.conf
    
    查看啓動狀態:
    [root@xujunk s21redis]#ps -ef |grep redis
    """
    root      22057      1  0 17:14 ?        00:00:00 redis-server 127.0.0.1:6379
    
    """
    • 啓動redis-cli端,並進行操做
    [root@xujunk redis-4.0.10]#redis-cli
    #我們設置save 爲20秒內 操做2次。因此這裏最少操做2次
    [root@xujunk redis-4.0.10]#set name haha
    [root@xujunk redis-4.0.10]#set name2 haha
    • 查看存儲爲位置:
    [root@xujunk s21redis]#ls /data/6379
    redis.log  s21redis.rdb
    #此時生成2個文件。
    • 殺死全部redis
    pkill -9 redis
    • 再次進入redis
    [root@xujunk s21redis]#redis-server s21_rdb.conf
    [root@xujunk s21redis]#redis-cli
    127.0.0.1:6379> keys *
    1) "name2"
    2) "name3"
    #此時數據達到持久化存儲

2.第二個機制:AOF機制

  • AOF機制,將你的修改類操做命令,追加到日誌文件中redis

    • 記錄服務器執行的全部變動操做命令(例如set del等),並在服務器啓動時,經過從新執行這些命令來還原數據集
  • AOF 文件中的命令所有以redis協議的格式保存,新命令追加到文件末尾,追加文件方式。
    • 優勢:最大程序保證數據不丟,RDB在沒有觸發save機制以前就宕機了,那麼數據就沒了。
    • 缺點:日誌記錄很是大
  • 追加文件:用在文件末尾追加記錄的方式,對Redis寫入的數據,依次進行持久化,因此它的持久化是更加安全的。sql

  • 此外,它還提供一個用appendfsync選項設置fsync的策略,確保寫入的數據都落到磁盤中,具體選項包括always,everysec,no等。數據庫

  • 修改aof 配置文件添加以下參數 ,核心功能參數是:vim

    appendonly yes
    appendfsync  always    老是修改類的操做
                 everysec   每秒作一次持久化
                 no     依賴於系統自帶的緩存大小機制
  • AOF存儲示例緩存

    • 建立配置文件而且編輯配置:安全

      [root@xujunk s21redis]#touch s21_aof.conf
      [root@xujunk s21redis]#vim s21_aof.conf 
          daemonize yes
          port 6379
          dir /data/6379
          appendonly yes
          appendfsync everysec
          logfile /data/6379/redis.log
    • 以本身配置文件 啓動redis服務器

      [root@xujunk 6379]#redis-server /opt/s21redis/s21_aof.conf 
      
      [root@xujunk 6379]#ls
      appendonly.aof  redis.log
      #此時6379目錄生成2個文件。實時存儲
      
      #實時監控存儲數據文件
      [root@xujunk 6379]#tail -f appendonly.aof
      
      #另起一個窗口啓動客戶端,操做redis
      [root@xujunk s21redis]#redis-cli
      127.0.0.1:6379> set name "www"
      OK
      
      #監控客戶端實時輸出存入結果:
      *2
      $6
      SELECT
      $1
      0
      *3
      $3
      set
      $4
      name
      $3
      www
  • redis 持久化方式有哪些?有什麼區別?

    rdb:基於快照的持久化,速度更快,通常用做備份,主從複製也是依賴於rdb持久化功能
    
    aof:以追加的方式記錄redis操做日誌的文件。能夠最大程度的保證redis數據安全,相似於mysql的binlog

3.redis持久化rdb切換aof備份

  • 本文在redis4.0中,經過config set命令,達到不重啓redis服務,從RDB持久化切換爲AOF

  • 查看redis版本

    [root@xujunk s21redis]#redis-server -v
    Redis server v=4.0.10 sha=00000000:0 malloc=jemalloc-4.0.3 bits=64 build=f4e8cdb9b08f1cb0
  • rdb模式下的redis持久化,不重啓切換爲 aof模式

    • 手動操做:

      redis內切換:
      config set appendonly yes
      config set save ""
    • 環境準備:更改s21_rdb.conf配置

      #準備rdb配置文件
          daemonize yes
          port 6379
          logfile /data/6379/redis.log
          dir /data/6379                    #定義持久化文件存儲位置/data/6379
          #dbfilename  s21redis.rdb               #rdb持久化文件s21redis.rdb
          bind  127.0.0.1          #redis綁定地址
          #save 900 1                           #
          #save 200 10 #在200秒中內,超過10個修改類的操做
          save  20  2  
          appendonly yes
          appendfsync always
    • 刪除rdb保存文件

      [root@xujunk 6379]#rm -rf dump.rdb
    • 重啓redis server端部

      [root@xujunk 6379]#redis-server /opt/s21redis/s21_rdb.conf
    • 啓動客戶端

      [root@xujunk 6379]#redis-cli
      127.0.0.1:6379> keys *
      1) "name"
      #在沒有重啓redis-server端實現RDB---->AOF(切換)
    • 詳情看博客:https://www.cnblogs.com/pyyu/p/10061526.html
    • 注意想要永久切換爲aof,還得修改配置文件方可

相關文章
相關標籤/搜索