Redis配置和持久性

redis是一種K/V結構的非關係型數據庫,多應用於分佈式場景redis


redis的配置文件在上篇文章中提到過,接下來看一下此配置文件的內容
數據庫

grep ^### /etc/redis.conf                   
################################## INCLUDES ###################################   //
################################## NETWORK #####################################  //網絡配置段
################################# GENERAL #####################################   //通用配置段  
################################ SNAPSHOTTING  ################################   //快照配置段,持久性
################################# REPLICATION #################################   //複製配置段
################################## SECURITY ###################################   //安全配置段,如密碼認證
################################### LIMITS ####################################   //資源限制配置段,對鏈接數量、時間等的限定
############################## APPEND ONLY MODE ###############################   //AOF,持久化
################################ LUA SCRIPTING  ###############################   //lua腳本配置段
################################ REDIS CLUSTER  ###############################   //redis集羣配置段
################################## SLOW LOG ###################################   //慢日誌配置段
################################ LATENCY MONITOR ##############################   //
############################# EVENT NOTIFICATION ##############################   //事件通知配置段
############################### ADVANCED CONFIG ###############################   //高級配置段

GENERAL配置段centos

daemonize no  #默認不以守護進程方式運行
supervised no
pidfile /var/run/redis/redis.pid  #進程文件
loglevel notice                   #日誌級別是提醒
logfile /var/log/redis/redis.log  #日誌文件的存放路徑
databases 16
#設定數據庫數量,默認爲16個,每一個數據庫的名字均爲整數,從0開始編號,默認操做的數據庫爲0

NETWORK配置段安全

bind 127.0.0.1   #綁定的ip地址,建議修改成對外提供服務的ip地址,0.0.0.0表示監聽本機全部地址
port 6379   #默認監聽端口
protected-mode yes  #開啓保護模式,即在爲指定bind地址且未設置auth認證時啓動保護模式
tcp-backlog 511
timeout 0   #鏈接的空閒超時時長,0表示不限時長
tcp-keepalive 300   #tcp鏈接的保持時長,單位是秒

SECURITY配置段bash

requirepass centos
#默認requirepass是註釋的,咱們把註釋去掉,啓動認證功能,示例以下:

redis-cli
127.0.0.1:6379> SELECT 14
(error) NOAUTH Authentication required.
127.0.0.1:6379> AUTH centos
OK
127.0.0.1:6379> SELECT 14
OK
127.0.0.1:6379[14]> 
#配置了認證後,必須認證成功才能進行後續的操做

LIMITS配置段網絡

 maxclients 10000   #最大併發鏈接數,一旦達到此值redis就會關閉全部的新鏈接的請求
 maxmemory <bytes>   #最大內存使用空間,根據實際場景操做,單位是字節。redis是基於內存存儲的,因此此字段應當引發重視
 maxmemory-policy noeviction   #當超出最大內存空間時採起的動做,默認是提示錯誤並再也不寫入。除了noeviction還有其餘淘汰策略如volatile-lru, allkeys-lru
 maxmemory-samples 5

SLOW LOG配置段併發

slowlog-log-slower-than 10000   #單位是微秒,即當redis響應時間比此值低時就會記錄到慢日誌中
slowlog-max-len 128   #慢日誌記錄的最大條目

ADVANCED CONFIG配置段app

hash-max-ziplist-entries 512   #hash類型的鍵的最大條目
hash-max-ziplist-value 64   #hash類型的子鍵的最大存儲空間,單位是字節
#以上兩個字段保持默認便可
client-output-buffer-limit normal 0 0 0   #全0表示不作硬限制和軟限制,normal是普通客戶
client-output-buffer-limit slave 256mb 64mb 60   #硬限制是256mb,軟限制是64mb,軟限制的寬限期是60s,slave是從節點
client-output-buffer-limit pubsub 32mb 8mb 60   #若是達到硬限制或者達到軟限制而且過了寬限時間,redis就會關閉此鏈接,pubsub是隊列

以上是redis配置文件的配置項的說明,下面一塊兒來看下redis的持久化特性異步


redis的數據是存儲在內存中的,可是當設備重啓時還得從磁盤讀取數據並重構redis數據庫,這就要用到redis的持久化功能tcp

兩種持久化的實現:

RDB snapshotting

特色:

二進制格式;按事先定製的策略,週期性地將數據從內存同步至磁盤;數據文件默認爲dump.rdb

AOF ppend Only File, fsync

特色:

記錄每次寫操做至指定的文件尾部實現的持久化;當redis重啓時,可經過從新執行文件中的命令在內存中重建出數據庫;


RDB的相關配置 :SNAPSHOTTING配置段

save <seconds> <changes>
save 900 1   #在900秒內若是有1次鍵值發生改變則會觸發一次快照
save 300 10  #在300秒內若是有10次鍵值發生變化則觸發一次快照
save 60 10000   #在60秒內若是鍵值發生10000次變化則觸發一次快照
#因此RDB是按照事先制定的策略,週期性將數據從內存同步至磁盤
stop-writes-on-bgsave-error yes   #當bgsave出現錯誤時就會禁止新的寫入操做請求,bgsave後面會解釋
rdbcompression yes   #壓縮功能
rdbchecksum yes   #校驗完整性
dbfilename dump.rdb   #指定rdb文件,即快照到磁盤的文件
dir /var/lib/redis   #指定存放數據庫文件的目錄,能夠將此目錄掛載到固態磁盤上以提升IO性能

客戶端顯式使用SAVE或BGSAVE命令來手動啓動快照保存機制;
                SAVE:同步,即在主線程中保存快照,此時會阻塞全部客戶端請求,直到此步驟結束;
                BGSAVE:異步;backgroud,也能夠理解爲後臺執行,不會阻塞新的用戶請求

AOF配置:APPEND ONLY MODE配置段

appendonly no   
appendfilename "appendonly.aof"   #aof文件名稱
appendfsync everysec   #多長時間進行一次aof文件的寫入,默認是每秒寫入一次,這樣最多也就失去1秒鐘的數據,但缺點就是寫入頻繁增長了IO壓力
no-appendfsync-on-rewrite no   #是否在後臺執行aof重寫期間不調用fsync,默認爲no,表示調用。
auto-aof-rewrite-percentage 100   #當鍵值變化量達到當前鍵值量的100%時執行重寫到aof文件操做,即原鍵值數據爲100mb,當增長的鍵值數據也達到100mb纔會觸發重寫aof
auto-aof-rewrite-min-size 64mb   #重寫aof文件的最小值,即每次追加aof文件的大小至少要達到64mb

總結兩者區別:

1)RDB與AOF不會同時進行,若是同時開啓則優先選擇AOF;

2)RDB根據既定策略,週期性執行從內存同步到磁盤的操做,缺點就是不能作到時間點還原;

3)AOF在每次寫操做或者每秒鐘將內存數據追加到指定文件尾部,能夠作到時間點還原,缺點就是頻繁的IO操做;


注意:持久機制自己不能取代備份;應該制訂備份策略,對redis庫按期備份;


結束

相關文章
相關標籤/搜索