Redis的redis.conf配置注释详解(一) - 云+社区 - 腾讯云



Redis使用——Redis的redis.conf配置注释详解(一)

背景

日常我们开发时,我们会遇到各种各样的奇奇怪怪的问题(踩坑o(╯□╰)o),这个常见问题系列就是我日常遇到的一些问题的记录文章系列,这里整理汇总后分享给大家,让其还在深坑中的小伙伴有绳索能爬出来。 同时在这里也欢迎大家把自己遇到的问题留言或私信给我,我看看其能否给大家解决。

开发环境

  • 系统:Ubuntu
  • 工具:Docker
  • 镜像:Redis
  • 官方配置:redis.conf

内容

本节对于其Redis的redis.conf配置进行注释翻译,确定各个配置的主要用途,便于日后配置使用,由于redis.conf中的配置较多,因此我们拆分为四节进行,话不多说下面开始。

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

# 单位注意:当需要内存大小时, 可以用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 服务器的标准模板,但还需要
# 自定义一些每个服务器的设置,这将非常有用。包含文件可以包含其他文件,因此请明智地使用它。
#
# 注意选项“include”不会被来自管理员或Redis Sentinel的命令“CONFIG REWRITE”重写。
# Redis的特性是最后处理的配置指令为最终生效指令。
# 因此在使用时您最好将标准模板放在第一行,其他需要覆盖的配置放在最后一行,这样使其准确生效,以免在运行时被覆盖。
#
# include /path/to/local.conf
# include /path/to/other.conf

################################## 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 将只能接受来自运行它的同一主机的客户端连接)。
# 如果您确定要让您的实例收听所有接口只需注释掉以下行即可。
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bind 127.0.0.1

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

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

# TCP listen() backlog.
#
# 在高每秒请求数的环境中,您需要大量的 backlog 来避免客户端连接缓慢的问题。请注意,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 keepalive.
#
# 如果非零,使用 SO_KEEPALIVE 在没有通信的情况下向客户端发送 TCP ACK 。这有两个原因:
#
# 1) 检测死对等点。
# 2) 强制中间的网络设备认为连接是alive 的。
#
# 在 Linux 上,指定的值(以秒为单位)是用于发送 ACK 的时间段。注意关闭连接需要双倍的时间。在其他内核上,周期取决于内核配置。
# 此选项的合理值是 300 秒,这是从 Redis 3.2.1 开始的新Redis 默认值。
tcp-keepalive 300

################################# TLS/SSL #####################################

# 默认情况下,TLS/SSL 是禁用的。要启用它,“tls-port”配置指令可用于定义 TLS 侦听端口。
# 要在默认端口上启用 TLS ,请使用:
# 
# port 0
# tls-port 6379

# 配置 X.509 证书和私钥,用于向连接的客户端、主节点或集群对等方验证服务器。这些文件应该是PEM 格式。
#
# tls-cert-file redis.crt 
# tls-key-file redis.key

# 配置DH 参数文件以启用Diffie-Hellman (DH) 密钥交换:
#
# tls-dh-params-file redis.dh

# 配置用于验证 TLS/SSL 客户端和对等方的 CA 证书包或目录。Redis 需要至少一个显式配置。这些,并且不会隐式使用系统范围的配置。
#
# tls-ca-cert-file ca.crt
# tls-ca-cert-dir /etc/ssl/certs

# 默认情况下,TLS 端口上的客户端(包括副本服务器)需要使用有效的客户端证书进行身份验证. 
# 如果指定“no”,则不需要且不接受客户端证书。如果指定了“optional”,则接受客户端证书,并且如果提供,则必须是有效的,但不是必需的。
#
# tls-auth-clients no
# tls-auth-clients optional

# 默认情况下,Redis 副本不会尝试与其主服务器建立 TLS 连接。
# 使用以下指令在复制链接上启用 TLS。
#
# tls-replication yes

# 默认情况下,Redis Cluster 总线使用普通 TCP 连接。要为总线协议启用 TLS,请使用以下指令:
#
# tls-cluster yes

# 明确指定要支持的 TLS 版本。允许的值不区分大小写并包括“TLSv1”、“TLSv1.1”、“TLSv1.2”、“TLSv1.3”(OpenSSL >= 1.1.1)或任意组合。
# 要仅启用 TLSv1.2 和 TLSv1.3,请使用:
# 
# tls-protocols "TLSv1.2 TLSv1.3"

# 配置允许的密码。有关此字符串的语法的更多信息,请参见 ciphers(1ssl) 联机帮助页。
# 注意:此配置仅适用于<= TLSv1.2。
#
# tls-ciphers DEFAULT:!MEDIUM

