redis配置文件詳解


1、include

解釋:引入其它配置文件。比如說當你有多個server,而有一些配置項是它們公用的,那么你可以將這些公用的配置項寫進一個配置文件common.conf里,然后這些server再include這個配置文件,這些server自己的配置項則分別寫在自己的配置文件里。

示例:include /path/to/common.conf

2、loadmodule

解釋:此配置項尚未了解。注釋是這樣的:啟動時加載模塊,如果server無法加載模塊,則此配置會被忽略。可以使用多個loadmodule。
示例:loadmodule /path/to/my_module.so

3、bind

解釋:默認情況下,redis 在 server 上所有有效的網絡接口上監聽客戶端連接。如果只想讓它在一個或多個網絡接口上監聽,那你就綁定一個IP或者多個IP。多個ip空格分隔即可。

示例: bind 192.168.1.100 10.0.0.1
bind 127.0.0.1 ::1

4、protected-mode

解釋:當開啟后,禁止公網訪問redis。它啟用的條件有兩個,第一是沒有使用bind,第二是沒有設置訪問密碼。

示例:protected-mode yes

5、port

解釋:指定該redis server監聽的端口號。默認是6379,如果指定0則不監聽。

示例:port 6379

6、tcp-backlog

解釋:此參數確定了TCP連接中已完成隊列(完成三次握手之后)的長度, 當然此值必須不大於Linux系統定義的/proc/sys/net/core/somaxconn值,默認是511,而Linux的默認參數值是128。當系統並發量大並且客戶端速度緩慢的時候,可以將這二個參數一起參考設定。
示例:tcp-backlog 511
7、unixsocket
解釋:指定 unix socket 的路徑。
示例:unixsocket /tmp/redis.sock
8、unixsocketperm
解釋:指定 unix socket file 的權限。

示例:unixsocketperm 755
9、timeout

解釋:當客戶端閑置多少秒后關閉連接,如果設置為0表示關閉該功能。

示例:timeout 30
10、tcp-keepalive
解釋:單位是秒,表示將周期性的使用SO_KEEPALIVE檢測客戶端是否還處於健康狀態,避免服務器一直阻塞,官方給出的建議值是300S
示例:tcp-keepalive 300

11、daemonize

解釋:是否以守護模式啟動,默認為no,配置為yes時以守護模式啟動,這時redis instance會將進程號pid寫入默認文件/var/run/redis.pid。

示例:daemonize yes

12、supervised
解釋:可以通過upstart和systemd管理Redis守護進程,這個參數是和具體的操作系統相關的。

示例:supervised no

13、pidfile
解釋:配置pid文件路徑。當redis以守護模式啟動時,如果沒有配置pidfile,pidfile默認值是/var/run/redis.pid 。
示例:pidfile /var/run/redis_6379.pid

14、loglevel

解釋:日志級別。可選項有:debug(記錄大量日志信息,適用於開發、測試階段); verbose(較多日志信息); notice(適量日志信息,使用於生產環境);warning(僅有部分重要、關鍵信息才會被記錄)。

示例:loglevel notice

15、logfile
解釋:日志文件的位置,當指定為空字符串時,為標准輸出,如果redis已守護進程模式運行,那么日志將會輸出到 /dev/null 。

示例:logfile ""

16、syslog-enabled

解釋:是否把日志記錄到系統日志。(何意?)
示例:syslog-enabled no
17、syslog-ident

解釋:設置系統日志的id

示例:syslog-ident redis
18、syslog-facility
解釋:指定syslog設備(facility),必須是user或則local0到local7。

示例:syslog-facility local0

19、databases

解釋:設置數據庫的數目。默認的數據庫是DB 0 ,可以在每個連接上使用select <dbid> 命令選擇一個不同的數據庫,dbid是一個介於0到databases - 1 之間的數值。
示例:databases 16

 

20、save

解釋:保存數據到磁盤。格式是:save <seconds> <changes> ,含義是在 seconds 秒之后至少有 changes個keys 發生改變則保存一次。

示例:save 900 1
save 300 10
save 60 10000

21、stop-writes-on-bgsave-error

解釋:默認情況下,如果 redis 最后一次的后台保存失敗,redis 將停止接受寫操作,這樣以一種強硬的方式讓用戶知道數據不能正確的持久化到磁盤, 否則就會沒人注意到災難的發生。 如果后台保存進程重新啟動工作了,redis 也將自動的允許寫操作。然而你要是安裝了靠譜的監控,你可能不希望 redis 這樣做,那你就改成 no 好了。
示例:stop-writes-on-bgsave-error no

