好的,这是您提供的 Redis 配置文件(redis.conf
)中注释部分的中文翻译。我将按照原文的结构和段落,为您逐一翻译。
配置注释翻译
文件头部(General)
# 请注意,为了读取配置文件,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 都表示相同的值。
模块 (MODULES)
# 启动时加载模块。如果服务器无法加载模块,它将中止。可以使用多个 loadmodule 指令。
#
# loadmodule /path/to/my_module.so
# loadmodule /path/to/other_module.so
网络 (NETWORK)
# 默认情况下,如果未指定 "bind" 配置指令,Redis 会监听服务器上所有可用的网络接口的连接。
# 可以使用 "bind" 配置指令,后跟一个或多个 IP 地址,来只监听一个或多个选定的接口。
#
# 示例:
#
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1 ::1
#
# ~~~ 警告 ~~~ 如果运行 Redis 的计算机直接暴露在互联网上,绑定到所有接口是危险的,会将实例暴露给互联网上的所有人。因此,默认我们取消了以下 bind 指令的注释,它将强制 Redis 只监听 IPv4 回环接口地址(这意味着 Redis 只能接受来自运行在同一台计算机上的客户端的连接)。
#
# 如果您确定希望您的实例监听所有接口,只需注释掉下面这一行即可。
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 保护模式是一层安全保护,旨在避免暴露在互联网上的 Redis 实例被访问和利用。
#
# 当保护模式开启且满足以下条件时:
#
# 1) 服务器没有使用 "bind" 指令明确绑定到一组地址。
# 2) 没有配置密码。
#
# 服务器只接受来自 IPv4 和 IPv6 回环地址 127.0.0.1 和 ::1,以及 Unix 域套接字的连接。
#
# 默认情况下保护模式是启用的。只有当您确定即使没有配置认证或未通过 "bind" 指令明确列出特定接口,您也希望其他主机的客户端能够连接到 Redis 时,才应该禁用它。
# 在指定的端口上接受连接,默认是 6379(IANA #815344)。
# 如果端口指定为 0,Redis 将不会监听 TCP 套接字。
# TCP listen() 待处理连接队列(backlog)。
#
# 在高每秒请求量(requests-per-second)的环境中,您需要一个较高的 backlog 值,以避免慢速客户端连接问题。请注意,Linux 内核会悄悄地将此值截断为 /proc/sys/net/core/somaxconn 的值,因此请确保同时提高 somaxconn 和 tcp_max_syn_backlog 的值,以获得期望的效果。
# Unix 套接字。
#
# 指定用于监听传入连接的 Unix 套接字路径。没有默认值,因此在未指定时,Redis 不会监听 Unix 套接字。
#
# unixsocket /tmp/redis.sock
# unixsocketperm 700
# 在客户端空闲 N 秒后关闭连接(0 表示禁用)
# TCP keepalive。
#
# 如果非零,在没有通信的情况下,使用 SO_KEEPALIVE 向客户端发送 TCP ACKs。这有两个好处:
#
# 1) 检测死掉的对端。
# 2) 从中间网络设备的角度来看,保持连接活跃。
#
# 在 Linux 上,指定的值(单位为秒)是用于发送 ACK 的周期。
# 请注意,需要两倍的时间才能关闭连接。
# 在其他内核上,周期取决于内核配置。
#
# 这个选项的合理值为 300 秒,这也是从 Redis 3.2.1 开始的新默认值。
通用 (GENERAL)
# 默认情况下,Redis 不作为守护进程运行。如果您需要,请使用 'yes'。
# 请注意,当以守护进程运行时,Redis 会在 /var/run/redis.pid 写入一个 pid 文件。
# 如果您从 upstart 或 systemd 运行 Redis,Redis 可以与您的监督树交互。选项:
# supervised no - 不进行任何监督交互
# supervised upstart - 通过将 Redis 置于 SIGSTOP 模式来通知 upstart
# supervised systemd - 通过向 $NOTIFY_SOCKET 写入 READY=1 来通知 systemd
# supervised auto - 根据 UPSTART_JOB 或 NOTIFY_SOCKET 环境变量检测 upstart 或 systemd 方法
# 注意:这些监督方法仅发出“进程已准备就绪”的信号。它们不启用持续的存活心跳(liveness pings)以回报给您的监督器。
# 如果指定了 pid 文件,Redis 会在启动时将其写入指定位置并在退出时删除。
#
# 当服务器非守护进程运行时,如果没有在配置中指定,则不会创建 pid 文件。当服务器以守护进程运行时,即使未指定,也会使用 pid 文件,默认为 "/var/run/redis.pid"。
#
# 创建 pid 文件是尽力而为:如果 Redis 无法创建它,也不会有坏事发生,服务器将正常启动和运行。
# 指定服务器的日志详细级别。
# 可以是以下之一:
# debug (大量信息,对开发/测试有用)
# verbose (许多很少有用的信息,但不像 debug 级别那样混乱)
# notice (适度详细,可能是您在生产环境中想要的)
# warning (只记录非常重要 / 关键的消息)
# 指定日志文件名。也可以使用空字符串来强制 Redis 将日志输出到标准输出。请注意,如果您将标准输出用于日志记录但以守护进程方式运行,日志将被发送到 /dev/null。
# 要启用日志记录到系统日志,只需将 'syslog-enabled' 设置为 yes,并可选择更新其他 syslog 参数以适应您的需求。
# syslog-enabled no
# 指定系统日志标识。
# syslog-ident redis
# 指定系统日志工具(facility)。必须是 USER 或 LOCAL0-LOCAL7 之间。
# syslog-facility local0
# 设置数据库的数量。默认数据库是 DB 0,您可以通过使用 SELECT <dbid> 命令来为每个连接选择一个不同的数据库,其中 dbid 是一个介于 0 到 'databases'-1 之间的数字。
# 默认情况下,只有当日志记录到标准输出且标准输出是 TTY 时,Redis 才会显示 ASCII 艺术徽标。基本上,这意味着徽标通常只在交互式会话中显示。
#
# 然而,通过将以下选项设置为 yes,可以强制恢复到 4.0 之前的行为,总是在启动日志中显示 ASCII 艺术徽标。
快照 (SNAPSHOTS)
# 将数据库保存到磁盘:
#
# save <seconds> <changes>
#
# 如果同时满足给定的秒数和对数据库的写入操作次数,就会保存数据库。
#
# 在下面的示例中,行为是保存:
# 在 900 秒(15 分钟)后,如果至少有 1 个键发生变化
# 在 300 秒(5 分钟)后,如果至少有 10 个键发生变化
# 在 60 秒后,如果至少有 10000 个键发生变化
#
# 注意:您可以通过注释掉所有 "save" 行来完全禁用保存。
#
# 也可以通过添加一个带单个空字符串参数的 save 指令来移除所有先前配置的保存点,如以下示例所示:
#
# save ""
# 默认情况下,如果 RDB 快照已启用(至少有一个保存点)且最近一次后台保存失败,Redis 将停止接受写入。
# 这将以一种(硬性的)方式让用户意识到数据没有被正确地持久化到磁盘上,否则可能没有人会注意到,直到发生灾难。
#
# 如果后台保存进程再次开始工作,Redis 将自动再次允许写入。
#
# 然而,如果您已经为 Redis 服务器和持久化设置了适当的监控,您可能希望禁用此功能,以便即使磁盘、权限等有问题,Redis 也能像往常一样继续工作。
# 在转储 .rdb 数据库时,使用 LZF 压缩字符串对象吗?
# 默认情况下,这设置为 'yes',因为它几乎总是一个好选择。
# 如果您想在保存子进程中节省一些 CPU,将其设置为 'no',但如果您有可压缩的值或键,数据集可能会变大。
# 从 RDB 版本 5 开始,文件末尾会放置一个 CRC64 校验和。
# 这使得格式更能抵抗损坏,但保存和加载 RDB 文件时会付出性能代价(约 10%),因此您可以禁用它以获得最大性能。
#
# 使用禁用校验和创建的 RDB 文件将拥有一个零校验和,这会告诉加载代码跳过检查。
# 转储数据库的文件名
# 工作目录。
#
# 数据库将在此目录内写入,文件名由上面的 'dbfilename' 配置指令指定。
#
# 追加文件(Append Only File)也将在此目录内创建。
#
# 请注意,您必须在此处指定一个目录,而不是文件名。
复制 (REPLICATION)
# 主-副本复制。使用 replicaof 将一个 Redis 实例作为另一个 Redis 服务器的副本。关于 Redis 复制,有几点需要尽快理解。
#
# +------------------+ +---------------+
# | Master | ---> | Replica |
# | (接受写入) | | (精确副本) |
# +------------------+ +---------------+
#
# 1) Redis 复制是异步的,但您可以配置主库,如果它似乎没有连接到至少给定数量的副本,就停止接受写入。
# 2) 如果复制链接在相对较短的时间内丢失,Redis 副本能够与主库执行部分重新同步。您可能需要根据您的需求,将复制积压队列大小(replication backlog size,请参阅此文件的下一部分)配置为一个合理的值。
# 3) 复制是自动的,不需要用户干预。在发生网络分区后,副本会自动尝试重新连接到主库并与其重新同步。
#
# replicaof <masterip> <masterport>
# 如果主库受密码保护(使用下面的 "requirepass" 配置指令),可以告知副本在开始复制同步过程前进行认证,否则主库将拒绝副本的请求。
#
# masterauth <master-password>
# 当副本与其主库失去连接,或者当复制仍在进行中时,副本可以以两种不同的方式工作:
#
# 1) 如果 replica-serve-stale-data 设置为 'yes'(默认值),副本将仍然响应客户端请求,可能提供过时的数据,或者如果这是第一次同步,数据集可能只是空的。
#
# 2) 如果 replica-serve-stale-data 设置为 'no',副本将对所有命令(除了 INFO、replicaOF、AUTH、PING、SHUTDOWN、REPLCONF、ROLE、CONFIG、SUBSCRIBE、UNSUBSCRIBE、PSUBSCRIBE、PUNSUBSCRIBE、PUBLISH、PUBSUB、COMMAND、POST、HOST: 和 LATENCY)回复错误 "SYNC with master in progress"。
# 您可以配置一个副本实例是否接受写入。对副本实例进行写入可能对存储一些临时数据有用(因为写入到副本上的数据在与主库重新同步后会很容易被删除),但如果客户端因配置错误而向其写入,也可能导致问题。
#
# 从 Redis 2.6 开始,副本默认为只读。
#
# 注意:只读副本并非设计用于暴露给互联网上不受信任的客户端。它只是一个针对实例误用的保护层。只读副本默认仍然导出所有管理性命令,如 CONFIG、DEBUG 等。在有限的范围内,您可以通过 'rename-command' 隐藏所有管理性/危险命令来提高只读副本的安全性。
# 复制同步策略:磁盘或套接字。
#
# -------------------------------------------------------
# 警告:无盘复制目前是实验性的
# -------------------------------------------------------
#
# 新的副本和无法通过只接收差异来继续复制进程的重新连接的副本,需要执行所谓的“完全同步”。一个 RDB 文件将从主库传输到副本。传输可以以两种不同的方式进行:
#
# 1) 基于磁盘:Redis 主库创建一个新进程,将 RDB 文件写入磁盘。稍后,该文件由父进程以增量方式传输给副本。
# 2) 无盘:Redis 主库创建一个新进程,直接将 RDB 文件写入副本套接字,完全不接触磁盘。
#
# 使用基于磁盘的复制,当 RDB 文件正在生成时,可以对更多副本进行排队,并在生成 RDB 文件的当前子进程完成工作后,立即将 RDB 文件提供给它们。而使用无盘复制,一旦传输开始,新到达的副本将被排队,并在当前传输结束后才会开始新的传输。
#
# 当使用无盘复制时,主库会等待一段可配置的时间(单位为秒),然后才开始传输,以期能有多个副本到达,从而可以并行化传输。
#
# 如果磁盘较慢而网络较快(带宽大),无盘复制效果更好。
# 当启用无盘复制时,可以配置服务器在生成子进程通过套接字传输 RDB 之前等待的延迟时间。
#
# 这很重要,因为一旦传输开始,就不可能为新到达的副本服务,它们将被排队等待下一次 RDB 传输,因此服务器会等待一个延迟,以让更多副本到达。
#
# 延迟以秒为单位指定,默认是 5 秒。要完全禁用它,只需将其设置为 0 秒,传输将尽快开始。
# 副本以预设的间隔向服务器发送 PING。可以使用 repl_ping_replica_period 选项更改此间隔。默认值为 10 秒。
#
# repl-ping-replica-period 10
# 以下选项设置复制超时:
#
# 1) 从副本角度来看,SYNC 期间的批量传输 I/O。
# 2) 从副本角度来看,主库的超时(数据,ping)。
# 3) 从主库角度来看,副本的超时(REPLCONF ACK ping)。
#
# 重要的是,要确保此值大于为 repl-ping-replica-period 指定的值,否则每当主库和副本之间流量较低时,都会被检测到超时。
#
# repl-timeout 60
# SYNC 后在副本套接字上禁用 TCP_NODELAY 吗?
#
# 如果您选择 "yes",Redis 将使用更少的 TCP 包和更少的带宽向副本发送数据。但这可能会增加数据在副本端出现的延迟,对于使用默认配置的 Linux 内核,延迟可能高达 40 毫秒。
#
# 如果您选择 "no",数据在副本端出现的延迟将减少,但复制将使用更多的带宽。
#
# 默认情况下,我们优化低延迟,但在非常高的流量条件下,或者当主库和副本之间有很多跳跃(hops)时,将其设置为 "yes" 可能是一个好主意。
# 设置复制积压队列大小(replication backlog size)。积压队列是一个缓冲区,当副本断开连接一段时间后,它会积累复制数据,以便当副本再次想要重新连接时,通常不需要完全重新同步,而只需要部分重新同步,传递副本在断开连接期间错过的那部分数据就足够了。
#
# 复制积压队列越大,副本可以断开连接并随后进行部分重新同步的时间就越长。
#
# 只有当至少有一个副本连接时,才会分配积压队列。
#
# repl-backlog-size 1mb
# 在主库没有连接的副本一段时间后,积压队列将被释放。以下选项配置从最后一个副本断开连接的时间开始,需要经过多少秒后,积压队列缓冲区才会被释放。
#
# 请注意,副本永远不会因超时而释放积压队列,因为它们稍后可能会被提升为主库,并且应该能够正确地与副本进行“部分重新同步”:因此它们应该始终积累积压队列。
#
# 值为 0 意味着永远不释放积压队列。
#
# repl-backlog-ttl 3600
# 副本优先级是 Redis 在 INFO 输出中发布的一个整数。它被 Redis Sentinel 用于在主库不再正常工作时,选择一个副本提升为主库。
#
# 具有较低优先级数字的副本被认为更适合提升,因此例如,如果三个副本的优先级分别为 10、100、25,Sentinel 将选择优先级为 10 的那个,即最低的。
#
# 然而,一个特殊的优先级 0 标志着该副本无法扮演主库的角色,因此优先级为 0 的副本永远不会被 Redis Sentinel 选为提升。
#
# 默认优先级是 100。
# 一个主库可以停止接受写入,如果连接的副本少于 N 个,并且它们的延迟小于或等于 M 秒。
#
# 这 N 个副本需要处于“在线”状态。
#
# 延迟(以秒为单位)必须小于或等于指定值,它是根据从副本收到的最后一次 ping 计算的,ping 通常每秒发送一次。
#
# 这个选项不能保证 N 个副本会接受写入,但会在没有足够副本可用时,将丢失写入的风险窗口限制在指定的秒数内。
#
# 例如,要要求至少 3 个副本且延迟 <= 10 秒,请使用:
#
# min-replicas-to-write 3
# min-replicas-max-lag 10
#
# 将其中任何一个设置为 0 将禁用该功能。
#
# 默认情况下,min-replicas-to-write 设置为 0(功能禁用),min-replicas-max-lag 设置为 10。
# Redis 主库能够以不同方式列出所连接副本的地址和端口。例如,“INFO replication”部分提供了此信息,Redis Sentinel 等工具使用此信息来发现副本实例。
# 此信息可用的另一个地方是主库的“ROLE”命令输出中。
#
# 副本通常报告的 IP 和地址是通过以下方式获得的:
#
# IP:地址通过检查副本用于连接主库的套接字的对端地址来自动检测。
#
# 端口:端口由副本在复制握手期间通信,通常是副本用于监听连接的端口。
#
# 然而,当使用端口转发或网络地址转换(NAT)时,副本实际上可能通过不同的 IP 和端口对访问。以下两个选项可由副本使用,以向其主库报告一组特定的 IP 和端口,以便 INFO 和 ROLE 都将报告这些值。
#
# 如果您只需要覆盖端口或 IP 地址,则无需同时使用这两个选项。
#
# replica-announce-ip 5.5.5.5
# replica-announce-port 1234
安全 (SECURITY)
# 在处理任何其他命令之前,要求客户端发出 AUTH <PASSWORD>。这在您不信任可以访问运行 redis-server 的主机的人的环境中可能有用。
#
# 为了向后兼容,并且因为大多数人不需要认证(例如,他们运行自己的服务器),这应该保持注释掉。
#
# 警告:由于 Redis 速度非常快,一个外部用户可以针对一台性能良好的机器每秒尝试多达 15 万次密码。这意味着您应该使用一个非常强的密码,否则将很容易被破解。
#
# requirepass foobared
# 命令重命名。
#
# 在共享环境中,可以更改危险命令的名称。例如,可以将 CONFIG 命令重命名为难以猜测的东西,以便它仍然可用于内部工具,但对普通客户端不可用。
#
# 示例:
#
# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
#
# 也可以通过将其重命名为空字符串来完全禁用一个命令:
#
# rename-command CONFIG ""
#
# 请注意,更改记录到 AOF 文件或传输到副本的命令名称可能会导致问题。
客户端 (CLIENTS)
# 设置同时连接的最大客户端数量。默认情况下,此限制设置为 10000 个客户端,但是如果 Redis 服务器无法配置进程文件限制以允许指定的限制,则允许的最大客户端数量将设置为当前文件限制减去 32(因为 Redis 为内部使用保留了一些文件描述符)。
#
# 一旦达到限制,Redis 将关闭所有新连接,并发送错误 'max number of clients reached'。
#
# maxclients 10000
内存管理 (MEMORY MANAGEMENT)
# 设置内存使用限制为指定的字节数。
# 当达到内存限制时,Redis 将根据选择的逐出策略(见 maxmemory-policy)尝试移除键。
#
# 如果 Redis 无法根据策略移除键,或者如果策略设置为 'noeviction',Redis 将开始对会使用更多内存的命令(如 SET, LPUSH 等)回复错误,并会继续回复只读命令(如 GET)。
#
# 此选项在使用 Redis 作为 LRU 或 LFU 缓存时,或为实例设置硬性内存限制(使用 'noeviction' 策略)时通常很有用。
#
# 警告:如果您有副本连接到启用了 maxmemory 的实例,那么为给副本提供数据所需的输出缓冲区大小将从已用内存计数中减去,这样网络问题/重新同步就不会触发一个循环,即键被逐出,反过来副本的输出缓冲区因被逐出的键的 DEL 命令而充满,从而触发更多键的删除,直到数据库完全被清空。
#
# 简而言之...如果您连接了副本,建议您设置一个较低的 maxmemory 限制,以便系统有足够的空闲 RAM 用于副本输出缓冲区(但如果策略是 'noeviction',则不需要这样做)。
#
# maxmemory <bytes>
# MAXMEMORY 策略:当达到 maxmemory 时,Redis 将如何选择要移除的内容。您可以从五种行为中选择:
#
# volatile-lru -> 在设置了过期时间的键中,使用近似 LRU 算法逐出。
# allkeys-lru -> 在所有键中,使用近似 LRU 算法逐出任何键。
# volatile-lfu -> 在设置了过期时间的键中,使用近似 LFU 算法逐出。
# allkeys-lfu -> 在所有键中,使用近似 LFU 算法逐出任何键。
# volatile-random -> 在设置了过期时间的键中,随机移除一个键。
# allkeys-random -> 随机移除任何一个键。
# volatile-ttl -> 移除剩余过期时间最短的键(minor TTL)。
# noeviction -> 不逐出任何内容,对写入操作只返回错误。
#
# LRU 意味着最近最少使用(Least Recently Used)
# LFU 意味着最不常用(Least Frequently Used)
#
# 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 exec sort
#
# 默认是:
#
# maxmemory-policy noeviction
# LRU、LFU 和最小 TTL 算法不是精确算法,而是近似算法(为了节省内存),因此您可以调整它以获得速度或准确性。默认情况下,Redis 会检查五个键并选择最近使用最少的那个,您可以使用以下配置指令更改样本大小。
#
# 默认值 5 产生足够好的结果。10 非常接近真实的 LRU,但会消耗更多 CPU。3 更快但不那么准确。
#
# maxmemory-samples 5
# 从 Redis 5 开始,默认情况下副本会忽略其 maxmemory 设置(除非在故障转移或手动操作后被提升为主库)。这意味着键的逐出将只由主库处理,主库会在键被逐出时,将 DEL 命令发送给副本。
#
# 这种行为确保了主库和副本保持一致,通常也是您想要的结果。然而,如果您的副本是可写的,或者您希望副本有不同的内存设置,并且您确信在副本上执行的所有写入都是幂等的,那么您可以更改此默认值(但请确保您了解自己在做什么)。
#
# 注意:由于副本默认不进行逐出,它最终使用的内存可能比通过 maxmemory 设置的要多(副本上某些缓冲区可能更大,或者数据结构有时可能占用更多内存等)。因此,请确保您监控您的副本,并确保它们有足够的内存,在主库达到配置的 maxmemory 设置之前,永远不会遇到真正的内存不足情况。
#
# replica-ignore-maxmemory yes
惰性释放 (LAZY FREEING)
# Redis 有两种删除键的基元。一种是 DEL,它是阻塞式删除对象。这意味着服务器停止处理新命令,以同步方式回收与对象相关的所有内存。如果删除的键与一个小对象相关联,执行 DEL 命令所需的时间非常短,与 Redis 中大多数其他 O(1) 或 O(log_N) 命令相当。然而,如果键与包含数百万元素的大型聚合值相关联,服务器可能会阻塞很长时间(甚至几秒钟)才能完成操作。
#
# 由于上述原因,Redis 还提供了非阻塞的删除基元,如 UNLINK(非阻塞的 DEL)以及 FLUSHALL 和 FLUSHDB 命令的 ASYNC 选项,以在后台回收内存。这些命令以恒定时间执行。另一个线程将在后台尽可能快地增量释放对象。
#
# DEL、UNLINK 以及 FLUSHALL 和 FLUSHDB 的 ASYNC 选项由用户控制。由应用程序设计来决定何时使用其中一个。然而,有时 Redis 服务器必须作为其他操作的副作用来删除键或清空整个数据库。具体而言,Redis 在以下情况下独立于用户调用删除对象:
#
# 1) 在逐出时,由于 maxmemory 和 maxmemory 策略配置,为了腾出空间给新数据,而不会超过指定的内存限制。
# 2) 因为过期:当一个带有生存时间(TTL)的键(参见 EXPIRE 命令)必须从内存中删除时。
# 3) 因为将数据存储在可能已存在的键上的命令的副作用。例如,RENAME 命令在用另一个键替换旧键内容时可能会删除旧内容。同样,带有 STORE 选项的 SUNIONSTORE 或 SORT 也可能删除现有键。SET 命令本身会移除指定键的任何旧内容,以用指定的字符串替换它。
# 4) 在复制期间,当副本与其主库执行完全重新同步时,整个数据库的内容都会被移除,以便加载刚刚传输过来的 RDB 文件。
#
# 在所有上述情况下,默认是以阻塞方式删除对象,就像调用了 DEL 一样。然而,您可以使用以下配置指令分别配置每种情况,以便以非阻塞方式释放内存,就像调用了 UNLINK 一样:
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
仅追加模式 (APPEND ONLY MODE)
# 默认情况下,Redis 异步地将数据集转储到磁盘。这种模式在许多应用程序中足够好,但 Redis 进程出现问题或断电可能会导致几分钟的写入丢失(取决于配置的保存点)。
#
# 仅追加文件(Append Only File,AOF)是一种替代的持久化模式,它提供了更好的持久性。例如,使用默认的数据 fsync 策略(见配置文件后面的部分),Redis 在发生像服务器断电这样的严重事件时,可能只会丢失一秒的写入,或者如果 Redis 进程本身出了问题但操作系统仍在正常运行,则只会丢失一次写入。
#
# AOF 和 RDB 持久化可以同时启用,没有任何问题。如果在启动时启用了 AOF,Redis 将加载 AOF,因为它是具有更好持久性保证的文件。
#
# 请查看 http://redis.io/topics/persistence 获取更多信息。
appendonly no
# 仅追加文件的名称(默认:"appendonly.aof")
# fsync() 调用告诉操作系统实际将数据写入磁盘,而不是等待输出缓冲区中更多的数据。一些操作系统会真正将数据刷新到磁盘,而另一些操作系统只会尝试尽快执行。
#
# Redis 支持三种不同的模式:
#
# no: 不进行 fsync,让操作系统在它想的时候刷新数据。速度最快。
# always: 每次写入仅追加日志后都进行 fsync。最慢,最安全。
# everysec: 每秒只进行一次 fsync。折中方案。