Redis
是一種內存型數據庫,一旦服務器進程退出,數據庫的數據就會丟失,爲了解決這個問題,Redis
提供了兩種持久化的方案,將內存中的數據保存到磁盤中,避免數據的丟失。redis提供了RDB持久化的功能,這個功能能夠將redis在內存中的狀態數據保存到磁盤html
觸發機制:python
配置文件:s21_rdb.confmysql
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 #
[root@xujunk s21redis]#mkdir -p /data/6379/
[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 """
[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個文件。
pkill -9 redis
[root@xujunk s21redis]#redis-server s21_rdb.conf [root@xujunk s21redis]#redis-cli 127.0.0.1:6379> keys * 1) "name2" 2) "name3" #此時數據達到持久化存儲
AOF機制,將你的修改類操做命令,追加到日誌文件中redis
追加文件:用在文件末尾追加記錄的方式,對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
本文在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(切換)
注意想要永久切換爲aof,還得修改配置文件方可