Redis配置文件翻译


# Redis 配置文件示例。
#
# 注意,为了读取配置文件,Redis必须是
# 以文件路径作为第一个参数开始:
#
# ./redis-server /path/to/redis.conf

# 关于单位的注意事项:当需要内存大小时,可以指定
# 通常的形式为 1k 5GB 4M 等等:
#
# 1k => 1000 字节
# 1kb => 1024 字节
# 1m => 1000000 字节
# 1mb => 1024*1024 字节
# 1g => 1000000000 字节
# 1GB => 1024*1024*1024 字节
#
# 单位不区分大小写,因此 1GB 1Gb 1gB 都是相同的。

#################################### 包括 ############### ####################

# 此处包含一个或多个其他配置文件。如果您这样做,这很有用
# 有一个适用于所有 Redis 服务器的标准模板,但还需要
# 自定义一些每服务器设置。包含文件可以包含
# 其他文件,所以请明智地使用它。
#
# 注意选项“include”不会被命令“CONFIG REWRITE”重写
# 来自管理员或 Redis Sentinel。由于Redis总是使用最后处理的
# line 作为配置指令的值,最好将 include
# 在此文件的开头以避免在运行时覆盖配置更改。
#
# 如果您有兴趣使用包含来覆盖配置
#选项,最好使用include作为最后一行。
#
# 包含/path/to/local.conf
# 包含/path/to/other.conf

################################## 模块############## ######################

# 启动时加载模块。如果服务器无法加载模块
# 它将中止。可以使用多个加载模块指令。
#
# 加载模块/path/to/my_module.so
# 加载模块/path/to/other_module.so

################################## 网络 ############### ######################

# 默认情况下,如果没有指定“bind”配置指令,Redis 会监听
# 用于来自服务器上所有可用网络接口的连接。
# 可以使用以下方式仅监听一个或多个选定的接口
# “bind”配置指令,后跟一个或多个 IP 地址。
#
# 例子:
#
# 绑定 192.168.1.100 10.0.0.1
# 绑定 127.0.0.1::1
# 绑定0.0.0.0
#
# ~~~ 警告 ~~~ 如果运行Redis的计算机直接暴露在
# 互联网,绑定到所有接口是危险的并且会暴露
# 互联网上每个人的实例。所以默认情况下我们取消注释
# 遵循bind指令,这将强制Redis仅监听
# IPv4环回接口地址(这意味着Redis将能够
# 仅接受来自运行在同一台计算机上的客户端的连接
# 在跑)。
#
# 如果您确定希望您的实例监听所有接口
# 只需评论以下行。
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~
#绑定127.0.0.1

# 保护模式是一层安全保护,为了避免这种情况
# 在互联网上保持开放状态的 Redis 实例会被访问和利用。
#
# 当保护模式打开并且如果:
#
# 1) 服务器没有使用显式绑定到一组地址
#“绑定”指令。
# 2) 未配置密码。
#
# 服务器只接受来自客户端的连接
# IPv4和IPv6环回地址127.0.0.1和::1,来自Unix域
# 套接字。
#
# 默认情况下启用保护模式。仅当出现以下情况时才应该禁用它
# 您确定希望其他主机的客户端连接到 Redis
# 即使没有配置身份验证,也没有配置一组特定的接口
# 使用“bind”指令显式列出。
protected-mode no


# 接受指定端口上的连接,默认为 6379 (IANA #815344)。
# 如果指定端口 0,Redis 将不会侦听 TCP 套接字。
port 6379


# TCP Listen() 积压。
#
# 在每秒请求量较高的环境中,您需要大量积压才能完成
# 避免客户端连接速度慢的问题。请注意,Linux 内核
# 会默默地将其截断为 /proc/sys/net/core/somaxconn 的值
# 确保同时提高 somaxconn 和 tcp_max_syn_backlog 的值
# 以获得想要的效果。
tcp-backlog 511


# Unix 套接字。
#
# 指定用于监听的 Unix 套接字的路径
# 传入连接。没有默认,所以Redis不会监听
# 未指定时在 unix 套接字上。
#
# unixsocket /tmp/redis.sock
#unixsocketperm 700

# 客户端空闲N秒后关闭连接(0表示禁用)
timeout 0


# TCP 保活。
#
# 如果非零,则在不存在的情况下使用 SO_KEEPALIVE 向客户端发送 TCP ACK
# 通讯次数。这很有用,原因有两个:
#
# 1) 检测失效的节点。
# 2) 从网络的角度使连接处于活动状态
# 设备在中间。
#
# 在 Linux 上,指定值(以秒为单位)是用于发送 ACK 的周期。
# 请注意,要关闭连接需要双倍的时间。
# 在其他内核上,该周期取决于内核配置。
#
# 该选项的合理值为 300 秒,这是新的
# Redis默认从Redis 3.2.1开始。
tcp-keepalive 300


################################# 一般的 ################ ####################

# 默认情况下,Redis 不作为守护进程运行。如果需要,请使用“是”。
# 请注意,Redis 在守护进程时会在 /var/run/redis.pid 中写入 pid 文件。
daemonize no


# 如果您从 upstart 或 systemd 运行 Redis,Redis 可以与您的交互
# 监督树。选项:
# 有监督 - 无监督互动
# 受监督的新贵 - 通过将 Redis 置于 SIGSTOP 模式来向新贵发出信号
# 受监督的 systemd - 通过将 READY=1 写入 $NOTIFY_SOCKET 来向 systemd 发送信号
# 受监督的自动检测 upstart 或基于 systemd 的方法
# UPSTART_JOB 或 NOTIFY_SOCKET 环境变量
# 注意:这些监督方法仅发出“进程已准备就绪”的信号。
# 它们不会向您的主管提供连续的活动 ping。
supervised no


# 如果指定了pid文件,Redis会在启动时将其写入指定的位置
# 并在退出时将其删除。
#
# 当服务器运行非守护进程时,如果没有pid文件,则不会创建
# 在配置中指定。当服务器守护进程时,pid 文件
pidfile /var/run/redis_6379.pid

#
# 尽力创建 pid 文件:如果 Redis 无法创建它
# 没有什么不好的事情发生,服务器将正常启动并运行。
loglevel notice


# 指定服务器详细级别。
# 这可以是以下之一:
# 调试(很多信息,对开发/测试有用)
# 详细(许多很少有用的信息,但不像调试级别那样混乱)
# 注意(相当详细,你可能在生产中想要什么)
# 警告(仅记录非常重要/关键消息)
logfile ""


# 指定日志文件名。空字符串也可以用来强制
# Redis 登录标准输出。请注意,如果您使用标准
# 日志输出但守护进程,日志将被发送到 /dev/null
databases 16


# 要启用系统记录器的日志记录,只需将 'syslog-enabled' 设置为 yes,
# 并可选择更新其他系统日志参数以满足您的需求。
# 系统日志启用否

# 指定系统日志身份。
# syslog-ident redis

# 指定系统日志工具。必须是 USER 或介于 LOCAL0-LOCAL7 之间。
# 系统日志设施 local0

# 设置数据库数量。默认数据库为DB 0,可以选择
# 使用 SELECT <dbid> 在每个连接上使用不同的连接
# dbid 是 0 到 'databases'-1 之间的数字
always-show-logo yes


