Redis configuration

小小码农 2021年09月22日 1,048次浏览

INCLUDES

当存在多redis服务器时,可以使用此选项,大部分服务器会有一些共同属性和自定义属性,此时,可以将其分为标准模板和自定义模板两部分。
注意选项include不会被命令CONFIG REWRITE从admin或Redis Sentinel重写。由于Redis总是使用最后的处理行作为配置指令的值,你最好把include放在这个文件的开头,以避免在运行时覆盖配置更改。
如果您对使用include来覆盖配置选项感兴趣,那么最好将include作为最后一行。
示例:
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

默认情况下,如果没有指定bind配置指令,Redis监听主机上所有可用网络接口的连接。可以使用bind配置指令监听一个或多个选择的接口,使用规则是bind后跟一个或多个IP地址。
示例:
bind 192.168.1.100 10.0.0.1
bind 127.0.0.1 ::1

警告
如果运行Redis的计算机直接暴露在互联网上,绑定到所有接口是危险的,会将实例暴露给互联网上的每个人。所以默认情况下,我们取消注释下面的bind指令,这将迫使Redis只监听IPv4环回接口地址(这意味着Redis将只能接受来自它正在运行的同一主机的客户端连接)。
如果想让实例监听所有的接口,只需注释掉bind指令行即可。

protected-mode

protected-mode yes 开启保护模式
protected-mode no 关闭保护模式
保护模式是一层安全保护,以避免在互联网上开放的Redis实例被访问和利用。
当保护模式开启时,如果:
1)服务器没有使用“bind”指令显式绑定到一组地址。
2)未配置密码。
服务器只接受来自IPv4和IPv6环回地址127.0.0.1和::1以及Unix域套接字的客户端的连接。
默认情况下,保护模式是开启的。
简而言之,如果没有设置bind或者密码,保护模式开启情况下,外网无法访问redis服务器,此时如果关闭保护模式,外网可以访问。如果开启保护模式,设置了bind或密码,此时外网可以访问。

prot

port 6379
在指定的端口上接受连接,默认是6379。如果指定端口0,Redis将不会监听TCP套接字。

tcp-backlog

tcp-backlog 511
TCP listen() backlog.
在每秒请求数高的环境中,为了避免客户端连接速度慢的问题,您需要较高的backlog。请注意,Linux内核将静默地将其截断为/proc/sys/net/core/somaxconn的值,因此请确保提高somaxconn和tcp_max_syn_backlog的值,以获得预期的效果。

unixsocket、unixsocketperm

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

timeout

timeout 0
在客户端空闲N秒后关闭连接,0关闭超时设置

tcp-keepalive

tcp-keepalive 300
如果不为零,在没有通信的情况下,使用SO_KEEPALIVE向客户端发送TCP ack。这是有用的两个原因:
1)检测client是否存活
2)强制中间的网络设备考虑连接是活的
在Linux系统中,指定的值(单位为秒)是发送ack的周期。注意,关闭连接需要加倍的时间。在其他内核上,周期取决于内核配置。
这个选项的合理值是300秒,这是新的Redis默认值,从Redis 3.2.1开始。
如果设置为0,则不进行检测。

GENERAL

daemonize

daemonize yes 使用守护进程运行
daemonize no 不使用守护进程运行
默认情况下Redis不作为守护进程运行。如果你需要,就用yes。
注意,Redis会在/var/run/redis.pid文件中存放守护进程id。

supervised

supervised no
upstartsystemd来运行Redis,可以通过upstartsystemd管理Redis守护进程。

选项
supervised no - 不进行监督树的交互
supervised upstart - 通过将Redis进入SIGSTOP模式,信号upstart需要在你的upstart工作配置中设置expect stop
supervised systemd - $NOTIFY_SOCKET中写入READY=1来通知systemd信号
supervised auto - 基于 UPSTART_JOB 或者 NOTIFY_SOCKET 环境变量来检测是 upstart 还是 systemd 方式
注意:这些监督方法只是发出"流程就绪"的信号。他们不能使连续的ping来回应你的supervisor

pidfile

