redis.conf配置文件参数详解node
# Redis configuration file example. ########################################## GENERAL ######################################## daemonize yes #是否开启在后台运行redis,默认为no,不开启 pidfile /var/run/redis/redis.pid #redis在后台运行时,默认pid文件的存放路径和文件名 port 6379 #redis运行监听端口号,默认6379 tcp-backlog 511 #listen队列的长度,这个跟系统自己的 bind 127.0.0.1 #绑定IP地址 unixsocket /tmp/redis.sock #unix指定监听socket unixsocketperm 755 #当指定监听为socket时,能够指定其权限为755 timeout 0 #设置客户端链接时的超时时间,单位为秒。当客户端在这段时间内没有发出任何指令,那么关闭该链接,0是关闭此设置 tcp-keepalive 0 #TCP keepalive.若是是非零值,当失去连接时,会使用SO_KEEPALIVE发送TCP ACKs到客户端。这个参数有两个做用:1.检测断点;2.从网络中间设备来看,就是保持连接。在Linux上,设定的时间就是发送ACKs的周期。注意:达到双倍的设定时间才会关闭连接。在其余内核上,周期依赖于内核设置。一个比较合理的值为60s loglevel notice #指定日志级别,debug用于开发/测试;verbose没debug那么详细;notice适用于生产线上,warning只记录很是重要的信息 logfile /var/log/redis/redis.log #日志文件名,以及路径 database 16 #默认值为16,默认数据库为0,数据库范围在0-(database-1)之间 ###################################### SNAPSHOTTING##################################### #save 900 1 #15分钟内有至少1个键被更改则进行快照 #save 300 10 #5分钟内有至少10个键被更改则进行快照 #save 60 10000 #一分钟内有至少10000个键被更改则进行快照 save "" #表示禁用RDB持久化 stop-writes-on-bgsave-error yes #表示写入磁盘时出现错误时,是否中止写入,yes,表示中止,no表示继续。 rdbcompression yes #表示是否要压缩RDB rdbchecksum yes #表示是否进行数据校验 dbfilename dump.rdb #默认RDB持久化备份文件名 dir /var/lib/redis/ #定义RDB存放路径 slaveof <masterip> <masterport> #主从复制,当本机是slave时配置 masterauth <master-password> #当主机须要密码验证的时候配置 slave-serve-stale-data yes #当slave和master丢失连接,或正处于同步过程当中,是否响应客户端请求,设置为yes表示响应,设置为no,直接返回"SYNC with master in progress"(正在和主服务器同步中) slave-read-only yes #设置slave是否为只读 repl-diskless-sync no #disk较慢,而且网络较快的时候,能够用diskless repl-diskless-sync-delay 5 #设置成0的话,传输开始asap repl-disable-tcp-nodelay no #SYNC完毕后,在slave的socket里关闭TCP_NODELAY;若是是yes,reids发送少许的TCP包给slave,但可能致使最高40ms的数据延迟;若是是no,那可能在复制的时候,会消耗少许带宽;默认咱们是为了低延迟优化而设置成no,若是主从之间有不少网络跳跃,那设置成yes吧 repl-backlog-size 100mb #值越大,salve能够丢失的时间就越长。 repl-backlog-ttl 3600 #多久释放backlog,当确认master再也不须要slave的时候,多久释放。0是永远不释放。 slave-priority 100 #当master不可用,Sentinel会根据slave的优先级选举一个master。最低的优先级的slave,当选master.而配置成0,永远不会被选举。(必须≥0)。默认是100 requirepass foobared #设置客户端链接密码,由于Redis响应速度能够达到每秒100w次,因此密码要特别复杂 rename-command CONFIG "" #命令从新命名,或者禁用;重命名命令为空字符串能够禁用一些危险命,令好比:FLUSHALL删除全部数据,须要注意的是,写入AOF文件或传送给slave的命令别名也许会引发一些问题 maxclients 10000 #设置最多连接客户端数量,默认为10000;实际能够接受的请求数目为设置值减去32,这32是Redis为内部文件描述符保留的 maxmemory <bytes> #设置最大使用内存数量,在把Redis看成LRU缓存时特别有用。设置的值要比系统能使用的值要小,由于当启用删除算法时,slave输出缓存也要占用内存 达到最大内存限制时,使用何种删除算法 #volatile-lru -> 使用LRU算法移除带有过时标致的key #allkeys-lru -> 使用LRU算法移除任何key #volatile-random -> 随机移除一个带有过时标致的key #allkeys-random -> 随机移除一个key #volatile-ttl -> 移除最近要过时的key #noeviction -> 不删除key,当有写请求时,返回错误 maxmemory-policy volatile-lru #默认设置为volatile-lru maxmemory-samples 3 #LRU和minimal TTL 算法都不是精准的算法,可是相对精确的算法(为了节省内存),随意你能够选择样本大小进行检测。Redis默认的会选择3个样本进行检测 appendonly no #默认状况下,redis没有开启AOF方式的持久化,开启AOF持久化须要把no变为yes appendfilename "appendonly.aof" AOF的保存名称,默认为appendonly.aof # Redis supports three different modes: redis支持三种AOF文件持久化策略: # no: don't fsync, just let the OS flush the data when it wants. Faster. #表示由操做系统决定什么时候写入。性能最好,但可靠性最低 # always: fsync after every write to the append only log. Slow, Safest. 表示每次都写入磁盘。性能最差,比上面的安全一些 # everysec: fsync only one time every second. Compromise. 表示每秒执行一次写入。折中方案,推荐 appendfsync everysec #AOF持久化方案,选择everysec,每秒执行一次写入 no-appendfsync-on-rewrite no #设置为yes表示rewrite期间对新写操做不fsync,暂时存在内存中,等rewrite完成后再写入。 auto-aof-rewrite-percentage 100 #指定Redis重写aof文件的条件,默认为100,表示与上次rewrite的aof文件大小相比,当前aof文件增加量超过上次aof文件大小的100%时,就会触发background rewrite。若配置为0,则会禁用自动rewrite。 auto-aof-rewrite-min-size 64mb 指定触发rewrite的aof文件大小。若aof文件小于该值,即便当前文件的增量比例达到auto-aof-rewrite-percentage的配置值,也不会触发自动rewrite。即这两个配置项同时知足时,才会触发rewrite。 # AOF自动重写(合并命令,减小日志大小) # 当AOF日志大小增长到一个特定比率,Redis调用BGREWRITEAOF自动重写日志文件 # 原理:Redis会记录上次重写后AOF文件的文件大小。 # 若是刚启动,则记录启动时AOF大小 # 这个基本大小会用来和当前大小比较。若是当前大小比特定比率大,就会触发重写。 # 你也须要指定一个AOF须要被重写的最小值,这样会避免达到了比率。 # 可是AOF文件还很小的状况下重写AOF文件,设置为0禁用自动重写 aof-load-truncated yes #AOF文件可能在尾部是不完整的(上次系统关闭有问题,尤为是mount、ext4文件系统时没有加上data=ordered选项,只会发生在os崩溃时,redis本身死不会不完整。)那redis重启时load进内存的时候就有问题了。发生的时候,能够选择reids启动报错,或者load尽可能多正常的数据。若是aof-load-truncated是yes,会自动发布一个log给客户端而后load(默认)。若是是no,用户必须手动reids-check-aof修复AOF文件才能够。 lua-time-limit 5000 #Lua脚本的最大执行时间,单位毫秒,超时后会报错,而且计入日志;当一个脚本运行时间超过了最大执行时间,只有SCRIPT KILL和 SHUTDOWN NOSAVE两个命令可使用;SCRIPT KILL用于中止没有调用写命令的脚本。SHUTDOWN NOSAVE是惟一的一个,在脚本的写命令正在执行用户又不想等待脚本正常结束的状况下,关闭服务器的方法。如下选项设置为0或负数就会取消脚本执行时间限制 slowlog-log-slower-than 10000 #Redis慢查询日志记录超过设定时间的查询,且只记录执行命令的时间,不记录I/O操做,好比:和客户端交互,发送回复等;时间单位为微妙,1000000微妙 = 1 秒;设置为负数会禁用慢查询日志,设置为0会记录全部查询命令 slowlog-max-len 128 #日志长度没有限制,可是会消耗内存。超过日志长度后,最旧的记录会被移除,使用SLOWLOG RESET命令能够回收内存 latency-monitor-threshold 0 #用LATENCY打印redis实例在跑命令时的耗时图表,只记录大于等于下边设置的值的操做。0的话,就是关闭监视。能够动态开启,直接运行CONFIG SET latency- monitor-threshold notify-keyspace-events "" #能够通知pub/sub客户端关于key空间的变化。 # 好比若是开着开关。一个client进行了DEL操做在“foo”key上在database0上。两个消息将会发布经过 pub/sub # PUBLISH __keyspace@0__:foo del # PUBLISH __keyevent@0__:del foo # 大部分人不须要这个功能,而且还须要必定开销,因此默认关闭。 hash-max-ziplist-entries 512 hash-max-ziplist-value 64 # 当有少许条目的时候,哈希使用高效内存数据结构。最大的条目也不能超过设定的阈值。 #和哈希编码同样,少许列表也以特殊方式编码节省内存。“少许”设定以下: list-max-ziplist-entries 512 list-max-ziplist-value 64 # 集合只在如下状况下使用特殊编码来节省内存 # -->集合所有由64位带符号10进制整数构成的字符串组成 # 下面的选项设置这个特殊集合的大小。 set-max-intset-entries 512 # 当有序集合的长度和元素设定为如下数字时,又特殊编码节省内存 zset-max-ziplist-entries 128 zset-max-ziplist-value 64 hll-sparse-max-bytes 3000 HyperLogLog不懂。大于16000彻底不可接受!当CPU很顶得住的话,给10000能够。默认给3000. activerehashing yes #哈希刷新使用每100个CPU毫秒中的1毫秒来帮助刷新主哈希表(顶级键值映射表);Redis哈希表使用延迟刷新机制,越多操做,越多刷新.若是服务器空闲,刷新操做就不会进行,更多内存会被哈希表占用默认每秒进行10次主字典刷新,释放内存。若是你有硬性延迟需求,偶尔2毫秒的延迟没法忍受的话。设置为no,不然设置为yes #客户端输出缓存限制强迫断开读取速度比较慢的客户端 #有三种类型的限制 #normal -> 正常的客户端包括监控客户端 #slave -> 从客户端 # pubsub -> 客户端至少订阅了一个频道或者模式 # 客户端输出缓存限制语法以下(时间单位:秒) # client-output-buffer-limit <类别> <强制限制> <软性限制> <软性时间> # 达到强制限制缓存大小,马上断开连接。 # 达到软性限制,仍然会有软性时间大小的连接时间 # 默认正常客户端无限制,只有请求后,异步客户端数据请求速度快于它能读取数据的速度 # 订阅模式和主从客户端又默认限制,由于它们都接受推送。 # 强制限制和软性限制均可以设置为0来禁用这个特性 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后台任务执行频率,好比清除过时键任务。 # 设置范围为1到500,默认为10.越大CPU消耗越大,延迟越小。 # 建议不要超过100 aof-rewrite-incremental-fsync yes # 当子进程重写AOF文件,如下选项开启时,AOF文件会每产生32M数据同步一次。 # 这有助于更快写入文件到磁盘避免延迟