# Redis 配置案例html
#关于单位,当你须要指定内存的大小时,可使用以下的单位来指定node
#(译者注,为何会存在1000为单位,我认为是考虑到硬盘的容量单位是以1000来进行计算而非程序中的1024)linux
#(所以 使用 1000为单位能够进一步地精确估算出所需的实际硬盘容量)redis
#算法
# 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 ###################################
#
#若是你拥有一个标准的配置模板,而且但愿在该模板之上坐一些个性化的修改,你能够
#使用include 指令来引入其余的配置文件。
#
#注意:"include" 不会被 admin 或者 Redis Sentinel "CONFIG REWRITE" 命令覆盖。
#(译者注:"CONFIG REWRITE" 是redis 2.8 引入的新命令,用来重写配置)
#因为redis以最终的配置做为实际配置,所以咱们但愿你将include命令放置在配置文件的最前面
#以防配置被覆盖
#若是你打算使用另外的 conf文件来覆盖当前文件的配置,那么最好将include指令放置到该文件的末尾
#
# 即最后生效原则,最后被解析的配置将做为最后的配置
#
# include /path/to/local.conf
# include /path/to/other.conf
################################ GENERAL #####################################
# redis 默认不是以一个守护进程来运行的,使用 yes,可让redis做为守护进程来运行
# 注意:当redis做为守护进程的时候 /var/run/redis.pid 做为 pid 文件
#
daemonize no
# 当redis以守护进程运行时,将会使用/var/run/redis.pid做为 pid文件的位置,也就是
#上一个指令所说的默认,你能够根据本身的须要修改它
#
pidfile /var/run/redis.pid
# 在指定的端口上进行监听,默认是 6379
# 若是端口设置为0,那么redis就不会在TCP socket上进行监听
# (译者注:不在tcp socket上进行监听,不表明无法链接,只是没法使用网络链接而已)
port 6379
# TCP listen() backlog值
#(译者注:backlog值是指目前最大的链接队列,由于TCP链接是三次握手)
#(没有完成三次握手和还没有被accept的connect都会处于链接队列中,可是backlog的实际值与操做系统相关)
#(并不是设置多少就是多少,只能说调整得大一些能够在同一时间应对更多的链接请求)
#
#在一个并发量高的环境中,你须要指定一个比较大的backlog值来避免慢链接(因为网络缘由握手速度慢)的状况
#注意,linux内核会默认 使用/proc/sys/net/core/somaxconn 的值来削减 backlog的实际值,
#所以你须要确保提高 somaxconn 和 tcp_max_syn_backlog 这两个值来确保此处的backlog生效
#(译者注:只有 当每个请求都从新发起一个链接的时候,backlog值的增大才能影响到并发量)
#(在tcp稳定链接的时候,或链接复用(链接池的使用),backlog值对并发没有任何影响)
#
tcp-backlog 511
#
#默认状况下redis会在全部的可用网络接口中进行监听,若是你想让redis在指定的网络接口中
#监听,那么可使用bind 命令来指定redis的监听接口
#(译者科普:网络的中的服务是经过 ip+进程 来进行区分的,当一个服务器拥有两个ip时 )
#(天然就在网络中拥有两我的身份,如 内网,外网,当你只想让redis在一个网络上监听时,就可使用以下的配置)
# (127.0.0.1 就是指定只能本机进行网络访问)
# 例如:
#
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1
#
#指定unix sock的路径来进行链接监听,默认是不指定,所以redis不会在unix socket上进行监听
#(译者注:这个是用来进行进程间通讯的时候指定的)
# unixsocket /tmp/redis.sock
# unixsocketperm 755
# 关闭掉空闲N秒的链接(0则是不处理空闲链接)
timeout 0
# TCP keepalive.
#
#
#若是该值不为0,将使用 SO_KEEPALIVE 这一默认的作法来向客户端链接发送TCP ACKs
#
#这样的好处有如下两个缘由
# 1)检测已经死亡的对端(译者注:TCP的关闭会存在没法完成4次握手的状况,如断电,断网,数据丢失等等)
# 2)保持链接在网络环境中的存活
#
#
tcp-keepalive 0
# 指定日志的记录级别的
# 能够是以下的几个值之一
# debug (尽量多的日志信息,用于开发和测试之中)
# verbose (少可是有用的信息, 没有debug级别那么混乱)
# notice (适量的信息,用于生产环境)
# warning (只有很是重要和关键的信息会被记录)
loglevel notice
# 指定日志文件的位置. 为空时将输出到标准输出设备
# 若是你在demo模式下使用标准输出的日志,日志将会输出到 /dev/null
logfile ""
# 当设置 'syslog-enabled'为 yes时, 容许记录日志到系统日志中。
# 以及你可使用更多的日志参数来知足你的要求
# syslog-enabled no
# 指定在系统日志中的身份
# syslog-ident redis
# 指定系统日志的能力. 必须是 LOCAL0 到 LOCAL7 之间(闭区间).
# syslog-facility local0
#设置数据库的编号. 默认的数据库是DB 0
#使得你能够在每个链接的基础之上使用 SELECT <dbid> 来指定另外的数据库,可是这个值必须在 0到 'database'-1之间
databases 16
################################ SNAPSHOTTING ################################
#
# 保存 DB 到硬盘:
#
# save <seconds> <changes>
#
# 将会在<seconds> 和 <changes>两个值同时知足时,将DB数据保存到硬盘中
# 其中<seconds> 每多少秒,<changes>是改变的key的数量
#
# 在如下的例子中,将会存在以下的行为
# 当存在最少一个key 变动时,900秒(15分钟)后保存到硬盘
# 当存在最少10个key变动时,300秒后保存到硬盘
# 当存在最少1000个key变动时,60秒后保存到硬盘
#
# 提示: 你能够禁用以下的全部 save 行
#
# 你能够删除全部的save而后设置成以下这样的状况
#
#
#
# save ""
save 900 1
save 300 10
save 60 10000
#
# 做为默认,redis会在RDB快照开启和最近后台保存失败的时候中止接受写入(最少一个保存点)
#这会使得用户察觉(一般比较困难)到数据不会保持在硬盘上的正确性,不然很难发现
#这些灾难会发生
#
# 若是后台保存程序再次开始工做,reidis会再次自动容许写入
#
#然而若是对redis服务器设置了合理持续的监控,那么你能够关闭掉这个选项。
#这会致使redis将继续进行工做,不管硬盘,权限或者其余的是否有问题
#
#
stop-writes-on-bgsave-error yes
# 是否在dump到 rdb 数据库的时候使用LZF来压缩字符串
# 默认是 yes,由于这是一个优良的作法
#
# 若是你不想耗费你的CPU处理能力,你能够设置为 no,可是这会致使你的数据会很大
rdbcompression yes
# 从RDB的版本5开始,CRC64校验值会写入到文件的末尾
#这会使得格式化过程当中,使得文件的完整性更有保障,可是这会在保存和加载的时候损失很多的性能(大概在10%)
#你能够关闭这个功能来得到最高的性能
#
#RDB文件会在校验功能关闭的时候,使用0来做为校验值,这将告诉加载代码来跳过校验步骤
rdbchecksum yes
# DB的文件名称
dbfilename dump.rdb
# 工做目录.
#
# DB将会使用上述 'dbfilename'指定的文件名写入到该目录中
#
# 追加的文件也会在该目录中建立
#
# 注意,你应该在这里输入的是一个目录而不是一个文件名
dir ./
################################# REPLICATION #################################
# 主从复制。使用 slaveof 命令来 指导redis从另外一个redis服务的拷贝中来建立一个实例
#
#注意:这个配置是主从结构的从(主从结构的从,怎么那么拗口呢)redis的本地配置
#
#以下例子,这个配置指导 slave (从redis) 经过另外一个redis的实例的ip和端口号来获取DB数据
#
#
#
# slaveof <masterip> <masterport>
#
# 若是主服务器开启了密码保护(使用下面的"requirepass"配置)
# 这个配置就是告诉从服务在发起向主服务器的异步复制的请求以前使用以下的密码进行认证,
#不然主服务器会拒绝这个请求
#
#
#
# masterauth <master-password>
#
# 若是从服务器失去了和主服务器之间的链接,或者当复制仍然处于处理状态的时候
# 从服务器作出以下的两个行为
#
# 1)若是 slave-serve-stale-data 被设置为 yes(默认值),从服务器将会持续
# 回复来自客户端的请求,可能会回复已通过期的数据,或者返回空的数据,当从服务器第一次异步请求数据时。
#
# 2)若是 slave-serve-stale-data 被设置为 no ,从服务器就会返回"SYNC with master in progress"
# 这个错误,来应答全部命令除了 INFO 和 SLAVEOF
#
slave-serve-stale-data yes
#
#
# 你能够配置一个从服务器的实例是否接受写请求,
# 从服务器在存储一些短暂的数据的的时候,接收写请求是一件很是正确的事情
# (由于数据在向主服务器同步以后很是容易擦除)可是会由于配置不正确而致使一些问题
#
# 从redis 2.6开始默认从服务器是只读的服务器
#
#
#
#提示:只读的从服务器并非设计用来公开给不受信任的互联网客户端的,它
#仅仅是一个用来防止对实例进行误操做的保护层。只读从服务器默认用来输出管理命令
#例如 CONFIG, DEBUG 和其余。若是你想限制它的规模,你可使用'rename-command'来
#提升它的安全性,使得她做为一个影子来执行管理或者危险的命令
#
#
slave-read-only yes
# 从服务器在预设的间隔中发送送一个ping到目标服务器。你能够经过修改repl-ping-slave-period
#的值来修改它,默认是10秒钟
#
#
# repl-ping-slave-period 10
# repl-timeout设置了如下的复制超时值:
#
# 1) 在从服务器中,使用同步IO进行大规模传输.
# 2) 在从服务器中,主服务器的超时(ping,数据)
# 3) 在主服务器中. 从服务器的超时(对pings的响应)
#
#
# 确保这个值大于 指定的repl-ping-slave-period 值,不然当主从之间是低流量时
# 会检测到超时的状况
#
# repl-timeout 60
# 在从服务器同步以后是否关闭TCP_NODELAY?
#
#
# 若是你选择 "yes",redis将会使用一个很小的TCP包和很小的带宽来向从服务器发送数据。
# 若是使用默认的设置这会增长数据复制到从服务器之间的延迟。若是使用默认配置的linux内核
# 这个延迟会高达到40毫秒
#
#
#若是你选择 "no",数据复制到从服务器将会减小延迟,可是会使用更多的带宽。
#
#做为默认咱们为低延迟进行优化,可是在一个高流量的状况下或者当主服务器和从服务器
#有不少hops的时候,将该值设置为yes会更好
# (译者注:这就是一个网络调优的问题,默认的TCP内核会使用Nagle,即将小的数据包合并成大的数据包(及yes的状况))
# (在等待合并的过程种,确定会存在等待后续数据的步骤,所以这会致使数据的延迟)
# (yes,就是使用TCP的默认状况开启Nagle算法,no就是关闭Nagle算法)
repl-disable-tcp-nodelay no
#
#
#设置复制的backlog值。(这个backlog和tcp中的backlog不同)
#
#这个backlog值是一个缓冲区,当从服务器断开链接以后,主服务器将更新的数据放置
#在这个缓冲区中,由于当从服务从新链接上来时候不是全部的数据都须要同步,所以从这个
#缓冲区中取数据就能够同步到和主服务器同样的状态
#
#
#这个值设置得越大,从服务器的掉线时间就能够越长,上线后就能够进行局部更新
#(译者注:当掉线时间过长而没法进行局部更新,那么从服务器就会再一次进行同步全部的数据,耗时和当时的数据量成正比)
#当且仅当第一个从服务器链接到服务器以后这个缓存才会被分配
#
# repl-backlog-size 1mb
#
#
# 当从服务器在长时间内没有链接到主服务器时,backlog的缓存将会被释放。
# 如下的选项就是自 从服务器最后一次断掉和主服务器之间的
# 链接开始N秒后清空backlog的缓存
#
# 设置为0意味着永远不会清空backlog
#
# repl-backlog-ttl 3600
#
#
# 在redis的信息输出中咱们使用一个整型值来表示从服务器的优先值
#
#这个优先级的做用是,在主从结构种,当主服务器不能正常工做的时候时候,
#将一个从服务器提高为主服务器,提高的依据就是这个值。
#
# 假设又三个 优先级分别为 25 10 100 的服务器,将优先将数值最少的提高为主服务器
# 即最小值优先
# 若是优先级设置为0,意味着将不会又机会成为主服务器
# 默认优先级是100
slave-priority 100
#
# 下面的值用来设置主服务器中止接受写入事件的状况。
# 若是从服务器的链接小于N
# 从服务器的数据落后 小于等于M秒
#
# N个从服务器必须是在线的状态
#
# lag的单位是秒,它必须 <=指定的值,它从最后一次收到ping包的时间开始计算。
# 一般ping包都是每秒发送一次
#
#
# 这个选项并不担保N个副本都会接受写入,可是会确保在指定的时间没有足够的从服务可用的时候
# 窗口上显示丢失写入
#
#
# 例如要求最少三个从服务器在lag<=10秒
#
# min-slaves-to-write 3
# min-slaves-max-lag 10
#
# 设置任意一个为0都会致使关闭这项特性
#
# 默认min-slaves-to-write 设置为0(关闭这个特性)
# min-slaves-max-lag 设置为10
################################## SECURITY ###################################
#
# 要求客户端在处理其余指令以前先发起AUTH <PASSWORD>
#
# 这在你不信任其余的接入主机上的redis-server是比较有用
#
# 这个选项应当注释掉来保证向后的兼容性,毕竟大部分的人都不须要鉴权验证(由于他们都运行本身的sever)
#
#
#注意,因为redis太快,因此每秒钟能够尝试150K次密码,所以你应该设置一个
#很是强壮的密码来防止别人的破解
#
# requirepass foobared
# 命令重命名.
#
#
# 它用来改变共享环境中危险命令的名字,在这个例子中
# CONFIG 命令被重命名为一个难以猜解的名字。
# 这会对内部用户的工具备效,可是对通常的客户端无效。
#
# Example:
#
# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
#
#
# 可使用一个空字符串来抹杀这个命令
#
# rename-command CONFIG ""
#
# 请注意,改变记录在AOF文件中的命令名称或者传输到从服务会致使问题
# AOF file or transmitted to slaves may cause problems.
################################### LIMITS ####################################
#
# 设置同一时间的客户端最大链接数,默认的限制是10000个客户端。
#然而若是redis服务不设置这个限制值那么最大的用户数就是最大文件描述符数-32.
#
#
#一旦链接的用户数超出了限制值,redis将会关闭新的链接而且发送 'max number of client reached'
#
# maxclients 10000
# 不使用超出指定大小的内存,
#当redis使用到的内存达到限定值的时候,将会根据淘汰策略试图移除一部分key
#
#
# 若是根据相关策略没法移除key,或者策略被设置为 'noeviction',redis将会对
#使用到内存的命令返回错误,好比 SET LPUSH等,而且进入只读模式仅仅响应只读的命令如GET
#
# 这个选项在你将redis当作一个LRU缓存和设置一个内存大小限制的时候十分有用。
#
#
#
# 警告:若是你的从服务器关联到一个有最大内存限制的redis实例上,
#
# 主服务器向从服务器输出的缓存属于被该服务器使用的内存的一部分。
#所以 网络问题和从新同步引起的复制,不会触发淘汰key的循环,
#
#反过来,从服务器的输出缓存将会被触发淘汰的DEL key,直到数据库清空
#
#
#
#简单来讲,若是你拥有一个从服务器,咱们建议你将这个值
#设置为少于系统可用的最大内存,以便系统能够腾出空间来安放
#从服务器的输出缓存(可是若是策略是noeviction 那就没这个必要)
#
# maxmemory <bytes>
# 最大内存策略: 当redis使用的内存达到指定的最大值时,你可使用以下的5种
# 策略来应对这种状况
#
# volatile-lru -> 使用LRU算法依据过时时间来移除key
# allkeys-lru -> 使用LRU算法来移除任何key
# volatile-random -> 根据过时时间设置随即移除key
# allkeys-random -> 随即移除任何一个key
# volatile-ttl -> 移除一个最近过时时间的key
# noeviction -> 全部key用不过时(即不移除任何key),对于任何写操做都返回一个错误信息
#
# 提示: 在以上的全部策略中,当不存在一个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,而且挑选其中之一做为最近最少的Key,你可使用以下参数修改例子的数量大小
#
#
# maxmemory-samples 3
############################## APPEND ONLY MODE ###############################
# Redis默认使用异步存储数据到硬盘上.
#
# 这个模式很是合适一些应用,可是当redis的进程出现问题
# 或者停电的时候,会丢失一些写入的数据(丢失的多少根据保存点的设置)
#
#
# Append Only 文件(Append Only file),是一个备选的持久化模型,
# 它提供了更好的续航能力,对于一个使用默认数据同步文件策略的实例
#redis可能会由于一个戏剧性的灾难好比停电等丢失一秒钟的数据
#
#或者因为redis进程自己的错误仅仅写入一个数据,但操做系统一直运行
#
#
#
# AOF和RDB能够毫无问题地共存,所以你能够同时开启他们,
#
# 若是你开启了AOF,redis会在启动时加载AOF,由于AOF有更好的鲁棒性
#
# 你能够从 http://redis.io/topics/persistence 获取更多的信息
appendonly no
# append only file 的名称 (默认是: "appendonly.aof")
appendfilename "appendonly.aof"
# fsync() 调用告诉操做系统当即将数据写入到硬盘中,而不是写入到输出缓冲区
# 等待足够的数据再写入。一些操做系统会当即将数据写入到硬盘中,一些其余的
#操做系统则只是尽量快地将数据写入硬盘中
#
#
# Redis支持三种不一样的模式:
#
# no:不进行强制同步,仅仅让操做系统根据自身的决策写入到硬盘中。这种速度更快
# always:在每一次追加写入操做都采用强制同步,特色是慢,安全。
# everysec:每间隔一秒钟强制同步数据。折中的方案
#
#
# 默认采用 "everysec"做为速度和安全性之间的平衡方案
# 你将根据本身的需求决定采用更快的方案或者更安全的方案。
# 选择no,什么时候写入数据将由操做系统决定,你能够由此获取最快的速度
# 选择always,数据将当即写入到硬盘中,你能够得到更高的数据安全性
#
# 更多的信息能够从如下地址中获取:
# http://antirez.com/post/redis-persistence-demystified.html
#
# 若是不开启该选项默认使用"everysec".
# appendfsync always
appendfsync everysec
# appendfsync no
#
#
# 当AOF的强制写入策略设置为 always 或者 everysec,而且一个后台保存进程
#(一个后台保存进程或者 AOF 日志后台重写)会占用硬盘的大量I/O资源,在一些linux
# 的配置中redis会由于 fsync() 调用而长期锁定。特别的是在目前咱们无法解决这个问题
# 即便采用另外的线程来运行强制同步也会锁定住咱们的 同步 write(2)调用
#
# 为了减轻这个问题,下面的选项将会在GBSAVE 或者BGREWRITEAOF运行时
# 预防主进程调用fsync()
#
# 这意味着当另外一个 子进程在保存的时候,Redis的保存策略将处于"appendfsync none"这样的相似状态
# 在实际应用当中,这意味着在最坏的状况下将会失去30秒的日志(使用linux默认的设置)
#
#
# 若是你采用yes,那么将会存在一个潜在的隐患,否则请设置它为 "no",
# 这是一个为了稳定的安全性选择
#
no-appendfsync-on-rewrite no
# 自动改写append only 文件.
#
# redis会在AOF日志文件增加到指定百分比的时候经过调用BGREWRITEAOF来自动重写日志文件
#
# 他是这样工做的:redis会记住最后一次改写后AOF文件的大小(若是重写自重启以来
#还没有发生,那么AOF文件的大小就是启动以来使用的大小)
#
#
# 这个基准值将会和当前值进行比较,若是当前值比设定的百分比还要大,重写事件就会发生。
#
# 而且你须要指定一个AOF重写的最小值,这用来避免当重写文件的百分比增加符合目标
# 可是整个文件依然很小的时候
#
#
# 将 auto-aof-rewrite-percentage 设置为0则能够关闭掉AOF自动重写的功能
#
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
################################ LUA SCRIPTING ###############################
# 以毫秒为单位限定lua脚本的最大执行时间.
#
#
# 当lua脚本在超出最大容许执行时间以后,redis会记录下这个脚本到日志中,
#而且会向这个请求返回error的错误
#
#
#
# 仅当 SCRIPT KILL 和 SHUTDOWN NOSAVE 命令可用的时候
# 一个运行时间超过最大限定时间的脚本才会继续执行
# SCRIPT KILL用来中止一个没有调用写入命令的脚本
# 当用户不想等待脚本的天然停止但脚本又在进行写操做的时候
# 采用 SHUTDOWN NOSAVE 是解决这个问题的惟一办法,他能够当即停掉整个脚本
#
#
# 设置为0 或者一个负数来取消时间限定.
lua-time-limit 5000
################################## SLOW LOG ###################################
#
# slow log(慢日志)用来记录执行时间超过指定值的查询。
# 执行时间不包含 I/O操做,好比和客户端交互,发送应答等等
# 仅仅是执行命令的真实时间,(仅仅是线程由于执行这个命令而锁定且没法处理其余请求的阶段)
#
#
# 你可使用两个参数来配置 slow log,一个是以微秒为单位的命令执行时间值,
# 另外一个是slow log 的长度(即记录的最大数量)
# 当一个新的命令被记录到slow log的时候,最旧的一条记录将会被移除。
#
#
# 下面的值将会被解释为 微秒 为单位,因此 1000000 微秒为 1秒
#
# 将这个值设置为一个负数,将关闭掉slow log ,若是设置为0,则记录全部的命令
#(默认是10毫秒)
slowlog-log-slower-than 10000
# 由于这会消耗内存,所以实际上并非限制到这个长度.
# 你可使用 SLOWLOG RESET来回收占用的内存
slowlog-max-len 128
################################ LATENCY MONITOR ##############################
#
# redis延迟监控子系统例子与操做系统收集的redis实例相关的数据不一样
#
# 经过LATENCY命令,能够为用户打印出相关信息的图形和报告
#
#这个系统只会记录运行时间超出指定时间值的命令,若是设置为0,这个监控将会被关闭
#
#
# 默认的状况下,延迟监控是关闭,由于若是你没有延迟的问题大部分状况下不须要
#,而且收集数据的行为会对性能形成影响,虽然这个影响很小能够在大负荷下工做
#
#延迟监控可使用以下命令来打开
#
# "CONFIG SET latency-monitor-threshold <milliseconds>".
latency-monitor-threshold 0
############################# Event notification ##############################
#redis 能够在key 空间中采用发布订阅模式来通知事件的发生
#
#这个功能的文档能够查看 http://redis.io/topics/keyspace-events
#
#
#对于一个实例,若是键空间事件通知是启用状态,当一个客户端执行在一个
#存储在Database 0名为"foo"的key的DEL(删除)操做时,
#有以下两条信息将会经过发布订阅系统产生
#
#
# PUBLISH __keyspace@0__:foo del
# PUBLISH __keyevent@0__:del foo
#
#
# 如下是可选的redis事件通知,每一个类别的事件能够由一个字符进行描述
#
# K Keyspace events, published with __keyspace@<db>__ prefix.
# E Keyevent events, published with __keyevent@<db>__ prefix.
# g Generic commands (non-type specific) like DEL, EXPIRE, RENAME, ...
# $ String commands
# l List commands
# s Set commands
# h Hash commands
# z Sorted set commands
# x Expired events (events generated every time a key expires)
# e Evicted events (events generated when a key is evicted for maxmemory)
# A Alias for g$lshzxe, so that the "AKE" string means all the events.
#
# The "notify-keyspace-events" takes as argument a string that is composed
# by zero or multiple characters. The empty string means that notifications
# are disabled at all.
#
# 例子1: 启用 list 和 generic 事件,
#
# notify-keyspace-events Elg
#
# 例子2 2: 要想订阅通道名为__keyevent@0__:expired 上expired keys的事件:
#
# notify-keyspace-events Ex
#
#
# 默认不启用全部的通知,由于大部分的用户不须要这些功能,并且这些功能会带来一些开销
#
# 若是你没有指定 K 或者 E,没有事件会被传递
#
notify-keyspace-events ""
############################### ADVANCED CONFIG ###############################
#
#建立空白哈希表时,程序默认使用 REDIS_ENCODING_ZIPLIST 编码,当如下任何一个条件被满
#足时,程序将编码从切换为 REDIS_ENCODING_HT
#哈希表中某个键或某个值的长度大于 server.hash_max_ziplist_value (默认值为 64)。
#压缩列表中的节点数量大于 server.hash_max_ziplist_entries (默认值为 512 )。
#
# ziplist是一个解决空间的紧凑的数据存储结构,可是当数据超过阈值时,将采用原生的数据存储结构
#
#
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
#
# 与hash表相似,
#
list-max-ziplist-entries 512
list-max-ziplist-value 64
#
# 设置特殊编码的惟一状况:
# 当一个set仅仅由一个基数为10最大位数为64位的有符号整形的字符串构成的时候
#
#如下配置设置了set的限制大小,当小于这个值的时候将会使用一个更紧凑的数据结构来保存
#以期减小内存占用
#
set-max-intset-entries 512
#
# 与hash和list相似 zsort也采用以下的配置来选择是否进行特殊编码来节省空间
#
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
#
# HyperLogLog 稀疏表示字节限制
# 这个限制包含了16个字节的头部,当一个HyperLogLog使用sparse representation
# 超过了这个显示,它就会转换到dense representation上
#
#
hll-sparse-max-bytes 3000
#
# active rehashing使用CPU时间的每100毫秒中的1毫秒来进行rehashing工做
# 来rehash redis的主hash表(rehash的时候在代码种引入记时来保证)
#
# lazy rehashing :逐步hash,每一次添加查找删除进行一次rehash的步骤
# 又称惰性hash
#
# 由于hash的再散列会致使整个进程的stop,为了不长时间的stop,以上的策略都是在分散整个
# rehash的过程(参照《redis设计与实现》的字典部分)
#
activerehashing yes
#
# 客户端输出缓冲区显示能够用来解决因为某些缘由致使的强制断线
# 而形成的不能读到足够的数据
# 一个比较常见的缘由是发布订阅模式种,客户端不能足够快速地消费发布者生产的信息
#
# 这个限制能够设置为以下的三种类型:
#
# normal -> 正常普通的客户端,包含监控客户端
# slave -> 主从服务器的从客户端
# pubsub -> 订阅了最少一个频道的客户端
#
# 每个 client-output-buffer-limit 格式以下:
#
# client-output-buffer-limit <class> <hard limit> <soft limit> <soft seconds>
#
#
#
# 在两种状况下服务器认为客户端不是意外临时掉线
#
# 1.缓冲区的数据达到硬限制
# 2.缓冲区的数据达到软限制,同时时间超过了指定值
#
# 由于一个客户离线,有多是临时性的网络故障,或者传输问题
# 也有多是永久性离线 或者强制性离线,此时服务器将不会保留他的缓存数据
# 如下的设置就是为了判断这一状况的
#
#
#
# 硬限制和软限制均可以经过将其设置为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的值来决定处理这些(如上所述的后台任务)任务的频率
#
#
# 提升这个值会使用更多的cpu时间来在redis闲置的时候处理以上的,可是以此同时
# 超时的链接的处理和过时key的清理则会更精确
#
# hz的取值范围在1到500,不建议设置为超过100的值,默认是10
hz 10
#
# 当子进程重写AOF文件的时候,如下选项将会容许等到存在32MB数据的时候才调用强制同步
# 这样能够下降IO上的延迟
#
aof-rewrite-incremental-fsync yes