阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Redis 配置文件redis.conf 示例详解

293次阅读
没有评论

共计 12972 个字符,预计需要花费 33 分钟才能阅读完成。

# Redis 配置文件示例

# 注意单位: 当需要配置内存大小时, 可能需要指定像 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 ###################################

# 可以在这里包含一个或多个其他的配置文件。如果你有一个适用于所有 Redis 服务器的标准配置模板
# 但也需要一些每个服务器自定义的设置,这个功能将很有用。被包含的配置文件也可以包含其他配置文件,
# 所以需要谨慎的使用这个功能。
#
# 注意“inclue”选项不能被 admin 或 Redis 哨兵的 ”CONFIG REWRITE” 命令重写。
# 因为 Redis 总是使用最后解析的配置行最为配置指令的值, 你最好在这个文件的开头配置 includes 来
# 避免它在运行时重写配置。
# 如果相反你想用 includes 的配置覆盖原来的配置,你最好在该文件的最后使用 include
#
# include /path/to/local.conf
# include /path/to/other.conf

################################ GENERAL  #####################################

# 默认 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 <dbid>  (0 <= dbid <= ‘databases’ – 1)来为每个连接使用不同的数据库。
databases 16

################################ SNAPSHOTTING  ################################
#
# 把数据库存到磁盘上:
#
#  save <seconds> <changes>

#  会在指定秒数和数据变化次数之后把数据库写到磁盘上。
#
#  下面的例子将会进行把数据写入磁盘的操作:
#  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 <masterip> <masterport>

# 如果 master 设置了密码保护(通过 “requirepass” 选项来配置),那么 slave 在开始同步之前必须
# 进行身份验证,否则它的同步请求会被拒绝。
#
# masterauth <master-password>

# 当一个 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 <bytes>

# 最大内存策略:如果达到内存限制了,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@<db>__为前缀
# E    键事件通知,以__keysevent@<db>__为前缀
# 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 <class><hard limit> <soft limit> <soft seconds>

# 一旦达到硬限制客户端会立即被断开,或者达到软限制并持续达到指定的秒数(连续的)。
# 例如,如果硬限制为 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

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计12972字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中