22、rdbcompression

解釋:是否在dump .rdb數據庫的時候壓縮字符串,默認設置為yes。如果你想節約一些cpu資源的話,可以把它設置為no,這樣的話數據集就可能會比較大。

示例:rdbcompression yes
23、rdbchecksum
解釋:是否CRC64校驗rdb文件,會有一定的性能損失(大概10%)。

示例:rdbchecksum yes

24、dbfilename

解釋:rdb文件的名字。

示例:dbfilename dump.rdb
25、dir
解釋:數據庫存放目錄。必須是一個目錄,aof文件也會保存到該目錄下。

示例:dir ./
26、slaveof

解釋:設置本機為slave服務。格式:slaveof <masterip> <masterport>。設置master服務的IP地址及端口,在Redis啟動時,它會自動從master進行數據同步。

示例:slaveof 192.168.0.1 6379

27、masterauth
解釋:當master服務設置了密碼保護時,slav服務連接master的密碼。

示例:masterauth 123456
28、slave-serve-stale-data

解釋:當一個slave與master失去聯系時,或者復制正在進行的時候,slave應對請求的行為:1) 如果為 yes(默認值) ,slave 仍然會應答客戶端請求,但返回的數據可能是過時,或者數據可能是空的在第一次同步的時候;2) 如果為 no ,在你執行除了 info 和 salveof 之外的其他命令時,slave 都將返回一個 "SYNC with master in progress" 的錯誤。
示例:slave-serve-stale-data yes
29、slave-read-only

解釋:設置slave是否是只讀的。從2.6版起,slave默認是只讀的。

示例:slave-read-only yes

30、repl-diskless-sync
解釋:主從數據復制是否使用無硬盤復制功能。

示例:repl-diskless-sync no

31、repl-ping-slave-period

解釋:指定slave定期ping master的周期,默認10秒鍾。

示例:repl-ping-slave-period 10

32、repl-timeout

解釋:設置主庫批量數據傳輸時間或者ping回復時間間隔,默認值是60秒 。
示例:repl-timeout 60
33、repl-disable-tcp-nodelay
解釋:指定向slave同步數據時,是否禁用socket的NO_DELAY選 項。若配置為“yes”,則禁用NO_DELAY,則TCP協議棧會合並小包統一發送,這樣可以減少主從節點間的包數量並節省帶寬,但會增加數據同步到 slave的時間。若配置為“no”,表明啟用NO_DELAY,則TCP協議棧不會延遲小包的發送時機,這樣數據同步的延時會減少,但需要更大的帶寬。 通常情況下,應該配置為no以降低同步延時,但在主從節點間網絡負載已經很高的情況下,可以配置為yes。

示例:repl-disable-tcp-nodelay no
34、repl-backlog-size

解釋:設置主從復制backlog容量大小。這個 backlog 是一個用來在 slaves 被斷開連接時存放 slave 數據的 buffer,所以當一個 slave 想要重新連接,通常不希望全部重新同步,只是部分同步就夠了,僅僅傳遞 slave 在斷開連接時丟失的這部分數據。這個值越大,salve 可以斷開連接的時間就越長。

示例:repl-backlog-size 1mb

35、repl-backlog-ttl
解釋:配置當master和slave失去聯系多少秒之后,清空backlog釋放空間。當配置成0時,表示永遠不清空。

示例:repl-backlog-ttl 3600

36、slave-priority
解釋:當 master 不能正常工作的時候,Redis Sentinel 會從 slaves 中選出一個新的 master,這個值越小,就越會被優先選中,但是如果是 0 , 那是意味着這個 slave 不可能被選中。 默認優先級為 100。

示例:slave-priority 100
37、requirepass

解釋:設置redis連接密碼。

示例:requirepass foobared
38、rename-command
解釋:將命令重命名。為了安全考慮,可以將某些重要的、危險的命令重命名。當你把某個命令重命名成空字符串的時候就等於取消了這個命令。

示例:rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52

rename-command CONFIG ""
39、maxclients

解釋:設置客戶端最大並發連接數,默認無限制,Redis可以同時打開的客戶端連接數為Redis進程可以打開的最大文件描述符數-32(redis server自身會使用一些),如果設置 maxclients 0,表示不作限制。當客戶端連接數到達限制時,Redis會關閉新的連接並向客戶端返回max number of clients reached錯誤信息。

示例:maxclients 10000
40、maxmemory
解釋: 指定Redis最大內存限制,Redis在啟動時會把數據加載到內存中,達到最大內存后,Redis會先嘗試清除已到期或即將到期的Key,當此方法處理 后,仍然到達最大內存設置,將無法再進行寫入操作,但仍然可以進行讀取操作。Redis新的vm機制,會把Key存放內存,Value會存放在swap區,格式:maxmemory <bytes> 。

