Redis這些知識點,是必須知道的!

Redis是一個開源(BSD許可)的內存數據結構存儲,可做爲數據庫,緩存和消息隊列。相比Memcached它支持更多的數據結構,如string(字符串),hash(哈希),list(鏈表),set(集合),zset(有序集合),位圖,hyperloglogs和具備半徑查詢的地理空間索引。Redis具備內置複製,Lua腳本,LRU回收,事務和不一樣級別的磁盤持久化,並經過Redis Sentinel提供高可用性和自動分區的Redis Cluster。 redis

   本章學習下Redis主配置文件涉及的知識點,有助於更靈活的使用它。算法

# vi redis.conf數據庫

daemonize yes     #是否之後臺進程運行緩存

pidfile/var/run/redis/redis-server.pid    #pid文件位置安全

port 6379         #監聽端口服務器

bind 127.0.0.1       #綁定地址,如外網須要鏈接,設置0.0.0.0數據結構

timeout 300       #鏈接超時時間,單位秒app

loglevel notice      #日誌級別,分別有:debug (適用於開發和測試),verbose(更詳細信息),notice(適用於生產環境),warning(只記錄警告或錯誤信息)dom

logfile/var/log/redis/redis-server.log   #日誌文件位置異步

syslog-enabled no      #是否將日誌輸出到系統日誌

databases 16        #設置數據庫數量,默認數據庫爲0

 

############### 快照方式 ###############

 

save 900 1          #在900s(15m)以後,至少有1個key發生變化,則快照

save 300 10          #在300s(5m)以後,至少有10個key發生變化,則快照

save 60 10000      #在60s(1m)以後,至少有1000個key發生變化,則快照

rdbcompression yes  #dump時是否壓縮數據

dir /var/lib/redis       #數據庫(dump.rdb)文件存放目錄

 

############### 主從複製 ###############

 

slaveof <masterip> <masterport>   #主從複製使用,用於本機redis做爲slave去鏈接主redis

masterauth <master-password>      #當master設置密碼認證,slave用此選項指定master認證密碼

slave-serve-stale-data yes         #當slave與master之間的鏈接斷開或slave正在與master進行數據同步時,若是有slave請求,當設置爲yes時,slave仍然響應請求,此時可能有問題,若是設置no時,slave會返回"SYNCwith master in progress"錯誤信息。但INFO和SLAVEOF命令除外。

 

############### 安全 ###############

 

requirepass pass  #配置redis鏈接認證密碼

 

############### 限制 ###############

 

maxclients 128      #設置最大鏈接數,0爲不限制

maxmemory <bytes> #內存清理策略,若是達到此值,將採起如下動做:

# volatile-lru :默認策略,只對設置過時時間的key進行LRU算法刪除

# allkeys-lru :刪除不常常使用的key

# volatile-random :隨機刪除即將過時的key

# allkeys-random :隨機刪除一個key

# volatile-ttl :刪除即將過時的key

# noeviction :不過時,寫操做返回報錯

maxmemory-policy volatile-lru    #若是達到maxmemory值,採用此策略

maxmemory-samples 3       #默認隨機選擇3個key,從中淘汰最不常常用的

 

############### 附加模式 ###############

 

appendonly no   #AOF持久化,是否記錄更新操做日誌,默認redis是異步(快照)把數據寫入本地磁盤

appendfilename appendonly.aof  #指定更新日誌文件名

# AOF持久化三種同步策略:

# appendfsync always     #每次有數據發生變化時都會寫入appendonly.aof

# appendfsync everysec   #默認方式,每秒同步一次到appendonly.aof

# appendfsync no        #不一樣步,數據不會持久化

no-appendfsync-on-rewrite no   #當AOF日誌文件即將增加到指定百分比時,redis經過調用BGREWRITEAOF是否自動重寫AOF日誌文件。

 

############### 虛擬內存 ###############

 

vm-enabled no     #是否啓用虛擬內存機制,虛擬內存機將數據分頁存放,把不多訪問的頁放到swap上,內存佔用多,最好關閉虛擬內存

vm-swap-file /var/lib/redis/redis.swap   #虛擬內存文件位置

vm-max-memory 0   #redis使用的最大內存上限,保護redis不會因過多使用物理內存影響性能

vm-page-size 32   #每一個頁面的大小爲32字節

vm-pages 134217728 #設置swap文件中頁面數量

vm-max-threads 4   #訪問swap文件的線程數

 

############### 高級配置 ###############

 

hash-max-zipmap-entries 512   #哈希表中元素(條目)總個數不超過設定數量時,採用線性緊湊格式存儲來節省空間

hash-max-zipmap-value 64     #哈希表中每一個value的長度不超過多少字節時,採用線性緊湊格式存儲來節省空間

list-max-ziplist-entries 512    #list數據類型多少節點如下會採用去指針的緊湊存儲格式

list-max-ziplist-value 64        #list數據類型節點值大小小於多少字節會採用緊湊存儲格式

set-max-intset-entries 512   #set數據類型內部數據若是所有是數值型,且包含多少節點如下會採用緊湊格式存儲

activerehashing yes         #是否激活重置哈希

 

小結:

Redis提供幾種持久化機制:

1、RDB(默認)

工做方式:根據上述配置文件中save參數指定的時間間隔和Key變化數量觸發快照(dump)到dump.rdb文件。

優點 :備份恢復簡單。RDB經過子進程完成快照工做,相對比AOF啓動效率高。

劣勢 :服務器故障會丟失幾分鐘內的數據。

2、AOF

工做方式 :全部更新操做以日誌的形式記錄到AOF日誌文件,在redis服務從新啓動時會讀取該日誌文件來從新構建數據庫,以保證啓動後數據完整性。

優點 :AOF提供兩種同步機制,一個是fsync always每次有數據變化就同步到日誌文件和fsync everysec每秒同步一次到日誌文件,最大限度保證數據完整性。

劣勢:日誌文件相對RDB快照文件要大的多。

AOF日誌重寫功能 :AOF日誌文件過大,redis會自動重寫AOF日誌,append模式不斷的將更新記錄寫入到老日誌文件中,同時redis還會建立一個新的日誌文件用於追加後續的記錄。

3、同時應用RDB和AOF

 對於數據安全性高的場景,可同時使用AOF和RDB,這樣會下降性能。

4、無持久化

在不要求數據持久化的業務場景,應關閉持久化,這樣會提升很大性能。 

關閉方式:在配置文件設置

appendonly no

save 「」

5、不重啓redis服務從RDB切換到AOF方式

redis-cli> CONFIGSET appendonly yes      #啓用AOF

redis-cli> CONFIGSET save ""         #關閉RDB

5、AOF日誌文件出錯後,修復方法

redis-check-aof --fix appendonly.aof  #--fix參數爲修復日誌文件,不加則對日誌檢查。

相關文章
相關標籤/搜索