# 默认情况下,Redis 仅在开始登录时显示 ASCII 艺术徽标
# 标准输出,如果标准输出是 TTY。基本上这意味着
# 通常徽标仅在交互式会话中显示。
#
# 但是,可以强制执行 4.0 之前的行为并始终显示
# 通过将以下选项设置为 yes,在启动日志中显示 ASCII 艺术徽标。
save 900 1


################################## 快照 ################# ##############
#
# 将数据库保存在磁盘上:
#
# 保存<秒> <更改>
#
# 如果给定的秒数和给定的秒数都给定,则将保存数据库
# 针对数据库发生的写入操作数。
#
# 在下面的示例中,行为将是保存:
# 900 秒(15 分钟)后,如果至少 1 个密钥发生更改
# 300 秒(5 分钟)后,如果至少 10 个键发生更改
# 60 秒后如果至少有 10000 个键发生变化
#
# 注意:您可以通过注释掉所有“保存”行来完全禁用保存。
#
# 也可以删除所有之前配置的保存
# 通过添加带有单个空字符串参数的保存指令来指出
# 就像下面的例子一样:
#
# 节省 ””

save 300 10

save 60 10000

stop-writes-on-bgsave-error yes


# 默认情况下,如果启用 RDB 快照,Redis 将停止接受写入
#(至少一个保存点)且最新的后台保存失败。
# 这将使用户意识到(以一种艰难的方式)数据没有持久化
# 正确地放在磁盘上,否则很可能没有人会注意到,并且有些人会注意到
#灾难将会发生。
#
# 如果后台保存进程再次开始工作,Redis 将
# 自动允许再次写入。
#
# 但是,如果您已经设置了对 Redis 服务器的正确监控
# 和持久化,你可能想禁用这个功能,这样 Redis 就会
# 即使磁盘出现问题也继续照常工作,
# 权限等等。
rdbcompression yes


# 转储.rdb数据库时使用LZF压缩字符串对象?
# 默认设置为“是”,因为它几乎总是胜利。
# 如果你想在保存子进程中节省一些CPU,请将其设置为“否”,但是
# 如果您有可压缩的值或键,数据集可能会更大。
rdbchecksum yes


# 从 RDB 版本 5 开始,CRC64 校验和被放置在文件末尾。
# 这使得格式更能抵抗损坏但有性能
# 保存和加载 RDB 文件时要付费(大约 10%),因此您可以禁用它
# 以获得最佳性能。
#
# 禁用校验和创建的 RDB 文件的校验和为零,这将
# 告诉加载代码跳过检查。
dbfilename dump.rdb


# 转储数据库的文件名
dir ./


# 工作目录。
#
# DB将被写入此目录中,并指定文件名
# 上面使用“dbfilename”配置指令。
#
# 仅追加文件也将在此目录中创建。
#
# 注意这里必须指定目录,而不是文件名。
replica-serve-stale-data yes


################################# 复制 ################ ################

# 主从复制。使用replicaof将Redis实例复制为
# 另一个 Redis 服务器。尽快了解有关 Redis 复制的一些知识。
#
# +----------------+ +----------------+
#|大师| ---> |复制品 |
#| (接收写入)| | (精确副本)|
# +----------------+ +----------------+
#
# 1) Redis复制是异步的,但是你可以配置一个master来
# 如果看起来至少没有连接,则停止接受写入
# 给定数量的副本。
# 2) Redis 副本能够与 Redis 执行部分重新同步
# master 如果复制链接丢失的时间相对较少
# 时间。您可能需要配置复制积压大小(请参阅下一个
# 此文件的部分),根据您的需要设置合理的值。
# 3) 复制是自动的,不需要用户干预。之后
# 网络分区副本自动尝试重新连接到主服务器
# 并与它们重新同步。
#
#replicaof <masterip> <masterport>

# 如果master受密码保护(使用“requirepass”配置
# 下面的指令)可以告诉副本在之前进行身份验证
# 启动复制同步过程,否则master将
# 拒绝副本请求。
#
# masterauth <主密码>

# 当副本失去与主服务器的连接时,或者当复制时
# 仍在进行中,副本可以以两种不同的方式运行:
#
# 1) 如果replica-serve-stale-data设置为“yes”(默认),副本将
# 仍然回复客户端请求,可能使用过时的数据,或者
# 如果这是第一次同步,数据集可能只是空的。
#
# 2) 如果replica-serve-stale-data设置为“no”,副本将回复
# 所有类型的命令都会出现“SYNC with master in Progress”错误
# 但到 INFO、replicaOF、AUTH、PING、SHUTDOWN、REPLCONF、ROLE、CONFIG,
# 订阅、取消订阅、PSUBSCRIBE、PUNSUBSCRIBE、发布、PUBSUB、
# 命令、发布、主机:和延迟。
#
replica-read-only yes


# 您可以配置副本实例是否接受写入。写反对
# 副本实例可能有助于存储一些临时数据(因为数据
# 写在副本上的内容在与主服务器重新同步后很容易被删除)但是
# 如果客户端由于某种原因而写入数据,也可能会导致问题
# 配置错误。
#
# 从 Redis 2.6 开始,默认副本是只读的。
#
# 注意:只读副本不适合暴露给不受信任的客户端
# 在互联网上。它只是防止滥用实例的保护层。
# 仍然是只读副本,默认导出所有管理命令
# 如 CONFIG、DEBUG 等。在有限的程度上你可以改进
# 使用“rename-command”来隐藏所有只读副本的安全性
# 管理/危险命令。
repl-diskless-sync no


# 复制SYNC策略:磁盘或套接字。
#
#------------------------------------------------- ------
# 警告:无盘复制目前处于实验阶段
#------------------------------------------------- ------
#
# 新副本和重新连接无法继续复制的副本
# 进程只是接收差异,需要做所谓的“完整”
# 同步”。RDB 文件从主服务器传输到副本。
# 传输可以通过两种不同的方式进行:
#
# 1) Disk-backed: Redis master创建一个写入RDB的新进程
# 磁盘上的文件。随后文件由父级传输
# 增量处理副本。
# 2)无盘:Redis master创建一个新进程,直接写入
# RDB 文件到副本套接字,根本不接触磁盘。
#
# 使用磁盘支持的复制,在生成 RDB 文件时,会生成更多副本
# 一旦当前子进程生成,就可以排队并与 RDB 文件一起提供服务
# RDB 文件完成其工作。使用无盘复制代替一次
# 传输开始,新到达的副本将排队并进行新的传输
# 将在当前终止时开始。
#
# 当使用无盘复制时,master会等待一段可配置的时间
# 开始传输之前希望多个副本的时间(以秒为单位)
# 将会到达并且传输可以并行化。
#
# 使用慢速磁盘和快速(大带宽)网络,无盘复制
# 效果更好。
repl-diskless-sync-delay 5