示例:maxmemory 1024000

41、maxmemory-policy
解釋:當內存使用達到最大值時,redis使用的清楚策略。有以下幾種可以選擇(明明有6種,官方配置文件里卻說有5種可以選擇?):

1)volatile-lru 利用LRU算法移除設置過過期時間的key (LRU:最近使用 Least Recently Used )
2)allkeys-lru 利用LRU算法移除任何key

3)volatile-random 移除設置過過期時間的隨機key

4)allkeys-random 移除隨機key
5)volatile-ttl 移除即將過期的key(minor TTL)

6)noeviction noeviction 不移除任何key,只是返回一個寫錯誤 。默認選項
示例:maxmemory-policy noeviction

42、maxmemory-samples
解釋:LRU 和 minimal TTL 算法都不是精准的算法,但是相對精確的算法(為了節省內存),隨意你可以選擇樣本大小進行檢測。redis默認選擇3個樣本進行檢測,你可以通過maxmemory-samples進行設置 樣本數。

示例:maxmemory-samples 5
43、appendonly

解釋:是否啟用aof持久化方式 。即是否在每次更新操作后進行日志記錄,默認配置是no,即在采用異步方式把數據寫入到磁盤,如果不開啟,可能會在斷電時導致部分數據丟失。

示例:appendonly no

44、appendfilename

解釋:更新日志文件名,默認值為appendonly.aof 。

示例:appendfilename "appendonly.aof"
45、appendfsync

解釋:aof文件刷新的頻率。有三種:

1)no 依靠OS進行刷新,redis不主動刷新AOF,這樣最快,但安全性就差。
2) always 每提交一個修改命令都調用fsync刷新到AOF文件,非常非常慢,但也非常安全。
3) everysec 每秒鍾都調用fsync刷新到AOF文件,很快,但可能會丟失一秒以內的數據。
示例:appendfsync everysec
46、no-appendfsync-on-rewrite
解釋:指定是否在后台aof文件rewrite期間調用fsync,默認為no,表示要調用fsync(無論后台是否有子進程在刷盤)。Redis在后台寫RDB文件或重寫AOF文件期間會存在大量磁盤IO,此時,在某些linux系統中,調用fsync可能會阻塞。

示例:no-appendfsync-on-rewrite no

47、auto-aof-rewrite-percentage

解釋:當AOF文件增長到一定大小的時候Redis能夠調用 BGREWRITEAOF 對日志文件進行重寫 。當AOF文件大小的增長率大於該配置項時自動開啟重寫。

示例:auto-aof-rewrite-percentage 100

48、auto-aof-rewrite-min-size

 

解釋:當AOF文件增長到一定大小的時候Redis能夠調用 BGREWRITEAOF 對日志文件進行重寫 。當AOF文件大小大於該配置項時自動開啟重寫。

示例:auto-aof-rewrite-min-size 64mb

49、aof-load-truncated
解釋:redis在啟動時可以加載被截斷的AOF文件,而不需要先執行 redis-check-aof 工具。

示例:aof-load-truncated yes

50、lua-time-limit

解釋:一個Lua腳本最長的執行時間,單位為毫秒,如果為0或負數表示無限執行時間,默認為5000。

示例:lua-time-limit 5000

 

 

Redis 的 master/slave 復制:

Redis 的 master/slave 數據復制方式可以是一主一從或者是一主多從的方式,Redis 在
master 是非阻塞模式,也就是說在 slave 執行數據同步的時候,master 是可以接受客戶端的
請求的,並不影響同步數據的一致性,然而在 slave 端是阻塞模式的,slave 在同步 master
數據時,並不能夠響應客戶端的查詢
Redis 的 master/slave 模式下,master 提供數據讀寫服務,而 slave 只提供讀服務

Redis 的 master/slave 的配置方式是在 slave 主機的 Redis 目錄下的 redis.conf 配置文件中
添加:
slaveof master_ip master_port

例如:
我們配置我們的 slave 為:redis-slave.conf
daemonize yes
pidfile redis-slave.pid
port 6380
timeout 300
loglevel verbose
logfile stdout
databases 16
save 900 1
save 300 10
save 60 10000
rdbcompression yes
dbfilename dump-slave.rd

dir /home/falcon/redis-2.0.0/
slaveof 127.0.0.1 6379
appendonly no
appendfsync everysec
vm-enabled no
vm-swap-file logs/redis-slave.swap
vm-max-memory 0
vm-page-size 32

