参考:Redis入门基础内容(转载整理非原创)html
# 注意单位: 当须要配置内存大小时, 可能须要指定像1k,5GB,4M等常见格式 # # 1k => 1000 bytes # 1kb => 1024 bytes # 1m => 1000000 bytes # 1mb => 1024*1024 bytes # 1g => 1000000000 bytes # 1gb => 1024*1024*1024 bytes # # 单位是对大小写不敏感的 1GB 1Gb 1gB 是相同的。 ##################################
INCLUDES #############################node
# 能够在这里包含一个或多个其余的配置文件。若是你有一个适用于全部Redis服务器的标准配置模板 # 但也须要一些每一个服务器自定义的设置,这个功能将颇有用。被包含的配置文件也能够包含其余配置文件, # 因此须要谨慎的使用这个功能。 # # 注意“inclue”选项不能被admin或Redis哨兵的"CONFIG REWRITE"命令重写。 # 由于Redis老是使用最后解析的配置行最为配置指令的值, 你最好在这个文件的开头配置includes来 # 避免它在运行时重写配置。 # 若是相反你想用includes的配置覆盖原来的配置,你最好在该文件的最后使用include # # include /path/to/local.conf # include /path/to/other.conf ################################
GENERAL ##############################redis
# 默认Rdis不会做为守护进程运行。若是须要的话配置成'yes' # 注意配置成守护进程后Redis会将进程号写入文件/var/run/redis.pid daemonize no # 当以守护进程方式运行时,默认Redis会把进程ID写到 /var/run/redis.pid。你能够在这里修改路径。 pidfile /var/run/redis.pid # 接受链接的特定端口,默认是6379 # 若是端口设置为0,Redis就不会监听TCP套接字。 port 6379 # TCP listen() backlog. # # 在高并发环境下你须要一个高backlog值来避免慢客户端链接问题。注意Linux内核默默地将这个值减少 # 到/proc/sys/net/core/somaxconn的值,因此须要确认增大somaxconn和tcp_max_syn_backlog # 两个值来达到想要的效果。 tcp-backlog 511 # 默认Redis监听服务器上全部可用网络接口的链接。能够用"bind"配置指令跟一个或多个ip地址来实现 # 监听一个或多个网络接口 # # 示例: # # bind 192.168.1.100 10.0.0.1 # bind 127.0.0.1 # 指定用来监听Unix套套接字的路径。没有默认值, 因此在没有指定的状况下Redis不会监听Unix套接字 # # unixsocket /tmp/redis.sock # unixsocketperm 755 # 一个客户端空闲多少秒后关闭链接。(0表明禁用,永不关闭) timeout 0 # TCP keepalive. # # 若是非零,则设置SO_KEEPALIVE选项来向空闲链接的客户端发送ACK,因为如下两个缘由这是颇有用的: # # 1)可以检测无响应的对端 # 2)让该链接中间的网络设备知道这个链接还存活 # # 在Linux上,这个指定的值(单位:秒)就是发送ACK的时间间隔。 # 注意:要关闭这个链接须要两倍的这个时间值。 # 在其余内核上这个时间间隔由内核配置决定 # # 这个选项的一个合理值是60秒 tcp-keepalive 0 # 指定服务器调试等级 # 可能值: # debug (大量信息,对开发/测试有用) # verbose (不少精简的有用信息,可是不像debug等级那么多) # notice (适量的信息,基本上是你生产环境中须要的) # warning (只有很重要/严重的信息会记录下来) loglevel notice # 指明日志文件名。也可使用"stdout"来强制让Redis把日志信息写到标准输出上。 # 注意:若是Redis以守护进程方式运行,而设置日志显示到标准输出的话,日志会发送到/dev/null logfile "" # 要使用系统日志记录器,只要设置 "syslog-enabled" 为 "yes" 就能够了。 # 而后根据须要设置其余一些syslog参数就能够了。 # syslog-enabled no # 指明syslog身份 # syslog-ident redis # 指明syslog的设备。必须是user或LOCAL0 ~ LOCAL7之一。 # syslog-facility local0 # 设置数据库个数。默认数据库是 DB 0, # 能够经过select (0 <= dbid <= 'databases' - 1 )来为每一个链接使用不一样的数据库。 databases 16 ################################
SNAPSHOTTING ##########################算法
# # 把数据库存到磁盘上: # # save # # 会在指定秒数和数据变化次数以后把数据库写到磁盘上。 # # 下面的例子将会进行把数据写入磁盘的操做: # 900秒(15分钟)以后,且至少1次变动 # 300秒(5分钟)以后,且至少10次变动 # 60秒以后,且至少10000次变动 # # 注意:你要想不写磁盘的话就把全部 "save" 设置注释掉就好了。 # # 经过添加一条带空字符串参数的save指令也能移除以前全部配置的save指令 # 像下面的例子: # save "" save 900 1 save 300 10 save 60 10000 # 默认若是开启RDB快照(至少一条save指令)而且最新的后台保存失败,Redis将会中止接受写操做 # 这将使用户知道数据没有正确的持久化到硬盘,不然可能没人注意到而且形成一些灾难。 # # 若是后台保存进程能从新开始工做,Redis将自动容许写操做 # # 然而若是你已经部署了适当的Redis服务器和持久化的监控,你可能想关掉这个功能以便于即便是 # 硬盘,权限等出问题了Redis也可以像平时同样正常工做, stop-writes-on-bgsave-error yes # 当导出到 .rdb 数据库时是否用LZF压缩字符串对象? # 默认设置为 "yes",由于几乎在任何状况下它都是不错的。 # 若是你想节省CPU的话你能够把这个设置为 "no",可是若是你有可压缩的key和value的话, # 那数据文件就会更大了。 rdbcompression yes # 由于版本5的RDB有一个CRC64算法的校验和放在了文件的最后。这将使文件格式更加可靠但在 # 生产和加载RDB文件时,这有一个性能消耗(大约10%),因此你能够关掉它来获取最好的性能。 # # 生成的关闭校验的RDB文件有一个0的校验和,它将告诉加载代码跳过检查 rdbchecksum yes # 持久化数据库的文件名 dbfilename dump.rdb # 工做目录 # # 数据库会写到这个目录下,文件名就是上面的 "dbfilename" 的值。 # # 累加文件也放这里。 # # 注意你这里指定的必须是目录,不是文件名。 dir ./ #################################
REPLICATION ###########################数据库
# 主从同步。经过 slaveof 指令来实现Redis实例的备份。 # 注意,这里是本地从远端复制数据。也就是说,本地能够有不一样的数据库文件、绑定不一样的IP、监听 # 不一样的端口。 # # slaveof # 若是master设置了密码保护(经过 "requirepass" 选项来配置),那么slave在开始同步以前必须 # 进行身份验证,不然它的同步请求会被拒绝。 # # 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同步以后将很容被删除),可是若是客户端因为配置错误在写入时也可能产生一些问题。 # # 从Redis2.6默认全部的slave为只读 # # 注意:只读的slave不是为了暴露给互联网上不可信的客户端而设计的。它只是一个防止实例误用的保护层。 # 一个只读的slave支持全部的管理命令好比config,debug等。为了限制你能够用'rename-command'来 # 隐藏全部的管理和危险命令来加强只读slave的安全性 slave-read-only yes # slave根据指定的时间间隔向master发送ping请求。 # 时间间隔能够经过 repl_ping_slave_period 来设置。 # 默认10秒。 # # repl-ping-slave-period 10 # 如下选项设置同步的超时时间 # # 1)slave在与master SYNC期间有大量数据传输,形成超时 # 2)在slave角度,master超时,包括数据、ping等 # 3)在master角度,slave超时,当master发送REPLCONF ACK pings # # 确保这个值大于指定的repl-ping-slave-period,不然在主从间流量不高时每次都会检测到超时 # # repl-timeout 60 # 是否在slave套接字发送SYNC以后禁用 TCP_NODELAY ? # # 若是你选择“yes”Redis将使用更少的TCP包和带宽来向slaves发送数据。可是这将使数据传输到slave # 上有延迟,Linux内核的默认配置会达到40毫秒 # # 若是你选择了 "no" 数据传输到salve的延迟将会减小但要使用更多的带宽 # # 默认咱们会为低延迟作优化,但高流量状况或主从之间的跳数过多时,把这个选项设置为“yes” # 是个不错的选择。 repl-disable-tcp-nodelay no # 设置数据备份的backlog大小。backlog是一个slave在一段时间内断开链接时记录salve数据的缓冲, # 因此一个slave在从新链接时,没必要要全量的同步,而是一个增量同步就足够了,将在断开链接的这段 # 时间内slave丢失的部分数据传送给它。 # # 同步的backlog越大,slave可以进行增量同步而且容许断开链接的时间就越长。 # # backlog只分配一次而且至少须要一个slave链接 # # repl-backlog-size 1mb # 当master在一段时间内再也不与任何slave链接,backlog将会释放。如下选项配置了从最后一个 # slave断开开始计时多少秒后,backlog缓冲将会释放。 # # 0表示永不释放backlog # # repl-backlog-ttl 3600 # slave的优先级是一个整数展现在Redis的Info输出中。若是master再也不正常工做了,哨兵将用它来 # 选择一个slave提高=升为master。 # # 优先级数字小的salve会优先考虑提高为master,因此例若有三个slave优先级分别为10,100,25, # 哨兵将挑选优先级最小数字为10的slave。 # # 0做为一个特殊的优先级,标识这个slave不能做为master,因此一个优先级为0的slave永远不会被 # 哨兵挑选提高为master # # 默认优先级为100 slave-priority 100 # 若是master少于N个延时小于等于M秒的已链接slave,就能够中止接收写操做。 # # N个slave须要是“oneline”状态 # # 延时是以秒为单位,而且必须小于等于指定值,是从最后一个从slave接收到的ping(一般每秒发送) # 开始计数。 # # This option does not GUARANTEES that N replicas will accept the write, but # will limit the window of exposure for lost writes in case not enough slaves # are available, to the specified number of seconds. # # 例如至少须要3个延时小于等于10秒的slave用下面的指令: # # min-slaves-to-write 3 # min-slaves-max-lag 10 # # 二者之一设置为0将禁用这个功能。 # # 默认 min-slaves-to-write 值是0(该功能禁用)而且 min-slaves-max-lag 值是10。 ##################################
SECURITY #############################缓存
# 要求客户端在处理任何命令时都要验证身份和密码。 # 这个功能在有你不信任的其它客户端可以访问redis服务器的环境里很是有用。 # # 为了向后兼容的话这段应该注释掉。并且大多数人不须要身份验证(例如:它们运行在本身的服务器上) # # 警告:由于Redis太快了,因此外面的人能够尝试每秒150k的密码来试图破解密码。这意味着你须要 # 一个高强度的密码,不然破解太容易了。 # # requirepass foobared # 命令重命名 # # 在共享环境下,能够为危险命令改变名字。好比,你能够为 CONFIG 改个其余不太容易猜到的名字, # 这样内部的工具仍然可使用,而普通的客户端将不行。 # # 例如: # # rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52 # # 也能够经过更名为空字符串来彻底禁用一个命令 # # rename-command CONFIG "" # # 请注意:改变命令名字被记录到AOF文件或被传送到从服务器可能产生问题。 ###################################
LIMITS ###############################安全
# 设置最多同时链接的客户端数量。默认这个限制是10000个客户端,然而若是Redis服务器不能配置 # 处理文件的限制数来知足指定的值,那么最大的客户端链接数就被设置成当前文件限制数减32(因 # 为Redis服务器保留了一些文件描述符做为内部使用) # # 一旦达到这个限制,Redis会关闭全部新链接并发送错误'max number of clients reached' # # maxclients 10000 # 不要用比设置的上限更多的内存。一旦内存使用达到上限,Redis会根据选定的回收策略(参见: # maxmemmory-policy)删除key # # 若是由于删除策略Redis没法删除key,或者策略设置为 "noeviction",Redis会回复须要更 # 多内存的错误信息给命令。例如,SET,LPUSH等等,可是会继续响应像Get这样的只读命令。 # # 在使用Redis做为LRU缓存,或者为实例设置了硬性内存限制的时候(使用 "noeviction" 策略) # 的时候,这个选项一般事颇有用的。 # # 警告:当有多个slave连上达到内存上限的实例时,master为同步slave的输出缓冲区所需 # 内存不计算在使用内存中。这样当驱逐key时,就不会因网络问题 / 从新同步事件触发驱逐key # 的循环,反过来slaves的输出缓冲区充满了key被驱逐的DEL命令,这将触发删除更多的key, # 直到这个数据库彻底被清空为止 # # 总之...若是你须要附加多个slave,建议你设置一个稍小maxmemory限制,这样系统就会有空闲 # 的内存做为slave的输出缓存区(可是若是最大内存策略设置为"noeviction"的话就不必了) # # maxmemory # 最大内存策略:若是达到内存限制了,Redis如何选择删除key。你能够在下面五个行为里选: # # volatile-lru -> 根据LRU算法生成的过时时间来删除。 # allkeys-lru -> 根据LRU算法删除任何key。 # volatile-random -> 根据过时设置来随机删除key。 # allkeys->random -> 无差异随机删。 # volatile-ttl -> 根据最近过时时间来删除(辅以TTL) # noeviction -> 谁也不删,直接在写操做时返回错误。 # # 注意:对全部策略来讲,若是Redis找不到合适的能够删除的key都会在写操做时返回一个错误。 # # 目前为止涉及的命令: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算法的实现都不是很精确,可是很接近(为了省内存),因此你能够用样本量作检测。 # 例如:默认Redis会检查3个key而后取最旧的那个,你能够经过下面的配置指令来设置样本的个数。 # # maxmemory-samples 3 ##############################
APPEND ONLY MODE #########################服务器
# 默认状况下,Redis是异步的把数据导出到磁盘上。这种模式在不少应用里已经足够好,但Redis进程 # 出问题或断电时可能形成一段时间的写操做丢失(这取决于配置的save指令)。 # # AOF是一种提供了更可靠的替代持久化模式,例如使用默认的数据写入文件策略(参见后面的配置) # 在遇到像服务器断电或单写状况下Redis自身进程出问题但操做系统仍正常运行等突发事件时,Redis # 能只丢失1秒的写操做。 # # AOF和RDB持久化能同时启动而且不会有问题。 # 若是AOF开启,那么在启动时Redis将加载AOF文件,它更能保证数据的可靠性。 # # 请查看 http://redis.io/topics/persistence 来获取更多信息. appendonly no # 纯累加文件名字(默认:"appendonly.aof") appendfilename "appendonly.aof" # fsync() 系统调用告诉操做系统把数据写到磁盘上,而不是等更多的数据进入输出缓冲区。 # 有些操做系统会真的把数据立刻刷到磁盘上;有些则会尽快去尝试这么作。 # # Redis支持三种不一样的模式: # # no:不要马上刷,只有在操做系统须要刷的时候再刷。比较快。 # always:每次写操做都马上写入到aof文件。慢,可是最安全。 # everysec:每秒写一次。折中方案。 # # 默认的 "everysec" 一般来讲能在速度和数据安全性之间取得比较好的平衡。根据你的理解来 # 决定,若是你能放宽该配置为"no" 来获取更好的性能(但若是你能忍受一些数据丢失,能够考虑使用 # 默认的快照持久化模式),或者相反,用“always”会比较慢但比everysec要更安全。 # # 请查看下面的文章来获取更多的细节 # http://antirez.com/post/redis-persistence-demystified.html # # 若是不能肯定,就用 "everysec" # appendfsync always appendfsync everysec # appendfsync no # 若是AOF的同步策略设置成 "always" 或者 "everysec",而且后台的存储进程(后台存储或写入AOF # 日志)会产生不少磁盘I/O开销。某些Linux的配置下会使Redis由于 fsync()系统调用而阻塞好久。 # 注意,目前对这个状况尚未完美修正,甚至不一样线程的 fsync() 会阻塞咱们同步的write(2)调用。 # # 为了缓解这个问题,能够用下面这个选项。它能够在 BGSAVE 或 BGREWRITEAOF 处理时阻止fsync()。 # # 这就意味着若是有子进程在进行保存操做,那么Redis就处于"不可同步"的状态。 # 这其实是说,在最差的状况下可能会丢掉30秒钟的日志数据。(默认Linux设定) # # 若是把这个设置成"yes"带来了延迟问题,就保持"no",这是保存持久数据的最安全的方式。 no-appendfsync-on-rewrite no # 自动重写AOF文件 # 若是AOF日志文件增大到指定百分比,Redis可以经过 BGREWRITEAOF 自动重写AOF日志文件。 # # 工做原理:Redis记住上次重写时AOF文件的大小(若是重启后尚未写操做,就直接用启动时的AOF大小) # # 这个基准大小和当前大小作比较。若是当前大小超过指定比例,就会触发重写操做。你还须要指定被重写 # 日志的最小尺寸,这样避免了达到指定百分比但尺寸仍然很小的状况还要重写。 # # 指定百分比为0会禁用AOF自动重写特性。 auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb ################################
LUA SCRIPTING###########################网络
# Lua 脚本的最大执行时间,毫秒为单位 # # 若是达到了最大的执行时间,Redis将要记录在达到最大容许时间以后一个脚本仍然在执行,而且将 # 开始对查询进行错误响应。 # # 当一个长时间运行的脚本超过了最大执行时间,只有 SCRIPT KILL 和 SHUTDOWN NOSAVE 两个 # 命令可用。第一个能够用于中止一个尚未调用写命名的脚本。第二个是关闭服务器惟一方式,当 # 写命令已经经过脚本开始执行,而且用户不想等到脚本的天然终止。 # # 设置成0或者负值表示不限制执行时间而且没有任何警告 lua-time-limit 5000 ##################################
SLOW LOG #############################数据结构
# Redis慢查询日志能够记录超过指定时间的查询。运行时间不包括各类I/O时间,例如:链接客户端, # 发送响应数据等,而只计算命令执行的实际时间(这只是线程阻塞而没法同时为其余请求服务的命令执 # 行阶段) # # 你能够为慢查询日志配置两个参数:一个指明Redis的超时时间(单位为微秒)来记录超过这个时间的命令 # 另外一个是慢查询日志长度。当一个新的命令被写进日志的时候,最老的那个记录从队列中移除。 # # 下面的时间单位是微秒,因此1000000就是1秒。注意,负数时间会禁用慢查询日志,而0则会强制记录 # 全部命令。 slowlog-log-slower-than 10000 # 这个长度没有限制。只是要主要会消耗内存。你能够经过 SLOWLOG RESET 来回收内存。 slowlog-max-len 128 #############################
Event notification ###########################
# Redis 能通知 Pub/Sub 客户端关于键空间发生的事件 # 这个功能文档位于http://redis.io/topics/keyspace-events # # 例如:若是键空间事件通知被开启,而且客户端对 0 号数据库的键 foo 执行 DEL 命令时,将经过 # Pub/Sub发布两条消息: # PUBLISH __keyspace@0__:foo del # PUBLISH __keyevent@0__:del foo # # 能够在下表中选择Redis要通知的事件类型。事件类型由单个字符来标识: # # K 键空间通知,以__keyspace@__为前缀 # E 键事件通知,以__keysevent@__为前缀 # g DEL , EXPIRE , RENAME 等类型无关的通用命令的通知, ... # $ String命令 # l List命令 # s Set命令 # h Hash命令 # z 有序集合命令 # x 过时事件(每次key过时时生成) # e 驱逐事件(当key在内存满了被清除时生成) # A g$lshzxe的别名,所以”AKE”意味着全部的事件 # # notify-keyspace-events 带一个由0到多个字符组成的字符串参数。空字符串意思是通知被禁用。 # # 例子:启用List和通用事件通知: # notify-keyspace-events Elg # # 例子2:为了获取过时key的通知订阅名字为 __keyevent@__:expired 的频道,用如下配置 # notify-keyspace-events Ex # # 默认所用的通知被禁用,由于用户一般不须要该特性,而且该特性会有性能损耗。 # 注意若是你不指定至少K或E之一,不会发送任何事件。 notify-keyspace-events "" ###############################
ADVANCED CONFIG #######################
# 当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 sparse representation bytes limit. The limit includes the # 16 bytes header. When an HyperLogLog using the sparse representation crosses # this limit, it is converted into the dense representation. # # A value greater than 16000 is totally useless, since at that point the # dense representation is more memory efficient. # # The suggested value is ~ 3000 in order to have the benefits of # the space efficient encoding without slowing down too much PFADD, # which is O(N) with the sparse encoding. The value can be raised to # ~ 10000 when CPU is not a concern, but space is, and the data set is # composed of many HyperLogLogs with cardinality in the 0 - 15000 range. hll-sparse-max-bytes 3000 # 启用哈希刷新,每100个CPU毫秒会拿出1个毫秒来刷新Redis的主哈希表(顶级键值映射表)。 # redis所用的哈希表实现(见dict.c)采用延迟哈希刷新机制:你对一个哈希表操做越多,哈希刷新 # 操做就越频繁;反之,若是服务器是空闲的,那么哈希刷新就不会完成,哈希表就会占用更多的一些 # 内存而已。 # # 默认是每秒钟进行10次哈希表刷新,用来刷新字典,而后尽快释放内存。 # # 建议: # 若是你对延迟比较在乎,不可以接受Redis时不时的对请求有2毫秒的延迟的话,就用 # "activerehashing no",若是不太在乎延迟而但愿尽快释放内存就设置"activerehashing yes" activerehashing yes # 客户端的输出缓冲区的限制,可用于强制断开那些由于某种缘由从服务器读取数据的速度不够快的客户端, # (一个常见的缘由是一个发布/订阅客户端消费消息的速度没法遇上生产它们的速度) # # 能够对三种不一样的客户端设置不一样的限制: # normal -> 正常客户端 # slave -> slave和 MONITOR 客户端 # pubsub -> 至少订阅了一个pubsub channel或pattern的客户端 # # 下面是每一个client-output-buffer-limit语法: # client-output-buffer-limit # 一旦达到硬限制客户端会当即被断开,或者达到软限制并持续达到指定的秒数(连续的)。 # 例如,若是硬限制为32兆字节和软限制为16兆字节/10秒,客户端将会当即断开 # 若是输出缓冲区的大小达到32兆字节,或客户端达到16兆字节并连续超过了限制10秒,就将断开链接。 # # 默认normal客户端不作限制,由于他们在不主动请求时不接收数据(以推的方式),只有异步客户端 # 可能会出现请求数据的速度比它能够读取的速度快的场景。 # # pubsub和slave客户端会有一个默认值,由于订阅者和slaves以推的方式来接收数据 # # 把硬限制和软限制都设置为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 # Redis调用内部函数来执行许多后台任务,如关闭客户端超时的链接,清除未被请求过的过时Key等等。 # # 不是全部的任务都以相同的频率执行,但Redis依照指定的“hz”值来执行检查任务。 # # 默认状况下,“hz”的被设定为10。提升该值将在Redis空闲时使用更多的CPU时,但同时当有多个key # 同时到期会使Redis的反应更灵敏,以及超时能够更精确地处理。 # # 范围是1到500之间,可是值超过100一般不是一个好主意。 # 大多数用户应该使用10这个默认值,只有在很是低的延迟要求时有必要提升到100。 hz 10 # 当一个子进程重写AOF文件时,若是启用下面的选项,则文件每生成32M数据会被同步。为了增量式的 # 写入硬盘而且避免大的延迟高峰这个指令是很是有用的 aof-rewrite-incremental-fsync yes ###############################