# 当启用无盘复制时,可以配置延迟
# 服务器等待以生成通过套接字传输 RDB 的子进程
# 到副本。
#
# 这很重要,因为一旦传输开始,就无法提供服务
# 新副本到达,将排队等待下一次 RDB 传输,因此服务器
# 等待延迟以便让更多副本到达。
#
# 延迟以秒为单位指定,默认为 5 秒。禁用
# 只需将其设置为 0 秒,传输就会尽快开始。
repl-disable-tcp-nodelay no


# 副本按照预定义的时间间隔向服务器发送 PING。是可以改变的
# 使用 repl_ping_replica_period 选项设置此间隔。默认值为 10
# 秒。
#
# repl-ping-副本周期 10

# 以下选项设置复制超时:
#
# 1) 从副本的角度来看,SYNC 期间批量传输 I/O。
# 2) 从副本(数据、ping)的角度来看主超时。
# 3) 从主服务器的角度来看副本超时(REPLCONF ACK ping)。
#
# 重要的是要确保该值大于该值
# 为 repl-ping-replica-period 指定,否则将检测到超时
# 每次主节点和副本节点之间的流量较低时。
#
# 重复超时 60

# SYNC 后禁用副本套接字上的 TCP_NODELAY?
#
# 如果选择“yes”,Redis 将使用较少数量的 TCP 数据包,并且
# 发送数据到副本的带宽更少。但这可能会增加延迟
# 数据出现在副本端,最长 40 毫秒
# Linux 内核使用默认配置。
#
# 如果选择“否”,数据在副本端出现的延迟将
# 减少,但更多带宽将用于复制。
#
# 默认情况下,我们针对低延迟进行优化,但在流量非常高的情况下
# 或者当主节点和副本节点相距很多跳时,将其设置为“是”可能会
# 是个好主意。
replica-priority 100


# 设置复制积压大小。积压是累积的缓冲区
# 副本断开连接一段时间后的副本数据,这样当副本
# 想要再次重新连接,通常不需要完全重新同步,而是部分重新同步
# 重新同步就足够了,只需传递副本丢失的部分数据即可
# 已断开连接。
#
# 复制积压越大,副本可以的时间越长
# 断开连接,稍后能够执行部分重新同步。
#
# 仅当至少有一个副本连接时才会分配积压的工作。
#
# repl-backlog-size 1mb

# 当master一段时间不再连接replica之后,backlog
# 将被释放。以下选项配置秒数
# 需要经过一段时间,从最后一个副本断开连接的时间开始,
# 要释放的积压缓冲区。
#
# 请注意,副本永远不会因超时而释放积压,因为它们可能会
# 以后晋升大师,应该能够正确“部分”
# 与副本重新同步:因此它们应该始终积累积压。
#
# 值为 0 表示永远不释放积压。
#
# repl-backlog-ttl 3600

# 副本优先级是 Redis 在 INFO 输出中发布的整数。
# Redis Sentinel 使用它来选择一个副本以升级为副本
# master 如果 master 不再正常工作。
#
# 具有低优先级编号的副本被认为更适合升级,因此
# 例如,如果有三个优先级分别为 10、100、25 的副本,Sentinel 将
# 选择优先级为 10 的,即最低的。
#
# 然而,特殊优先级 0 标记副本无法执行
# master的角色,因此优先级为0的副本永远不会被选择
# Redis Sentinel 进行升级。
#
# 默认优先级为100。
requirepass 13110197267ljlLJL!


# 如果少于的话,主设备可能会停止接受写入
# N 个副本已连接,延迟小于或等于 M 秒。
#
# N个副本需要处于“在线”状态。
#
# 延迟(以秒为单位)必须 <= 指定值,计算公式为
# 从副本收到的最后一次 ping,通常每秒发送一次。
#
# 此选项不保证 N 个副本将接受写入,但
# 如果没有足够的副本,将限制丢失写入的暴露窗口
# 可用,直到指定的秒数。
#
# 例如,需要至少 3 个延迟 <= 10 秒的副本,请使用:
#
# 写入的最小副本数 3
# 最小副本最大滞后 10
#
# 将其中一个设置为 0 将禁用该功能。
#
# 默认情况下,min-replicas-to-write 设置为 0(禁用功能)并且
# min-replicas-max-lag 设置为 10。

# Redis master能够列出所连接的地址和端口
# 以不同方式复制。例如“INFO 复制”部分
# 提供此信息,除其他工具外,还可以使用该信息
# Redis Sentinel 用于发现副本实例。
# 提供此信息的另一个地方是在输出中
# 大师的“ROLE”命令。
#
# 获取副本正常报告的列出的IP和地址
# 通过以下方式:
#
# IP:通过检查对等地址自动检测地址
# 副本用于与主服务器连接的套接字的#。
#
# 端口:复制过程中副本通信的端口
# 握手,通常是副本使用的端口
# 监听连接。
#
# 但是,当端口转发或网络地址转换 (NAT) 启用时
# 使用后,副本实际上可以通过不同的 IP 和端口访问
# 对。副本可以使用以下两个选项
# 向其主控报告一组特定的 IP 和端口,以便两者均为 INFO
# 和 ROLE 将报告这些值。
#
# 如果您只需要覆盖,则无需使用这两个选项
# 端口或IP地址。
#
# 副本-公告-ip 5.5.5.5
# 副本公告端口 1234

################################## 安全 ############### ####################

# 要求客户端在处理任何其他操作之前发出 AUTH <PASSWORD>
# 命令。这在您不信任的环境中可能很有用
# 其他有权访问运行 redis-server 的主机的人。
#
# 为了向后兼容,这应该被注释掉,因为大多数
# 人们不需要身份验证(例如他们运行自己的服务器)。
#
# 警告:由于 Redis 非常快,外部用户可以尝试
# 每秒 150k 密码对抗一个好的盒子。这意味着您应该
# 使用非常强的密码,否则很容易被破解。
#
lazyfree-lazy-eviction no


# 命令重命名。
#
# 可以更改共享中危险命令的名称
# 环境。例如 CONFIG 命令可能会被重命名为
# 很难猜测,因此它仍然可用于内部使用工具
# 但不适用于一般客户。
#
# 例子:
#
# 重命名命令 CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
#
# 也可以通过将命令重命名为来完全终止命令
# 一个空字符串:
#
# 重命名命令 CONFIG ""
#
# 请注意,更改登录到的命令的名称
# AOF 文件或传输到副本可能会导致问题。

#################################### 客户 ############## ######################

# 设置同时连接的最大客户端数。默认情况下
# 此限制设置为 10000 个客户端,但是如果 Redis 服务器不是
# 能够配置进程文件限制以允许指定的限制
# 允许的最大客户端数设置为当前文件限制
# 负 32(因为 Redis 保留了一些文件描述符供内部使用)。
#
# 一旦达到限制,Redis将关闭所有新发送的连接
# 错误“达到最大客户端数”。
#
# 最大客户端数 10000

############################## 内存管理 ################## ##############

