redis 設定檔詳解

來源:互聯網
上載者:User

標籤:

Redis設定檔redis.conf 詳解

1.基本配置

記憶體單位的表示

# 1k => 1000 bytes
# 1kb => 1024 bytes
# 1m => 1000000 bytes
# 1mb => 1024*1024 bytes
# 1g => 1000000000 bytes
# 1gb => 1024*1024*1024 bytes

單位中不區分大小寫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

redis 設定檔詳解

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.