pidfile /var/run/redis_6379.pid
如果指定了pid文件,Redis将其写入启动时指定的位置,并在退出时删除它。
当服务器在非守护状态下运行时,如果配置中没有指定pid文件,则不会创建pid文件。当服务器被daemonized时,即使没有指定pid文件也会被使用,默认为"/var/run/redis.pid"。

loglevel

loglevel notice
指定服务器详细级别
值有以下几种:
debug - 大量信息,对开发/测试有用
verbose - 许多很少有用的信息,但不是像调试级别那样混乱
notice - 比较详细,可应用于生产中
warning - 只记录非常重要/关键的消息

logfile

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

databases

databases 16
设置数据库的数量 N(默认16)。默认的数据库是DB 0,你可以使用select 在每个连接的基础上选择一个不同的数据库,其中dbid是0和N-1之间的一个数字

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

TLS/SSL

后续补充.

SNAPSHOTTING

快照,内存数据映射到硬盘中,redis持久化方式之一,另一种方式是append-only file AOF(只追加文件)

save

save <seconds> <changes>
save 900 1 - 在900秒(15分钟)后,如果至少有一个键改变
save 300 10 - 在300秒(5分钟)后,如果至少有10个按键改变
save 60 10000 - 60秒后,如果至少有10000个密钥改变
如果给定的秒数和对DB的写操作数量都发生了,将保存DB。
注意:你可以通过注释掉所有save行来完全禁用保存。也可以通过添加一个带有空字符串参数的save指令来删除之前配置的所有保存点:save ""

stop-writes-on-bgsave-error

stop-writes-on-bgsave-error yes
默认情况下,如果启用了RDB快照(至少一个保存点),并且最新的背景保存失败,Redis将停止接受写入。这将使用户意识到(以一种艰难的方式)数据没有正确地保存在磁盘上,否则可能没有人会注意到,从而发生一些灾难。

如果后台保存过程将再次开始工作,Redis将自动允许再次写入。

然而,如果你已经设置了对Redis服务器和持久性的适当监控,你可能想要禁用这个功能,以便Redis将继续像往常一样工作,即使有磁盘、权限等问题。

rdbcompression

rdbcompression yes
当dump .rdb格式数据库使用LZF压缩字符串对象?
默认情况下,压缩是启用的,因为它几乎总是成功的。如果你想在save child中保存一些CPU,设置它为'no',但如果你有可压缩的值或键,数据集可能会更大。

rdbchecksum

rdbchecksum yes
由于RDB版本5,CRC64校验和被放在文件的末尾。这使得该格式更抗破坏,但在保存和加载RDB文件时,会有性能损失(约10%),所以您可以禁用它以获得最大性能。
禁用校验和创建的RDB文件的校验和为零,这将告诉加载的代码跳过检查。

dbfilename

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

rdb-del-sync-files

rdb-del-sync-files no
在没有启用持久性的实例中删除复制使用的RDB文件。默认情况下,这个选项是禁用的,然而,在一些环境中,出于法规或其他安全考虑,RDB文件应该尽快删除,由主服务器持久化到磁盘上以提供副本,或由副本存储到磁盘上以加载它们进行初始同步。注意,这个选项只在禁用了AOF和RDB持久性的实例中有效,否则将完全被忽略。
获得相同效果的另一种(有时是更好的)方法是在主实例和副本实例上使用无磁盘复制。然而,在副本的情况下,无磁盘并不总是一个选项。

dir

dir ./data
DB将被写入到这个目录中,上面使用'dbfilename'配置指令指定的文件名。
只追加文件也将在此目录中创建。
注意,在这里必须指定目录,而不是文件名。

REPLICATION

KEYS TRACKING

SECURITY

CLIENTS

MEMORY MANAGEMENT

LAZY FREEING

THREADED I/O

KERNEL OOM CONTROL

APPEND ONLY MODE

LUA SCRIPTING

REDIS CLUSTER

CLUSTER DOCKER/NAT support

SLOW LOG

LATENCY MONITOR

EVENT NOTIFICATION

GOPHER SERVER

ADVANCED CONFIG

ACTIVE DEFRAGMENTATION