redis.conf 详解

daemonize no 
#默认情况下 redis 不是作为守护进程运行的,如果你想让它在后台运行,你就把它改成 yes
 
 
pidfile /var/run/redis.pid
#当redis作为守护进程运行的时候,它会写一个 pid 到 /var/run/redis.pid 文件里面
 
port 6379
#监听端口号,默认为 6379,如果你设为 0 ,redis 将不在 socket 上监听任何客户端连接

tcp-backlog 511
#TCP监听的最大容纳数量在高并发的环境下,你需要把这个值调高以避免客户端连接缓慢的问题
Linux内核会一声不响的把这个值缩小成/proc/sys/net/core/somaxconn对应的值,所以你
要修改这两个值才能达到你的预期
 
bind 127.0.0.1
#bind 192.168.1.100 10.0.0.1
#默认情况下,redis在serve上所有有效的网络接口上监听客户端连接
你如果只想让它在一个网络接口上监听,那你就绑定一个IP或者多个IP
 
 
unixsocket /dev/shm/redis.sock
unixsocketperm 777
#指定unix socket的路径 指定用来监听连接的unxi套接字的路径 这个没有默认值,
所以如果不指定的话,Redis就不会通过unix套接字来监听
/dev/shm 管理 http://www.oschina.net/question/12_79565

timeout 0
#设置客户端连接时的超时时间,单位为秒。当客户端在这段时间内没有发出任何指令,那么关闭该连接(0 就是不管它)

tcp-keepalive 0
#如果值非0,单位是秒,表示将周期性的使用SO_KEEPALIVE检测客户端是否还处于健康状态,避免服务器一直阻塞,官方给出的建议值是60S
 
loglevel notice
#Redis总共支持四个级别:debug、verbose、notice、warning。
Debug:记录很多信息,用于开发和测试;
Varbose:有用的信息,不像debug会记录那么多;
Notice:普通的verbose,常用于生产环境;
Warning:只有非常重要或者严重的信息会记录到日志;
默认是notice级别。
 
logfile ""
#日志的存储路径

databases 16
#设置数据库的个数,可以使用 SELECT <dbid>命令来切换数据库。默认使用的数据库是 0

save 900 1
save 300 10
save 60 10000
#存 DB 到磁盘:
格式:save <间隔时间(秒)> <写入次数>
根据给定的时间间隔和写入次数将数据保存到磁盘
下面的例子的意思是:
900 秒后如果至少有 1 个 key 的值变化,则保存
300 秒后如果至少有 10 个 key 的值变化,则保存
60 秒后如果至少有 10000 个 key 的值变化,则保存
 注意:你可以注释掉所有的 save 行来停用保存功能。
也可以直接一个空字符串来实现停用:
 save ""。

stop-writes-on-bgsave-error yes
#当持久化出现错误之后,是否继续提供写服务
默认情况下,如果 redis 最后一次的后台保存失败,redis 将停止接受写操作,
这样以一种强硬的方式让用户知道数据不能正确的持久化到磁盘,
否则就会没人注意到灾难的发生。如果后台保存进程重新启动工作了,redis 也将自动的允许写操作。

rdbcompression yes
#在进行数据镜像备份时,是否启用rdb文件压缩手段,默认为yes。压缩可能需要额外的cpu开支,
不过这能够有效的减小rdb文件的大,有利于存储/备份/传输/数据恢复

rdbchecksum yes
#是否校验rdb文件 读取和写入的时候是否支持CRC64校验,默认是开启的

dbfilename dump.rdb
#镜像备份文件的文件名

dir /data/redis-6379
#数据库镜像备份的文件rdb/AOF文件放置的路径。这里的路径跟文件名要分开配置是因为Redis 在进行备份时,
先会将当前数据库的状态写入到一个临时文件中,等备份完成时,再把该临时文件替换为上面所指定的文件,
而这里的临时文件和上面所配置的备份文件都会放在这个指定的路径当中。
 
slave-serve-stale-data yes
#主从复制。
使用 slaveof 来让一个 redis 实例成为另一个reids 实例的副本。
注意这个只需要在 slave 上配置。
slaveof <masterip> <masterport>
如果 master 需要密码认证,就在这里设置
masterauth <master-password>
当一个 slave 与 master 失去联系,或者复制正在进行的时候,
slave 可能会有两种表现:
1) 如果为 yes slave 仍然会应答客户端请求,但返回的数据可能是过时,或者数据可能是空的在第一次同步的时候;
2) 如果为 no 在你执行除了 info he salveof 之外的其他命令时,slave 都将返回一个 "SYNC with master in progress" 的错误;

slave-read-only yes
#设置slave为只读模式

repl-diskless-sync no
#设置无磁盘复制 即数据不写入磁盘 个人认为 保持默认即可
 
repl-diskless-sync-delay 5
#无磁盘模式下延迟复制 默认为5s

repl-disable-tcp-nodelay no
#slave与master的连接,是否禁用TCP nodelay选项。"yes"表示禁用,那么
socket通讯中数据将会以packet方式发送(packet大小受到socket buffer限制)。
可以提高socket通讯的效率(tcp交互次数),但是小数据将会被buffer,不会被立即
发送,对于接受者可能存在延迟。"no"表示开启tcp nodelay选项,任何数据都会
被立即发送,及时性较好,但是效率较低,建议设为no

slave-priority 100
#当 master 不能正常工作的时候,Redis Sentinel 会从 slaves 中选出一个新的 master,
这个值越小,就越会被优先选中,但是如果是 0 , 那是意味着这个 slave 不可能被选中。

appendonly no
#默认情况下,redis 会在后台异步的把数据库镜像备份到磁盘,但是该备份是非常耗时的,而且备份也不能很频繁。
所以redis 提供了另外一种更加高效的数据库备份及灾难恢复方式。开启append only 模式之后,redis 会把所接收
到的每一次写操作请求都追加到appendonly.aof 文件中,当redis 重新启动时,会从该文件恢复出之前的状态。但
是这样会造成appendonly.aof 文件过大,所以redis 还支持了BGREWRITEAOF 指令,对appendonly.aof 进行重
新整理。如果不经常进行数据迁移操作,推荐生产环境下的做法为关闭镜像,开启appendonly.aof,同时可以选择
在访问较少的时间每天对appendonly.aof 进行重写一次。
另外,对master机器,主要负责写,建议使用AOF,对于slave,主要负责读,挑选出1-2台开启AOF,其余的建议关闭
 
appendfilename "appendonly.aof"
#aof 文件名

appendfsync everysec
#设置对appendonly.aof 文件进行同步的频率。always 表示每次有写操作都进行同步,everysec 表示对
写操作进行累积,每秒同步一次。no不主动fsync,由OS自己来完成。这个需要根据实际业务场景进行配置
 
no-appendfsync-on-rewrite no
#在aof rewrite期间,是否对aof新记录的append暂缓使用文件同步策略,主要考虑磁盘IO开支和请求阻塞时间。
默认为no,表示"不暂缓",新的aof记录仍然会被立即同步
 
auto-aof-rewrite-percentage 100
#当Aof log增长超过指定比例时,重写log file, 设置为0表示不自动重写Aof 日志,重写是为了使aof体积保持最小,
而确保保存最完整的数据。
 
auto-aof-rewrite-min-size 64mb
#触发aof rewrite的最小文件尺寸
 
aof-load-truncated yes
#redis在启动时可以加载被截断的AOF文件,而不需要先执行redis-check-aof 工具,
该功能可以在 redis.conf 中配置:aof-load-truncated yes ;

lua-time-limit 5000
# lua脚本运行的最大时间
 