# 将内存使用限制设置为指定的字节数。
# 当达到内存限制时Redis将尝试删除key
# 根据选择的驱逐策略(参见 maxmemory-policy)。
#
# 如果Redis无法根据策略删除key,或者策略是
# 设置为'noeviction',Redis将开始回复命令错误
# 会使用更多内存,如 SET、LPUSH 等,并且会继续
# 回复只读命令,如 GET。
#
# 当使用 Redis 作为 LRU 或 LFU 缓存,或者
# 为实例设置硬内存限制(使用“noeviction”策略)。
#
# 警告:如果您将副本附加到启用了 maxmemory 的实例,
# 减去提供副本所需的输出缓冲区的大小
# 从已用内存计数,这样网络问题/重新同步就会
# 不触发键被逐出的循环,并依次输出
# 副本缓冲区已满,被驱逐的键的 DEL 会触发删除
# 更多键,依此类推,直到数据库完全清空。
#
# 简而言之...如果您附加了副本,建议您设置较低的值
# 限制最大内存,以便系统上有一些可用 RAM 用于副本
# 输出缓冲区(但如果策略是“noeviction”则不需要)。
#
# 最大内存<字节>

# MAXMEMORY POLICY:当达到最大内存时,Redis 将如何选择删除哪些内容
# 到达了。您可以选择五种行为:
#
# volatile-lru -> 在具有过期设置的键中使用近似 LRU 进行驱逐。
# allkeys-lru -> 使用近似 LRU 驱逐任何键。
# volatile-lfu -> 在具有过期设置的键中使用近似 LFU 进行驱逐。
# allkeys-lfu -> 使用近似 LFU 驱逐任何键。
# volatile-random -> 从设置了过期时间的密钥中删除一个随机密钥。
# allkeys-random -> 删除随机密钥,任何密钥。
# volatile-ttl -> 删除过期时间最近的密钥(次要 TTL)
# noeviction -> 不驱逐任何东西,只是在写操作上返回错误。
#
# LRU 表示最近最少使用
# LFU 表示最不常用
#
# LRU、LFU 和 volatile-ttl 都是使用近似值实现的
# 随机算法。
#
# 注意:使用上述任何策略,Redis 都会在写入时返回错误
# 操作,当没有合适的键进行驱逐时。
#
# 在撰写本文时,这些命令是: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 执行排序
#
# 默认是:
#
# 最大内存策略无驱逐

# LRU、LFU 和最小 TTL 算法不是精确算法,而是近似算法
# 算法(为了节省内存),因此您可以调整它的速度或
# 准确性。默认情况下,Redis 将检查五个键并选择原来的一个
# 最近使用较少,您可以使用以下命令更改样本大小
# 配置指令。
#
# 默认值 5 可以产生足够好的结果。 10 非常接近
# 真正的 LRU 但消耗更多的 CPU。 3 速度更快,但不太准确。
#
# 最大内存样本 5

# 从Redis 5开始,默认情况下副本将忽略其最大内存设置
#(除非在故障转移后或手动提升为主)。它的意思是
# 密钥的驱逐将由主机处理,发送
# 向副本发出 DEL 命令,作为在主控端逐出的键。
#
# 此行为可确保主服务器和副本服务器保持一致,并且通常是
# 你想要什么,但是如果你的副本是可写的,或者你希望副本具有
# 不同的内存设置,并且您确定所有写入都执行到
# 副本是幂等的,那么你可以更改这个默认值(但一定要理解
# 你在做什么)。
#
# 请注意,由于副本默认情况下不会驱逐,因此它可能会最终使用更多
# 内存比通过 maxmemory 设置的内存大(某些缓冲区可能会
# 在副本上更大,或者数据结构有时可能需要更多内存,所以
# 向前)。因此,请确保监控您的副本并确保它们有足够的副本
# 在主设备命中之前,内存永远不会遇到真正的内存不足情况
# 配置的最大内存设置。
#
# 副本忽略最大内存是

############################### 懒惰释放 ################### ################

# Redis 有两个删除键的原语。一种称为 DEL,是一种阻塞式
# 删除对象。这意味着服务器停止处理新命令
# 为了回收与同步中的对象关联的所有内存
# 方式。如果删除的key与一个小对象关联,则需要的时间
# 为了执行 DEL 命令非常小并且与大多数其他命令相当
# Redis 中的 O(1) 或 O(log_N) 个命令。但是,如果该密钥与
# 包含数百万个元素的聚合值,服务器可以阻塞
# 需要很长时间(甚至几秒)才能完成操作。
#
# 由于上述原因,Redis 还提供了非阻塞删除原语
# 比如UNLINK(非阻塞DEL)和FLUSHALL的ASYNC选项以及
# FLUSHDB命令,以便在后台回收内存。那些命令
# 在恒定时间内执行。另一个线程将逐步释放
# 尽可能快地在后台运行对象。
#
# FLUSHALL 和 FLUSHDB 的 DEL、UNLINK 和 ASYNC 选项由用户控制。
# 由应用程序的设计来了解什么时候它是好的
# 想法使用其中之一。然而Redis服务器有时必须
# 作为其他操作的副作用,删除键或刷新整个数据库。
# 具体来说,Redis 删除对象与用户调用无关
# 以下场景:
#
# 1) 在驱逐时,由于 maxmemory 和 maxmemory 策略配置,
# 为了给新数据腾出空间,而不超出指定的范围
# 内存限制。
# 2) 由于过期:当某个键具有关联的生存时间时(请参阅
# EXPIRE 命令)必须从内存中删除。
# 3) 由于在某个键上存储数据的命令可能会产生副作用
# 已经存在。例如 RENAME 命令可能会删除旧密钥
# 替换为另一内容时的内容。同样SUNIONSTORE
# 或带有 STORE 选项的 SORT 可能会删除现有的键。设置命令
# 本身会删除指定键的所有旧内容以进行替换
# 使用指定的字符串。
# 4) 在复制期间,当副本执行完全重新同步时
# 它的主人,整个数据库的内容被删除以便
# 加载刚刚传输的RDB文件。
#
# 以上所有情况默认都是以阻塞方式删除对象,
# 就像 DEL 被调用一样。但是您可以具体配置每种情况
# 为了以非阻塞方式释放内存,就像 UNLINK 一样
# 被调用,使用以下配置指令:

lazyfree-lazy-expire no

lazyfree-lazy-server-del no

replica-lazy-flush no

appendonly yes


############################## 仅追加模式 ################# ##############

# 默认情况下,Redis 将数据集异步转储到磁盘上。这种模式是
# 在许多应用程序中足够好,但 Redis 进程存在问题或
# 断电可能会导致几分钟的写入丢失(取决于
# 配置的保存点)。
#
# 仅追加文件是另一种持久化模式,它提供
# 更好的耐用性。例如使用默认的数据fsync策略
#(见配置文件后面的内容)Redis 可能只丢失一秒的写入
# 戏剧性事件,例如服务器断电,或单个写入(如果有)
#错误是Redis进程本身发生的,但是操作系统是
# 仍然正确运行。
#
# AOF和RDB持久化可以同时启用,没有问题。
# 如果启动时启用了 AOF,Redis 将加载 AOF,即文件
# 具有更好的耐用性保证。
#
# 请查看 http://redis.io/topics/persistence 了解更多信息。

appendfilename "appendonly.aof"


# 仅追加文件的名称(默认:“appendonly.aof”)

appendfsync everysec


# fsync() 调用告诉操作系统实际将数据写入磁盘
# 而不是等待输出缓冲区中的更多数据。有些操作系统真的会刷新
# 磁盘上的数据,其他一些操作系统会尝试尽快执行此操作。
#
# Redis支持三种不同的模式:
#
# no:不要fsync,只是让操作系统在需要时刷新数据。快点。
# 始终:每次写入仅附加日志后进行 fsync。慢,最安全。
# everysec: 每秒仅 fsync 一次。妥协。
#
# 默认值为“everysec”,因为这通常是两者之间的正确折衷方案
# 速度和数据安全。是否可以放松这一点取决于您自己
# “no”将让操作系统在以下情况下刷新输出缓冲区
# 它想要更好的表现(但如果你能接受这样的想法
# 一些数据丢失考虑默认的持久化模式(快照),
# 或者相反,使用“always”,虽然速度很慢,但比它更安全
# 每秒。
#
#更多详情请查看以下文章:
# http://antirez.com/post/redis-persistence-demystified.html
#
# 如果不确定,请使用“everysec”。

# 总是追加fsync
# 每秒追加一次同步
# 追加同步没有

# 当AOF fsync策略设置为always或everysec时,以及后台
# 保存过程(后台保存或者AOF日志后台重写)是
# 在某些 Linux 配置中对磁盘执行大量 I/O
# Redis 可能会在 fsync() 调用上阻塞太长时间。请注意,没有修复
# 当前,即使在不同线程中执行 fsync 也会阻塞
# 我们的同步 write(2) 调用。
#
# 为了缓解这个问题,可以使用以下选项
# 这将阻止 fsync() 在主进程中被调用
# BGSAVE 或 BGREWRITEAOF 正在进行中。
#
# 这意味着当另一个孩子正在保存时,Redis的持久性是
# 与“appendfsync none”相同。实际上,这意味着
# 在最坏的情况下可能会丢失长达 30 秒的日志(使用
# 默认 Linux 设置)。
#
# 如果您有延迟问题,请将其设置为“是”。否则将其保留为
# 从耐用性的角度来看,“不”是最安全的选择。

no-appendfsync-on-rewrite no


# 自动重写仅附加文件。
# Redis能够自动隐式调用重写日志文件
# 当 AOF 日志大小增长指定百分比时 BGREWRITEAOF。
#
# 它是这样工作的:Redis 会记住 AOF 文件之后的大小
# 最近的重写(如果自重启后没有发生重写,则大小
# 使用启动时的 AOF)。
#
# 该基本尺寸与当前尺寸进行比较。如果当前尺寸为
# 大于指定百分比,则触发重写。还
# 你需要指定要重写的AOF文件的最小大小,这个
# 对于避免重写 AOF 文件很有用,即使百分比增加
# 已达到,但仍然很小。
#
# 指定零百分比以禁用自动 AOF
# 重写功能。

auto-aof-rewrite-percentage 100

auto-aof-rewrite-min-size 64mb


# Redis运行过程中可能会发现AOF文件末尾被截断
# 启动过程,当 AOF 数据加载回内存时。
# 当Redis运行的系统时可能会发生这种情况
# 崩溃,尤其是在没有安装 ext4 文件系统的情况下
# data=ordered 选项(但是当 Redis 本身时这不会发生
# 崩溃或中止,但操作系统仍然正常工作)。
#
# 当发生这种情况时,Redis 可以退出并出错,或者加载尽可能多的内容
# 尽可能数据(现在默认)并在找到 AOF 文件时启动
# 在末尾被截断。以下选项控制此行为。
#
# 如果 aof-load-truncated 设置为 yes,则加载截断的 AOF 文件并
# Redis 服务器开始发出日志以通知用户该事件。
# 否则,如果该选项设置为 no,服务器将中止并出现错误
# 并拒绝启动。当该选项设置为 no 时,用户需要
# 在重启之前使用“redis-check-aof”实用程序修复 AOF 文件
# 服务器。
#
# 注意如果中途会发现AOF文件损坏
# 服务器仍会因错误而退出。此选项仅适用于以下情况
# Redis 将尝试从 AOF 文件中读取更多数据,但字节数不足
# 将会被发现。
aof-load-truncated yes


# 重写 AOF 文件时,Redis 能够在文件中使用 RDB 前导码
# AOF 文件可实现更快的重写和恢复。当打开此选项时
# 重写后的 AOF 文件由两个不同的节组成:
#
# [RDB 文件][AOF 尾部]
#
# 加载Redis时识别到AOF文件以“REDIS”开头
# 字符串并加载带前缀的RDB文件,并继续加载AOF
# 尾巴。
aof-use-rdb-preamble yes


################################## LUA 脚本 ################ ##############

# Lua 脚本的最大执行时间(以毫秒为单位)。
#
# 如果达到最大执行时间,Redis 将记录脚本正在执行
# 在最大允许时间后仍在执行并将开始
# 回复有错误的查询。
#
# 当长时间运行的脚本超过最大执行时间时,仅
# SCRIPT KILL 和 SHUTDOWN NOSAVE 命令可用。第一个可以是
# 用于停止尚未调用写入命令的脚本。第二
# 是在写命令被执行的情况下关闭服务器的唯一方法
# 脚本已经发出但用户不想等待自然
# 脚本终止。
#
# 将其设置为 0 或负值以无限执行且不发出警告。
lua-time-limit 5000


################################ REDIS 集群 ################ ##############
#
# +++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++
# 警告实验:Redis Cluster 被认为是稳定的代码,但是
# 为了将其标记为“成熟”,我们需要等待一个不小的百分比
# 在生产中部署它的用户数量。
# +++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++
#
# 普通 Redis 实例不能成为 Redis 集群的一部分;只有那些节点
# 作为集群节点启动即可。为了启动一个 Redis 实例
# 集群节点启用集群支持取消注释以下内容:
#
# 启用集群是

# 每个集群节点都有一个集群配置文件。该文件不是
# 打算手动编辑。它由 Redis 节点创建和更新。
# 每个Redis集群节点都需要不同的集群配置文件。
# 确保同一系统中运行的实例没有
# 重叠的集群配置文件名。
#
# 集群配置文件nodes-6379.conf

# 集群节点超时是节点不可访问的毫秒数
# 将其视为失败状态。
# 大多数其他内部时间限制是节点超时的倍数。
#
# 集群节点超时 15000

# 故障主服务器的副本将避免启动故障转移,如果其数据
# 看起来太旧了。
#
# 没有简单的方法可以让副本真正精确测量
# 它的“数据年龄”,因此执行以下两项检查:
#
# 1) 如果有多个副本能够进行故障转移,它们会交换消息
# 为了尝试给最好的副本带来优势
# 复制偏移量(来自主服务器处理的更多数据)。
# 副本将尝试通过偏移量获取其排名,并应用于开始
# 故障转移的延迟与其等级成正比。
#
# 2) 每个副本计算最后一次交互的时间
# 它的主人。这可以是最后一次收到的 ping 或命令(如果主设备
# 仍处于“已连接”状态),或自连接以来经过的时间
# 与主服务器断开连接(如果复制链路当前已关闭)。
# 如果最后一次交互太旧,副本将不会尝试故障转移
# 根本没有。
#
# 用户可以调整点“2”。具体来说,副本将不会执行
# 故障转移如果自上次与主服务器交互以来的时间
# 经过的时间大于:
#
# (节点超时 * 副本有效性因子) + repl-ping-副本周期
#
# 例如,如果节点超时为 30 秒,并且副本有效性因子
# 为 10,假设默认 repl-ping-replica-period 为 10 秒,
# 如果副本无法与主服务器通信,则不会尝试故障转移
# 超过 310 秒。
#
# 较大的副本有效性因子可能允许数据太旧的副本进行故障转移
# 一个master,而太小的值可能会导致集群无法
# 完全选择一个副本。
#
# 为了获得最大可用性,可以设置副本有效性因子
# 值为 0,这意味着副本将始终尝试对
# master 无论他们上次与 master 交互是什么时候。
# (但是他们总是会尝试应用与他们的
# 偏移排名)。
#
# 零是唯一能够保证所有分区恢复时的值
# 集群始终能够继续运行。
#
# 集群副本有效性因子 10

# 集群副本能够迁移到孤立的主节点,即主节点
# 没有工作副本。这提高了集群能力
# 抵抗失败,否则孤立的主服务器无法进行故障转移
# 如果没有工作副本,则会发生故障。
#
# 仅当至少还有一个副本时,副本才会迁移到孤立的主服务器
# 旧主服务器的给定数量的其他工作副本。这个号码
# 是“迁移障碍”。迁移障碍为 1 意味着副本
# 仅当其主副本至少有 1 个其他工作副本时才会迁移
#等等。它通常反映了您想要的每个副本的数量
# 集群中的 master。
#
# 默认值为 1(仅当其主副本至少保留时,副本才会迁移
# 一个副本)。要禁用迁移,只需将其设置为非常大的值即可。
# 可以设置0值,但仅对调试有用且危险
# 生产中。
#
# 集群迁移屏障 1

# 默认情况下,Redis 集群节点如果检测到存在则停止接受查询
# 至少有一个哈希槽未被覆盖(没有可用节点为其提供服务)。
# 这样如果集群部分关闭(例如一系列哈希槽)
# 不再被覆盖)所有集群最终都会变得不可用。
# 一旦所有槽位再次被覆盖,它就会自动返回可用状态。
#
# 然而有时你想要集群的子集正在工作,
# 继续接受对仍然存在的键空间部分的查询
# 覆盖。为此,只需设置 cluster-require-full-coverage
# 选项改为否。
#
# cluster-require-full-coverage 是

# 当设置为 yes 时,此选项可防止副本尝试对其进行故障转移
# 主站故障期间的主站。然而主人仍然可以执行
# 手动故障转移(如果被迫这样做)。
#
# 这在不同的场景下很有用,特别是在多个的情况下
# 数据中心运营,我们希望一方永远不会晋升,如果没有的话
# 在 DC 完全故障的情况下。
#
# 集群副本无故障转移否

# 为了设置集群,请务必阅读文档
# 可在 http://redis.io 网站上找到。

########################## 集群 DOCKER/NAT 支持 ################### #####

# 在某些部署中,Redis Cluster节点地址发现失败,因为
# 地址经过 NAT 处理或因为端口被转发(典型情况是
# Docker 和其他容器)。
#
# 为了让Redis Cluster在这样的环境下工作,需要一个静态的
# 需要每个节点都知道其公共地址的配置。这
# 以下两个选项用于此范围,分别是:
#
# * 集群公告 IP
# * 集群公告端口
# * 集群公告总线端口
#
# 每个节点都向节点指示其地址、客户端端口和集群消息
# 总线端口。然后,该信息将发布在总线数据包的标头中
# 这样其他节点就能正确映射该节点的地址
# 发布信息。
#
# 如果不使用上述选项,则正常Redis Cluster自动检测
# 将使用 # 代替。
#
# 请注意,重新映射时,总线端口可能不在固定偏移处
# 客户端端口 + 10000,因此您可以根据需要指定任何端口和总线端口
# 关于它们如何重新映射。如果未设置总线端口,则固定偏移量为
# 10000 将照常使用。
#
# 例子:
#
# 集群公告 IP 10.1.1.5
# 集群公告端口 6379
# 集群公告总线端口 6380

####################################慢日志############## ####################

# Redis 慢日志是记录超出指定时间的查询的系统
# 执行时间处理时间。执行时间不包括I/O操作
# 比如与客户交谈、发送回复等等,
# 但只是实际执行命令所需的时间(这是唯一的
# 命令执行阶段,线程被阻塞且无法服务
# 同时还有其他请求)。
#
# 可以用两个参数配置慢日志:一是告诉Redis
# 执行时间要超过多少(以微秒为单位)
# 获取日志的命令,另一个参数是日志的长度
# 慢日志。当记录新命令时,最旧的命令将从
# 记录命令的队列。

# 下面的时间以微秒表示,所以相当于1000000
# 到一秒。请注意,负数会禁用慢日志,而
# 值为零会强制记录每个命令。
slowlog-log-slower-than 10000


# 这个长度没有限制。请注意,它会消耗内存。
# 你可以通过SLOWLOG RESET来回收慢日志使用的内存。
slowlog-max-len 128


################################## 延迟监视器 ################ ##############

# Redis延迟监控子系统对不同操作进行采样
# 在运行时收集与可能的来源相关的数据
# Redis 实例的延迟。
#
# 通过 LATENCY 命令,用户可以获得此信息
# 打印图表并获取报告。
#
# 系统只记录在等于或等于时间内执行的操作
# 大于通过指定的毫秒数
# 延迟监视器阈值配置指令。当它的值被设置时
# 为零,延迟监视器关闭。
#
# 默认情况下,延迟监控被禁用,因为大多数情况下不需要它
# 如果你没有延迟问题,并且收集数据有性能
# 影响,虽然很小,但可以在大负载下测量。潜伏
# 使用命令可以在运行时轻松启用监控
# 如果需要,“CONFIG SET 延迟监视器阈值 <毫秒>”。
latency-monitor-threshold 0


############################# 事件通知 ################### ###########

# Redis 可以通知 Pub/Sub 客户端有关键空间中发生的事件。
# 此功能记录在 http://redis.io/topics/notifications
#
# 例如,如果启用了键空间事件通知,并且客户端
# 对数据库0、2中存储的键“foo”执行DEL操作
# 条消息将通过 Pub/Sub 发布:
#
# 发布 __keyspace@0__:foo del
# 发布 __keyevent@0__:del foo
#
# 可以从一组中选择Redis将通知的事件
# 课程数量。每个类都由一个字符标识:
#
# K 个 Keyspace 事件,以 __keyspace@<db>__ 前缀发布。
# E Keyevent 事件,以 __keyevent@<db>__ 前缀发布。
# g 通用命令(非特定类型),例如 DEL、EXPIRE、RENAME,...
# $ 字符串命令
# l 列出命令
#s 设置命令
#h 哈希命令
# z 排序集命令
# x 过期事件(每次密钥过期时生成的事件)
# e Evicted events(当某个键被驱逐达到最大内存时生成的事件)
# g$lshzxe 的别名,因此“AKE”字符串表示所有事件。
#
# “notify-keyspace-events”将组成的字符串作为参数
# 零个或多个字符。空字符串表示通知
# 已禁用。
#
# 示例:启用列表事件和通用事件,从
# 事件名称,使用:
#
# 通知键空间事件 Elg
#
# 示例2:获取订阅频道的过期密钥流
# name __keyevent@0__:过期使用:
#
# 通知键空间事件 Ex
#
# 默认情况下,所有通知均被禁用,因为大多数用户不需要
# 这个功能和功能有一些开销。请注意,如果您不这样做
# 至少指定 K 或 E 之一,则不会传递任何事件。
notify-keyspace-events ""