m-pages 134217728
vm-max-threads 4
glueoutputbuf yes
hash-max-zipmap-entries 64
hash-max-zipmap-value 512
activerehashing yes

啟動 slave:

./redis-server redis_slave.conf

查看狀態信息: 

[root@localhost redis]# redis-cli -p 6379 info
# Server
redis_version:3.2.5
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:f194157f79ccf838
redis_mode:standalone
os:Linux 3.10.0-327.el7.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.8.5
process_id:122337
run_id:27af9a24043df2112e76f000f4eeb77b228bdbe3
tcp_port:6379
uptime_in_seconds:3300
uptime_in_days:0
hz:10
lru_clock:4136165
executable:/root/redis/./redis-server
config_file:/root/redis/redis.conf

# Clients
connected_clients:1
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0

# Memory
used_memory:1891640
used_memory_human:1.80M
used_memory_rss:2301952
used_memory_rss_human:2.20M
used_memory_peak:1891640
used_memory_peak_human:1.80M
total_system_memory:1913536512
total_system_memory_human:1.78G
used_memory_lua:37888
used_memory_lua_human:37.00K
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noeviction
mem_fragmentation_ratio:1.22
mem_allocator:jemalloc-4.0.3

# Persistence
loading:0
rdb_changes_since_last_save:0
rdb_bgsave_in_progress:0
rdb_last_save_time:1514085572
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:0
rdb_current_bgsave_time_sec:-1
aof_enabled:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok

# Stats
total_connections_received:40
total_commands_processed:99
instantaneous_ops_per_sec:0
total_net_input_bytes:3163
total_net_output_bytes:11696852
instantaneous_input_kbps:0.02
instantaneous_output_kbps:0.00
rejected_connections:0
sync_full:1
sync_partial_ok:0
sync_partial_err:0
expired_keys:0
evicted_keys:0
keyspace_hits:37
keyspace_misses:2
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:220
migrate_cached_sockets:0

# Replication
role:master
connected_slaves:1
slave0:ip=192.168.163.130,port=6380,state=online,offset=43,lag=1
master_repl_offset:43
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:42

# CPU
used_cpu_sys:1.62
used_cpu_user:0.96
used_cpu_sys_children:0.01
used_cpu_user_children:0.00

# Cluster
cluster_enabled:0

# Keyspace
db0:keys=12,expires=0,avg_ttl=0


[root@localhost redis]# redis-cli -p 6380 info
# Server
redis_version:3.2.5
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:f194157f79ccf838
redis_mode:standalone
os:Linux 3.10.0-327.el7.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.8.5
process_id:129723
run_id:652680ee12086a8feabe4b4e74fe57a868226ee0
tcp_port:6380
uptime_in_seconds:38
uptime_in_days:0
hz:10
lru_clock:4136170
executable:/root/redis/./redis-server
config_file:/root/redis/redis_slave.conf

# Clients
connected_clients:2
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0

# Memory
used_memory:844144
used_memory_human:824.36K
used_memory_rss:2281472
used_memory_rss_human:2.18M
used_memory_peak:844144
used_memory_peak_human:824.36K
total_system_memory:1913536512
total_system_memory_human:1.78G
used_memory_lua:37888
used_memory_lua_human:37.00K
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noeviction
mem_fragmentation_ratio:2.70
mem_allocator:jemalloc-4.0.3

# Persistence
loading:0
rdb_changes_since_last_save:0
rdb_bgsave_in_progress:0
rdb_last_save_time:1514085572
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:-1
rdb_current_bgsave_time_sec:-1
aof_enabled:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok

# Stats
total_connections_received:1
total_commands_processed:4
instantaneous_ops_per_sec:0
total_net_input_bytes:303
total_net_output_bytes:1324
instantaneous_input_kbps:0.01
instantaneous_output_kbps:0.04
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:0
evicted_keys:0
keyspace_hits:0
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:0
migrate_cached_sockets:0

# Replication
role:slave
master_host:192.168.163.130
master_port:6379
master_link_status:up
master_last_io_seconds_ago:2
master_sync_in_progress:0
slave_repl_offset:57
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

# CPU
used_cpu_sys:0.02
used_cpu_user:0.02
used_cpu_sys_children:0.00
used_cpu_user_children:0.00

# Cluster
cluster_enabled:0

# Keyspace
db0:keys=12,expires=0,avg_ttl=0

 

Redis 可以做一主一從,也可以做一主多從,更可以做一主一從,在從下面掛從


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM