redis 配置详解

# 守护进程模式
# 默认状况下 redis 不是做为守护进程运行的,若是你想让它在后台运行,你就把它改为 yes
# 当redis做为守护进程运行的时候,它会写一个 pid 到 /var/run/redis.pid 文件里面
daemonize yes

# 当redis做为守护进程运行的时候,它会把 pid 默认写到 /var/run/redis.pid 文件里面,可是你能够在这里本身制定它的文件位置
pidfile /var/run/redis.pid
 
# 监听端口号,默认为 6379,若是你设为 0 ,redis 将不在 socket 上监放任何客户端链接。
port 6379
 
# TCP接收队列长度,受/proc/sys/net/core/somaxconn和tcp_max_syn_backlog这两个内核参数的影响
# 在高并发的环境下,你须要把这个值调高以免客户端链接缓慢的问题。
tcp-backlog 511
 
# 一个客户端空闲多少秒后关闭链接(0表明禁用,永不关闭)
timeout 0
 
# 若是非零,则设置SO_KEEPALIVE选项来向空闲链接的客户端发送ACK
# 推荐一个合理的值就是60秒
tcp-keepalive 60
 
# 指定服务器调试等级
# 可能值:
# debug (大量信息,对开发/测试有用)
# verbose (不少精简的有用信息,可是不像debug等级那么多)
# notice (适量的信息,基本上是你生产环境中须要的)
# warning (只有很重要/严重的信息会记录下来)
loglevel notice
 
# 指定日志文件名和保存位置
logfile "./redis.log"
 
# 设置数据库个数
# 默认数据库是 DB 0,你能够在每一个链接上使用 select <dbid> 命令选择一个不一样的数据库,可是 dbid 必须是一个介于 0 到 databasees - 1 之间的值
databases 16
 
#根据给定的时间间隔和写入次数将数据保存到磁盘
# 900秒(15分钟)以后,且至少1次变动
# 300秒(5分钟)以后,且至少10次变动
# 60秒以后,且至少10000次变动
save 900 1
save 300 10
save 60 10000
 
 
# 默认若是开启RDB快照(至少一条save指令)而且最新的后台保存失败,Redis将会中止接受写操做
# 这将使用户知道数据没有正确的持久化到硬盘,不然可能没人注意到而且形成一些灾难
# 若是后台保存进程从新启动工做了,redis 也将自动的容许写操做
stop-writes-on-bgsave-error yes
 
# 当导出到 .rdb 数据库时是否用LZF压缩字符串对象,默认都设为 yes
rdbcompression yes
 
# 是否校验rdb文件,版本5的RDB有一个CRC64算法的校验和放在了文件的最后。这将使文件格式更加可靠。
rdbchecksum yes
 
# 持久化数据库的文件名
dbfilename dump.rdb
 
# 工做目录
# 例如上面的 dbfilename 只指定了文件名,可是它会写入到这个目录下。这个配置项必定是个目录,而不能是文件名
dir ./
 
# 当master服务设置了密码保护时,slav服务链接master的密码
masterauth !@#$%^&*
 
# 当一个slave失去和master的链接,或者同步正在进行中,slave的行为能够有两种表现:
#
# 1) 若是 slave-serve-stale-data 设置为 "yes" (默认值),slave会继续响应客户端请求,
# 多是正常数据,或者是过期了的数据,也多是还没得到值的空数据。
# 2) 若是 slave-serve-stale-data 设置为 "no",slave会回复"正在从master同步
# (SYNC with master in progress)"来处理各类请求,除了 INFO 和 SLAVEOF 命令。
slave-serve-stale-data yes
 
# 你能够配置salve实例是否接受写操做。可写的slave实例可能对存储临时数据比较有用(由于写入salve的数据在同master同步以后将很容易被删除)
slave-read-only yes
 
# 是否在slave套接字发送SYNC以后禁用 TCP_NODELAY?
# 若是你选择“yes”Redis将使用更少的TCP包和带宽来向slaves发送数据。可是这将使数据传输到slave上有延迟,Linux内核的默认配置会达到40毫秒
# 若是你选择了 "no" 数据传输到salve的延迟将会减小但要使用更多的带宽
repl-disable-tcp-nodelay no
 
# slave的优先级是一个整数展现在Redis的Info输出中。若是master再也不正常工做了,哨兵将用它来选择一个slave提高为master
# 优先级数字小的salve会优先考虑提高为master,因此例若有三个slave优先级分别为10,100,25,哨兵将挑选优先级最小数字为10的slave。
# 0做为一个特殊的优先级,标识这个slave不能做为master,因此一个优先级为0的slave永远不会被哨兵挑选提高为master
slave-priority 100
 
# 密码验证
# 警告:由于Redis太快了,因此外面的人能够尝试每秒150k的密码来试图破解密码。这意味着你须要一个高强度的密码,不然破解太容易了
requirepass !@#$%^&*
 
# redis实例最大占用内存,不要用比设置的上限更多的内存。一旦内存使用达到上限,Redis会根据选定的回收策略(参见:maxmemmory-policy)删除key
maxmemory 3gb
 
# 最大内存策略:若是达到内存限制了,Redis如何选择删除key。你能够在下面五个行为里选:
# volatile-lru -> 根据LRU算法删除带有过时时间的key。
# allkeys-lru -> 根据LRU算法删除任何key。
# volatile-random -> 根据过时设置来随机删除key, 具有过时时间的key。
# allkeys->random -> 无差异随机删, 任何一个key。
# volatile-ttl -> 根据最近过时时间来删除(辅以TTL), 这是对于有过时时间的key
# noeviction -> 谁也不删,直接在写操做时返回错误。
maxmemory-policy volatile-lru
 
# 默认状况下,Redis是异步的把数据导出到磁盘上。这种模式在不少应用里已经足够好,但Redis进程
# 出问题或断电时可能形成一段时间的写操做丢失(这取决于配置的save指令)。
#
# AOF是一种提供了更可靠的替代持久化模式,例如使用默认的数据写入文件策略(参见后面的配置)
# 在遇到像服务器断电或单写状况下Redis自身进程出问题但操做系统仍正常运行等突发事件时,Redis
# 能只丢失1秒的写操做。
#
# AOF和RDB持久化能同时启动而且不会有问题。
# 若是AOF开启,那么在启动时Redis将加载AOF文件,它更能保证数据的可靠性。
appendonly no
 
# aof文件名
appendfilename "appendonly.aof"
 
# fsync() 系统调用告诉操做系统把数据写到磁盘上,而不是等更多的数据进入输出缓冲区。
# 有些操做系统会真的把数据立刻刷到磁盘上;有些则会尽快去尝试这么作。
#
# Redis支持三种不一样的模式:
#
# no:不要马上刷,只有在操做系统须要刷的时候再刷。比较快。
# always:每次写操做都马上写入到aof文件。慢,可是最安全。
# everysec:每秒写一次。折中方案。
appendfsync everysec
 
# 若是AOF的同步策略设置成 "always" 或者 "everysec",而且后台的存储进程(后台存储或写入AOF
# 日志)会产生不少磁盘I/O开销。某些Linux的配置下会使Redis由于 fsync()系统调用而阻塞好久。
# 注意,目前对这个状况尚未完美修正,甚至不一样线程的 fsync() 会阻塞咱们同步的write(2)调用。
#
# 为了缓解这个问题,能够用下面这个选项。它能够在 BGSAVE 或 BGREWRITEAOF 处理时阻止主进程进行fsync()。
#
# 这就意味着若是有子进程在进行保存操做,那么Redis就处于"不可同步"的状态。
# 这其实是说,在最差的状况下可能会丢掉30秒钟的日志数据。(默认Linux设定)
#
# 若是你有延时问题把这个设置成"yes",不然就保持"no",这是保存持久数据的最安全的方式。
no-appendfsync-on-rewrite yes
 
# 自动重写AOF文件
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
 
# AOF文件可能在尾部是不完整的(这跟system关闭有问题,尤为是mount ext4文件系统时
# 没有加上data=ordered选项。只会发生在os死时,redis本身死不会不完整)。
# 那redis重启时load进内存的时候就有问题了。
# 发生的时候,能够选择redis启动报错,而且通知用户和写日志,或者load尽可能多正常的数据。
# 若是aof-load-truncated是yes,会自动发布一个log给客户端而后load(默认)。
# 若是是no,用户必须手动redis-check-aof修复AOF文件才能够。
# 注意,若是在读取的过程当中,发现这个aof是损坏的,服务器也是会退出的,
# 这个选项仅仅用于当服务器尝试读取更多的数据但又找不到相应的数据时。
aof-load-truncated yes
 
# Lua 脚本的最大执行时间,毫秒为单位
lua-time-limit 5000
 
# Redis慢查询日志能够记录超过指定时间的查询
slowlog-log-slower-than 10000
 
# 这个长度没有限制。只是要主要会消耗内存。你能够经过 SLOWLOG RESET 来回收内存。
slowlog-max-len 128
 
# redis延时监控系统在运行时会采样一些操做,以便收集可能致使延时的数据根源。
# 经过 LATENCY命令 能够打印一些图样和获取一些报告,方便监控
# 这个系统仅仅记录那个执行时间大于或等于预约时间(毫秒)的操做,
# 这个预约时间是经过latency-monitor-threshold配置来指定的,
# 当设置为0时,这个监控系统处于中止状态
latency-monitor-threshold 0
 
# Redis能通知 Pub/Sub 客户端关于键空间发生的事件,默认关闭
notify-keyspace-events ""
 
# 当hash只有少许的entry时,而且最大的entry所占空间没有超过指定的限制时,会用一种节省内存的
# 数据结构来编码。能够经过下面的指令来设定限制
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
 
# 与hash似,数据元素较少的list,能够用另外一种方式来编码从而节省大量空间。
# 这种特殊的方式只有在符合下面限制时才能够用
list-max-ziplist-entries 512
list-max-ziplist-value 64
 
# set有一种特殊编码的状况:当set数据全是十进制64位有符号整型数字构成的字符串时。
# 下面这个配置项就是用来设置set使用这种编码来节省内存的最大长度。
set-max-intset-entries 512
 
# 与hash和list类似,有序集合也能够用一种特别的编码方式来节省大量空间。
# 这种编码只适合长度和元素都小于下面限制的有序集合
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
 
# HyperLogLog稀疏结构表示字节的限制。该限制包括
# 16个字节的头。当HyperLogLog使用稀疏结构表示
# 这些限制,它会被转换成密度表示。
# 值大于16000是彻底没用的,由于在该点
# 密集的表示是更多的内存效率。
# 建议值是3000左右,以便具备的内存好处, 减小内存的消耗
hll-sparse-max-bytes 3000
 
# 启用哈希刷新,每100个CPU毫秒会拿出1个毫秒来刷新Redis的主哈希表(顶级键值映射表)
activerehashing yes
 
# 客户端的输出缓冲区的限制,可用于强制断开那些由于某种缘由从服务器读取数据的速度不够快的客户端
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
 
# 默认状况下,“hz”的被设定为10。提升该值将在Redis空闲时使用更多的CPU时,但同时当有多个key
# 同时到期会使Redis的反应更灵敏,以及超时能够更精确地处理
hz 10
 
# 当一个子进程重写AOF文件时,若是启用下面的选项,则文件每生成32M数据会被同步
aof-rewrite-incremental-fsync yes
相关文章
相关标签/搜索