############################### 高级配置 ################# ##############

# 当哈希值具有内存效率时,哈希值将使用内存有效的数据结构进行编码
# 条目数量较少,且最大条目不超过给定
# 临界点。可以使用以下指令配置这些阈值。
hash-max-ziplist-entries 512

hash-max-ziplist-value 64


# 列表也以特殊方式编码以节省大量空间。
# 可以指定每个内部列表节点允许的条目数
# 作为固定的最大大小或最大元素数。
# 对于固定的最大大小,使用-5到-1,意思是:
# -5:最大大小:64 Kb <-- 不建议用于正常工作负载
# -4: 最大大小: 32 Kb <-- 不推荐
# -3:最大大小:16 Kb <-- 可能不推荐
# -2:最大大小:8 Kb <-- 好
# -1:最大大小:4 Kb <-- 好
# 正数意味着最多存储_恰好_该数量的元素
# 每个列表节点。
# 最高性能选项通常是 -2(8 Kb 大小)或 -1(4 Kb 大小),
# 但如果您的用例是独特的,请根据需要调整设置。
list-max-ziplist-size -2


# 列表也可以被压缩。
# 压缩深度是来自*每一*侧的quicklist ziplist节点的数量
# 从压缩中*排除*的列表。列表的头部和尾部
# 始终未压缩以进行快速推送/弹出操作。设置为:
# 0: 禁用所有列表压缩
# 1: 深度 1 表示“直到 1 个节点进入列表后才开始压缩,
# 从头部或尾部开始”
# 所以:[head]->node->node->...->node->[tail]
# [head], [tail] 永远不会被压缩;内部节点将被压缩。
# 2: [头]->[下一个]->节点->节点->...->节点->[上一个]->[尾部]
# 2 这里的意思是:不压缩 head 或 head->next 或 tail->prev 或 tail,
# 但压缩它们之间的所有节点。
# 3: [头]->[下一个]->[下一个]->节点->节点->...->节点->[上一个]->[上一个]->[尾]
# ETC。
list-compress-depth 0


# 集合仅在一种情况下具有特殊编码:当集合组成时
# 刚好是范围内基数 10 的整数的字符串
# 64 位有符号整数。
# 以下配置设置设置了大小限制
# 设置以便使用这种特殊的内存节省编码。
set-max-intset-entries 512


# 与哈希和列表类似,排序集也经过特殊编码
# 为了节省大量空间。仅当长度和
# 有序集合的元素低于以下限制:
zset-max-ziplist-entries 128

zset-max-ziplist-value 64


# HyperLogLog 稀疏表示字节数限制。该限制包括
# 16 字节标头。当使用稀疏表示的 HyperLogLog 交叉时
# 这个限制,它被转换成稠密表示。
#
# 大于 16000 的值完全没有用,因为此时
# 密集表示具有更高的内存效率。
#
# 建议值为 ~ 3000,以便获得以下好处
# 节省空间的编码,不会减慢 PFADD 太多,
# 稀疏编码的复杂度为 O(N)。该值可以提高到
# ~ 10000,当 CPU 不是问题,但空间是,并且数据集是
# 由许多 HyperLogLog 组成,基数在 0 - 15000 范围内。
hll-sparse-max-bytes 3000


# 流宏节点最大大小/项目。流数据结构是基数
# 内部编码多个项目的大节点树。使用此配置
# 可以配置单个节点的大小(以字节为单位),并且
# 当切换到新节点之前它可以包含的最大项目数
# 附加新的流条目。如果以下任一设置被设置为
# 零,限制被忽略,所以例如可以只设置一个
# 通过将 max-bytes 设置为 0 并将 max-entries 设置为所需的值来限制最大整体数
# 价值。
stream-node-max-bytes 4096

stream-node-max-entries 100


# 主动重新哈希每 100 毫秒的 CPU 时间使用 1 毫秒
# 为了帮助重新散列主 Redis 散列表(映射顶级的散列表)
# 值的键)。 Redis 使用的哈希表实现(参见 dict.c)
# 执行惰性重新哈希:对哈希表执行的操作越多
# 即重新散列,执行的重新散列“步骤”越多,因此如果
# 服务器空闲,重新哈希永远不会完成,并且使用了更多内存
# 通过哈希表。
#
# 默认情况下每秒使用该毫秒 10 次,以便
# 主动重新哈希主要字典,尽可能释放内存。
#
# 如果不确定:
# 如果您有硬延迟要求,请使用“activerehashing no”
# 在你的环境中,Redis 不时回复并不是一件好事
# 延迟 2 毫秒的查询。
#
# 如果你没有这么硬的要求,但是使用“activerehashing yes”
# 如果可能的话希望尽快释放内存。
activerehashing yes


# 客户端输出缓冲区限制可用于强制断开客户端连接
# 由于某种原因,从服务器读取数据的速度不够快(a
# 常见原因是 Pub/Sub 客户端消费消息的速度不如
# 出版商可以制作它们)。
#
# 可以为三种不同类别的客户端设置不同的限制:
#
# 正常 -> 正常客户端,包括 MONITOR 客户端
# 副本 -> 副本客户端
# pubsub -> 客户端订阅了至少一个 pubsub 通道或模式
#
# 每个 client-output-buffer-limit 指令的语法如下:
#
# client-output-buffer-limit <类> <硬限制> <软限制> <软秒>
#
# 一旦达到硬限制,或者如果
# 已达到软限制并在指定数量内保持达到状态
# 秒(连续)。
# 例如,如果硬限制是 32 MB,软限制是
# 16兆/10秒,客户端将立即断开连接
# 如果输出缓冲区的大小达到 32 MB,但也会得到
# 如果客户端达到16兆并不断克服则断开连接
# 10 秒的限制。
#
# 默认情况下普通客户端不受限制,因为他们不接收数据
# 不询问(以推送方式),但只是在请求之后,所以仅
# 异步客户端可能会创建更快地请求数据的场景
# 比它能读的多。
#
# 相反,对于 pubsub 和副本客户端有一个默认限制,因为
# 订阅者和副本以推送方式接收数据。
#
# 硬限制或软限制都可以通过将其设置为零来禁用。
client-output-buffer-limit normal 0 0 0

client-output-buffer-limit replica 256mb 64mb 60

client-output-buffer-limit pubsub 32mb 8mb 60


# 客户端查询缓冲区累积新命令。它们仅限于固定的
# 默认数量以避免协议不同步(对于
# 由于客户端中的错误而导致的实例)将导致未绑定的内存使用
# 查询缓冲区。但是如果你有非常特殊的情况,你可以在这里配置它
# 需求,例如巨大的多重/执行请求或类似请求。
#
# 客户端查询缓冲区限制 1GB

# Redis协议中,批量请求,即代表单个的元素
# 字符串,通常限制为 512 mb。但是您可以更改此限制
# 这里。
#
# 原型最大批量长度 512mb

# Redis 调用内部函数来执行许多后台任务,例如
# 超时关闭客户端连接,清除过期的密钥
# 从未请求过,等等。
#
# 并非所有任务都以相同的频率执行,但 Redis 会检查
# 根据指定的“hz”值执行的任务。
#
# 默认情况下“hz”设置为 10。提高该值将在以下情况下使用更多 CPU
# Redis 处于空闲状态,但同时会让 Redis 响应速度更快
# 有很多key同时过期,可能会超时
# 处理得更精确。
#
# 范围在 1 到 500 之间,但通常不会超过 100
# 一个好主意。大多数用户应使用默认值 10 并将其提高到
# 100 仅在需要极低延迟的环境中。
hz 10


# 通常,HZ 值与频率成正比是有用的
# 连接的客户端数量。这很有用,例如
# 避免每次后台任务调用处理太多客户端
# 为了避免延迟峰值。
#
# 由于Redis默认的HZ值保守设置为10,
# 提供并默认启用使用自适应 HZ 值的能力
# 当有许多连接的客户端时,这会暂时引发。
#
# 启用动态HZ时,将使用实际配置的HZ
# 作为基线,但实际上是配置的 HZ 值的倍数
# 一旦有更多客户端连接,就根据需要使用。这样就闲置了
# 实例将使用很少的 CPU 时间,而繁忙的实例将使用
# 反应更快。
dynamic-hz yes


# 当子进程重写 AOF 文件时,如果启用以下选项
# 每生成 32 MB 数据,文件就会进行 fsync 一次。这很有用
# 为了将文件更增量地提交到磁盘并避免
# 大延迟峰值。
aof-rewrite-incremental-fsync yes


# redis保存RDB文件时,如果启用以下选项
# 每生成 32 MB 数据,文件就会进行 fsync 一次。这很有用
# 为了将文件更增量地提交到磁盘并避免
# 大延迟峰值。
rdb-save-incremental-fsync yes


# Redis LFU 驱逐(参见 maxmemory 设置)可以调整。不过这是一个很好的
# 想法从默认设置开始,仅在调查后更改它们
# 如何提高性能以及密钥 LFU 如何随时间变化
# 可以通过 OBJECT FREQ 命令进行检查。
#
# Redis LFU 实现中有两个可调参数:
# 计数器对数因子和计数器衰减时间。重要的是要
# 在更改这两个参数之前先了解它们的含义。
#
# LFU计数器每个key只有8位,它的最大值是255,所以Redis
# 使用具有对数行为的概率增量。给定值
# 旧的计数器,当访问一个键时,计数器会增加
# 这边走:
#
# 1. 提取0到1之间的随机数R。
# 2. 概率P计算为1/(old_value*lfu_log_factor+1)。
# 3. 仅当 R < P 时计数器才会递增。
#
# 默认的 lfu-log-factor 是 10。这是频率的表格
# 计数器随着不同的访问次数而变化
# 对数因子:
#
# +--------+------------+------------+------------+ ------------+------------+
#|因素| 100 次点击 | 1000 次点击 | 10 万次点击 | 100 万次点击 | 1000 万次点击 |
# +--------+------------+------------+------------+ ------------+------------+
#| 0 | 104 | 104 255 | 255 255 | 255 255 | 255 255 | 255
# +--------+------------+------------+------------+ ------------+------------+
#| 1 | 18 | 18 49 | 49 255 | 255 255 | 255 255 | 255
# +--------+------------+------------+------------+ ------------+------------+
#| 10 | 10 10 | 10 18 | 18 142 | 142 255 | 255 255 | 255
# +--------+------------+------------+------------+ ------------+------------+
#| 100 | 100 8 | 11 | 11 49 | 49 143 | 143 255 | 255
# +--------+------------+------------+------------+ ------------+------------+
#
# 注:上表是通过运行以下命令获得的:
#
# redis-benchmark -n 1000000 incr foo
# redis-cli 对象 freq foo
#
# 注意2:计数器初始值为5,以便给新对象一个机会
# 累积点击量。
#
# 计数器衰减时间是必须按顺序流逝的时间(以分钟为单位)
# 将密钥计数器除以二(如果有值则递减
# 小于 <= 10)。
#
# lfu-decay-time 的默认值为 1。特殊值 0 表示
# 每次扫描计数器时都会衰减计数器。
#
# lfu-对数因子 10
# lfu 衰减时间 1

########################### 主动碎片整理 ##################### ##
#
# 警告此功能处于实验阶段。然而它经过了压力测试
# 即使在生产中并且由多个工程师手动测试某些
# 时间。
#
# 什么是主动碎片整理?
# ------------------------------------------
#
# 主动(在线)碎片整理允许 Redis 服务器压缩
# 内存中数据的小分配和释放之间留下的空间,
# 从而允许回收内存。
#
# 碎片是每个分配器都会发生的自然过程(但是
# 幸运的是,Jemalloc 的情况较少)和某些工作负载。一般是服务器
# 需要重新启动才能减少碎片,或者至少刷新
# 删除所有数据并重新创建。不过多亏了这个功能
# 由 Oran Agra 为 Redis 4.0 实现,此过程可以在运行时发生
# 在服务器运行时以“热”方式。
#
# 基本上当碎片超过一定程度时(参见
# 下面的配置选项)Redis 将开始创建新的副本
# 通过利用某些特定的 Jemalloc 来获取连续内存区域中的值
# 特征(为了了解分配是否导致碎片
# 并将其分配到更好的地方),同时,将释放
# 数据的旧副本。对所有键增量重复此过程
# 将导致碎片回落到正常值。
#
# 需要理解的重要事项:
#
# 1.这个功能默认是关闭的,只有编译了Redis才有效
# 要使用 Jemalloc 的副本,我们随 Redis 的源代码一起提供。
# 这是 Linux 版本的默认设置。
#
# 2. 如果你没有碎片,你永远不需要启用这个功能
# 问题。
#
# 3. 一旦遇到碎片,您可以在以下情况下启用此功能:
# 需要与命令“CONFIG SET activedefrag yes”一起使用。
#
# 配置参数能够微调的行为
# 碎片整理过程。如果您不确定它们的意思
# 最好保持默认值不变。

# 启用主动碎片整理
# activedefrag 是

# 启动主动碎片整理所需的最小碎片浪费量
# 活动碎片整理忽略字节 100mb

# 启动活动碎片整理的最小碎片百分比
# 活动碎片整理阈值下限 10

# 我们使用最大努力的最大碎片百分比
# 活动碎片整理阈值上限 100

# CPU 百分比碎片整理的最小努力
# 活动碎片整理周期分钟 5

# CPU 百分比中碎片整理的最大努力
# 活动碎片整理周期最大 75

# 将处理的 set/hash/zset/list 字段的最大数量
# 主要字典扫描
# 活动碎片整理最大扫描字段 1000


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值