slowlog-log-slower-than 10000
#慢操作日志"记录,单位:微秒(百万分之一秒,1000 * 1000),如果操作时间超过此值,将会把command信息
"记录"起来.(内存,非文件)。其中"操作时间"不包括网络IO开支,只包括请求达到server后进行"内存实施"的
时间."0"表示记录全部操作。
 

slowlog-max-len 128
#"慢操作日志"保留的最大条数,"记录"将会被队列化,如果超过了此长度,旧记录将会被移除。可以通过
"SLOWLOG <subcommand> args"查看慢记录的信息(SLOWLOG get 10,SLOWLOG reset)
 

latency-monitor-threshold 0
#

notify-keyspace-events ""
#按键通知时间
 
hash-max-ziplist-entries 512
#hash类型的数据结构在编码上可以使用ziplist和hashtable。ziplist的特点就是文件存储(以及内存存储)所需的空间较小,
在内容较小时,性能和hashtable几乎一样.因此redis对hash类型默认采取ziplist。如果hash中条目的条目个数或者value
长度达到阀值,将会被重构为hashtable 这个参数指的是ziplist中允许存储的最大条目个数,默认为512,建议为128
 
hash-max-ziplist-value 64
#ziplist中允许条目value值最大字节数,默认为64,建议为1024
 
list-max-ziplist-entries 512
list-max-ziplist-value 64
#对于list类型,将会采取ziplist,linkedlist两种编码类型。解释同上。

set-max-intset-entries 512
#intset中允许保存的最大条目个数,如果达到阀值,intset将会被重构为hashtable 
 
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
#zset为有序集合,有2中编码类型:ziplist,skiplist。因为"排序"将会消耗额外的性能,当zset中数据较多时,将会被重构为skiplist。

hll-sparse-max-bytes 3000
#

activerehashing yes
# 是否开启顶层数据结构的rehash功能,如果内存允许,请开启。rehash能够很大程度上提高K-V存取的效率
 
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
#客户端buffer控制。在客户端与server进行的交互中,每个连接都会与一个buffer关联,此buffer用来队列化等待被client接受的响应信息。
如果client不能及时的消费响应信息,那么buffer将会被不断积压而给server带来内存压力.如果buffer中积压的数据达到阀值,将会导致连接被关闭,
buffer被移除。
buffer控制类型包括:normal -> 普通连接;slave ->与slave之间的连接;pubsub ->pub/sub类型连接,此类型的连接,往往会产生此种问题;因为pub端会密集的发布消息,但是sub端可能消费不足.
指令格式:client-output-buffer-limit <class> <hard> <soft> <seconds>",其中hard表示buffer最大值,一旦达到阀值将立即关闭连接;
soft表示"容忍值",它和seconds配合,如果buffer值超过soft且持续时间达到了seconds,也将立即关闭连接,如果超过了soft但是在seconds之后,buffer数据小于了soft,连接将会被保留.
其中hard和soft都设置为0,则表示禁用buffer控制.通常hard值大于soft.


hz 10
#Redis server执行后台任务的频率,默认为10,此值越大表示redis对"间歇性task"的执行次数越频繁(次数/秒)。"间歇性task"包括"过期集合"检测、关闭"空闲超时"的连接等,此值必须大于0且小于500。此值过小就意味着更多的cpu周期消耗,后台task被轮询的次数更频繁。此值过大意味着"内存敏感"性较差。建议采用默认值。
aof-rewrite-incremental-fsync yes
#aof rewrite过程中,是否采取增量文件同步策略,默认为“yes”rewrite过程中,每32M数据进行一次
文件同步,这样可以减少aof大文件写入对磁盘的操作次数
 
masterauth redispasswd
#redis 密码
#从库部署与主库相同,唯一不同之处打开如下两行文件即可;
#slaveof master-ip master-port
#masterauth 
posted @ 2015-05-21 13:08  study-notes  阅读(266)  评论(0编辑  收藏  举报