Redis配置文件redis.conf 詳解前端
1.基本配置node
內存單位的表示linux
# 1k => 1000 bytes
# 1kb => 1024 bytes
# 1m => 1000000 bytes
# 1mb => 1024*1024 bytes
# 1g => 1000000000 bytes
# 1gb => 1024*1024*1024 bytesredis
單位中不區分大小寫1GB 1Gb 1gB是同樣的算法
後臺運行,yes是後臺運行,no前臺運行,將輸出,輸出到終端(默認)數據庫
daemonize yes安全
若是daemonize參數爲yes的話就會產生pid文件,一下是pid文件的定義服務器
pidfile /usr/local/redis-master/run/redis.pid網絡
監聽的端口數據結構
port 6379
綁定監聽的IP地址
bind 127.0.0.1
若是在本地調用redis能夠直接用sock文件
unixsocket /tmp/redis.sock //sock文件的位置
unixsocketperm 755 //sock文件的權限
若是一個連接在N秒內是空閒的,就將其關閉
timeout 0
若是對方down了或者中間網絡斷了發送ACK到客戶端在指定的時間內沒有收到對方的迴應就斷開TCP連接(時間單位秒記),此參數會受到內核參數的影響,推薦配置60。
tcp-keepalive 0
指定輸出消息的級別
# debug (調試級別,詳細信息,信息量大)
# verbose (詳細信息,信息量較大)
# notice (通知,生產環境推薦)
# warning (錯誤信息警告信息)
loglevel notice
日誌輸出文件,默認在前端運行的時候此key的默認值是stdout輸出到終端,若是用守護進程運行此key的stdout的時候將日誌輸入到/dev/null,若是想記錄日誌,就必須爲其指定logfile位置
logfile /var/log/redis.log
將日誌記錄的哦syslog
syslog-enabled no
指定syslog的身份
syslog-ident redis
指定syslog的級別,必須是LOCAL0-LOCAL7之間
syslog-facility local0
設置數據庫的數量
databases 16
設置數據庫的數量。默認數據庫DB 0,你能夠選擇一個不一樣的per-connection的使用SELECT<dbid>這兒的DBID是一個介於0和'databases'-1
databases 16
2.快照配置
將DB保存到磁盤的規則定義(快照)
格式:save <seconds> <changes>
例子:save 900 1 //在900秒(15分鐘)內若是至少有1個鍵值發生變化 就保存
save 300 10 //在300秒(6分鐘)內若是至少有10個鍵值發生變化 就保存
save 900 1 //每一條表示一個存盤點
save 300 10
save 60 10000
若是啓用如上的快照(RDB),在一個存盤點以後,可能磁盤會壞掉或者權限問題,redis將依然能正常工做
stop-writes-on-bgsave-error yes
是否將字符串用LZF壓縮到.rdb 數據庫中,若是想節省CPU資源能夠將其設置成no,可是字符串存儲在磁盤上佔用空間會很大,默認是yes
rdbcompression yes
rdb文件的校驗,若是校驗將避免文件格式壞掉,若是不校驗將在每次操做文件時要付出校驗過程的資源新能,將此參數設置爲no,將跳過校驗
rdbchecksum yes
轉儲數據的文件名
dbfilename dump.rdb
redis的工做目錄,它會將轉儲文件存儲到這個目錄下,並生成一個附加文件
dir /usr/local/redis-master/db
3.主從參數
若是本地是salve服務器那麼配置該項
# slaveof <masterip> <masterport>
slaveof 127.0.0.1 65532
master的驗證密碼
masterauth <master-password>
當從主機脫離主的連接時,若是此值爲yes當客戶端查詢從時,迴響應客戶端,若是是第一次同步回返回一個日期數據或這空值,若是設置爲no,則返回「SYNC with master in progress」到INFO and SLAVEOF
slave-serve-stale-data yes
從服務器只讀(默認)
slave-read-only yes
從發送ping到主的時間間隔(單位:秒)
repl-ping-slave-period 10
批量傳輸I / O超時和主數據或ping響應超時 默認60s 必須大於repl-ping-slave-period值
repl-timeout 60
此選項若是是「yes」那麼Redis的使用數量較少的TCP數據包和更少的帶寬將數據發送到,在從主機上延遲40毫秒(linux kernel中的40毫秒)出現。若是是no將在slave中減小延遲,可是流量使用回相對多一些,若是用多個從主機,此處建議設置成yes
repl-disable-tcp-nodelay no
從主機的優先級,若是當主主機掛了的時候,將從從主機中選取一個做爲其餘從機的主,首先優先級的數字最低的將成爲主,0是一個特殊的級別,0將永遠不會成爲主。默認值是100.
slave-priority 100
4.安全配置
密碼本機,若是別人要求連接須要其驗證
requirepass password
命令重命名,若是更改命令可能在從服務器上出現問題
例如:rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52 //將config命令命名成b840fc02d524045429941cc15f59e41cb7be6c52
rename-command CONFIG "" //默認是空的
5.極限
客戶端連接的最大數量
maxclients 10000
最大內存的使用 若是是主從的話,此值應該設置更低
maxmemory <bytes>
redias達到maxmemory時,如何刪除k&y
volatile-lru -> 用lru算法刪除過時的鍵值
allkeys-lru -> 用lru算法刪除全部鍵值
volatile-random -> 隨機刪除過時的鍵值
allkeys-random -> 隨機刪除任何鍵值
volatile-ttl -> 刪除最近要到期的鍵值(監控TTL)
noeviction -> 不會寫操做,返回一個錯誤
At the date of writing this commands are: set setnx setex append incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd sinter sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby getset mset msetnx exec sort
默認值例子以下:
maxmemory-policy volatile-lru
LRU和最小的TTL算法是不許確,在幾個中挑幾個來檢查近期用的最少的鍵值刪除,爲了節約內存能夠設置小點。
maxmemory-samples 3
6.append only
啓用AOF和RDB持久性,若是又一個或者多個寫入點時,在寫入點和寫入點之間的時間裏全部add的鍵值回丟失,若是啓用此特性,redis會將add的值先寫入到附加文件中,此參數默認就是啓用這個特性。
appendonly no
OAF文件的文件名
appendfilename appendonly.aof
append only文件名是由 appendfilename appendonly.aof項來定義的,redias將數據馬上些如到AOF文件中時,有三種方式:
no: 讓OS來刷新數據 快
always:每次寫入後調用函數FSYNC進行寫入 最安全的
everysec: 每一秒進行調用FSYNC進行寫入
默認值:appendfsync everysec
若是磁盤性能問題比較慢,將其設置爲yes,磁盤I/O比較寬裕則設置爲no數據比較安全。
no-appendfsync-on-rewrite no
OAF文件的寫規則
以下:若是達到64M的百分之百就中止寫入
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
7.LUA SCRIPTING
執行一個LUA腳本時的最大時間,防止死循環等等,設置爲0是沒有限制,單位爲秒
lua-time-limit 5000
8.redias的慢查詢記錄
若是大於以下值的執行命令進行記錄,默認是10000,單位是微妙(1000000微秒 == 1秒),設置爲一個負數時,警用此記錄,設置爲0時,記錄任何執行命令
slowlog-log-slower-than 10000
此值的大小會影響內存的大小,回收內存能夠用SLOWLOGRESET
slowlog-max-len 128
9.高級配置
Hash編碼使用高速內存數據結構的條目閾值
若是redisObject的type 成員值是 REDIS_LIST 類型的,則當該list 的 elem數小於配置值: hash-max-ziplist-entries 或者elem_value字符串的長度小於 hash-max-ziplist-value, 則能夠編碼成 REDIS_ENCODING_ZIPLIST 類型存儲,以節約內存. 不然採用 Dict 來存儲.
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
相同哈希值的列表能夠用特殊的表示方式存儲,以節約空間,閾值設置以下
如 type 是 REDIS_LIST 類型的,若是其 entry 小於配置值: list-max-ziplist-entries 或 value字符串的長度小於 list-max-ziplist-value,則能夠編碼成 REDIS_ENCODING_ZIPLIST 類型存儲,以節約內存; 不然採用 REDIS_ENCODING_LINKEDLIST 來存儲
list-max-ziplist-entries 512
list-max-ziplist-value 64
# Sets have a special encoding in just one case: when a set is composed
# of just strings that happens to be integers in radix 10 in the range
# of 64 bit signed integers.
# The following configuration setting sets the limit in the size of the
# set in order to use this special memory saving encoding.
如 type 是 REDIS_SET 類型的,若是其值能夠表示成數字類型且 entry 小於配置值set-max-intset-entries, 則能夠編碼成 REDIS_ENCODING_INTSET 類型存儲,以節約內存; 不然採用 Dict類型來存儲
set-max-intset-entries 512
相同的hash列表中,排序列表的元素和長度都不能高於以下值
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
重建hash表的時候若是內存不足 若是此值設置爲no則延時,若是爲yes則儘快釋放內存。
activerehashing yes
客戶端buffer限制,若是達到硬限制則馬上斷開
三種客戶端
# normal -> 正常客戶端
# slave -> 從客戶端或者監控客戶端
# pubsub -> 訂閱或者發佈客戶端
客戶端限制的語法以下
client-output-buffer-limit <class> <hard limit> <soft limit> <soft seconds>
默認以下
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60 //slave客戶端 buffer硬限制爲256M,軟限制爲64MB/60秒 就斷開鏈接
client-output-buffer-limit pubsub 32mb 8mb 60
一個任務可使用的cpu數目
hz 10
10.配置文件include
例子:
# include /path/to/local.conf# include /path/to/other.conf