# 配置允许的 TLSv1.3 密码套件。请参阅 ciphers(1ssl) 联机帮助页以获取有关此字符串语法的更多信息,特别是 TLSv1.3 密码套件
#
# tls-ciphersuites TLS_CHACHA20_POLY1305_SHA256

# 选择密码时,使用服务器的首选项而不是客户端首选项。默认情况下,服务器遵循客户端的偏好。
#
# tls-prefer-server-ciphers yes

# 默认情况下,TLS 会话缓存已启用,以允许支持它的客户端更快、更便宜地重新连接。使用以下指令禁用缓存。
#
# tls-session-caching no

# 更改缓存的 TLS 会话的默认数量。0值将缓存设置为无限大小。默认大小为 20480。
#
# tls-session-cache-size 5000

# 更改缓存 TLS 会话的默认超时时间。默认超时时间为 300 秒。
#
# tls-session-cache-timeout 60

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

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

# 如果您从 upstart 或 systemd 运行 Redis,Redis 可以加入你的管理树中与您的监督树。
# 选项:
#   supervised no      - no supervision interaction
#   supervised upstart - signal upstart by putting Redis into SIGSTOP mode
#                        requires "expect stop" in your upstart job config
#   supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET
#   supervised auto    - detect upstart or systemd method based on
#                        UPSTART_JOB or NOTIFY_SOCKET environment variables
# 注意:这些监督方法仅表示“进程已准备好”
#  他们不能连续 ping 回你的supervisor.
supervised no

# 如果指定了 pid 文件,Redis 在启动时将其写入指定的位置并在退出时将其删除。
# 当服务器运行非守护进程时,如果没有在配置中指定,则不会创建 pid 文件。当服务器被守护时,即使没有指定,也会使用pid 文件#,默认为“/var/run/redis.pid”。
#
# 创建一个pid文件是最好的努力:如果Redis无法创建它没有什么不好的事情发生,服务器将启动并正常运行。
#
pidfile /var/run/redis_6379.pid

# 指定服务器详细级别。
# 这可以是以下之一:
# debug (很多信息,对开发/测试有用)
# verbose (许多很少有用的信息,但不像调试级别那样混乱)
# notice (适度冗长,你可能在生产中想要什么)
# warning (仅记录非常重要/关键的消息)
loglevel notice

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

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

# 指定系统日志标识。
# syslog-ident redis

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

# 设置数据库数量。默认数据库是 DB 0,您可以使用 SELECT <dbid> 在每个连接的基础上选择不同的数据库,其中dbid 是介于 0'databases'-1 
databases 16

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

################################ SNAPSHOTTING  ################################
#
# 将 DB 保存在磁盘上:
#
#   save <seconds> <changes>
#
#   如果发生给定的秒数和给定的对 DB 的写操作次数,将保存DB。
#   在下面的示例中,行为将是保存:
#   900 秒(15 分钟)后,如果至少更改了 1 个键
#   300 秒(5 分钟)后,如果至少 10 个键更改了
#   60 秒后,如果至少有 10000 个键更改
#
#   注意:您可以通过注释掉所有“save”行来完全禁用保存。
#
#   也可以删除所有先前配置的save
#   就像下面的例子:
#
#   save ""

save 900 1
save 300 10
save 60 10000

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

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

# 从 RDB 的第 5 版开始,CRC64 校验和被放置在文件的末尾。
# 这使得格式更能抵抗损坏,但有一个性能在保存和加载 RDB 文件时点击支付(大约 10%),因此您可以禁用它以获得最佳性能。
# 在禁用校验和的情况下创建的 RDB 文件的校验和为0,这将告诉加载代码跳过检查。
#
rdbchecksum yes

# 转储数据库的文件名
dbfilename dump.rdb

# 在没有启用持久性的情况下删除复制使用的 RDB 文件。
# 默认情况下,此选项是禁用的,但是在某些环境中出于法规或其他安全问题,RDB 文件由 master保存在磁盘上以提供副本,
# 或由副本存储在磁盘上以便加载它们以进行初始同步,应该尽快删除。请注意,此选项仅适用于同时禁用AOFRDB 持久性的实例,否则完全忽略。
# 获得相同效果的另一种(有时更好)方法是在主实例和副本实例上使用无盘复制。然而在副本的情况下,无盘并不总是一种选择。
rdb-del-sync-files no

# 工作目录
#
# 数据库将写入此目录中,文件名在上面使用“dbfilename”配置指令指定。
#
# 附加文件也将在此目录中创建。
#
# 注意这里必须指定目录,而不是文件名。
dir ./

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。


yg9538 July 22, 2022, 10:48 p.m. 170 收藏文档