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庫按期備份;
結束