华子目录
基础配置
查看配置文件位置
redis配置文件为redis.conf- 可以通过
find或whereis命令查找文件路径位置
[root@server ~]# find / -name redis.conf
/etc/redis.conf
或
[root@server ~]# whereis redis.conf
redis.conf: /etc/redis.conf
启动redis时,指定加载的配置文件
[root@server ~]# cat /etc/redis.conf
# Redis configuration file example.
#
# Note that in order to read the configuration file, Redis must be
# started with the file path as first argument:
#
# ./redis-server /path/to/redis.conf #redis服务启动时,需要加载的配置文件
示例
- 比如
/etc/redis.conf配置文件参数不动,我把该文件cp到/usr/目录下,修改/usr/redis.conf配置文件的参数(比如设置密码,默认没有密码),在启动redis服务时指定/usr/redis.conf这个配置文件,那么在用客户端连接服务端时,需要输入密码。反之,指定用/etc/redis.conf配置文件启动服务,则不需要输入密码就可以连接服务端。 - 启动
redis时,指定加载的配置文件为/usr/redis.cong
[root@server ~]# vim /etc/redis.conf
# Redis configuration file example.
#
# Note that in order to read the configuration file, Redis must be
# started with the file path as first argument:
#
./redis-server /usr/redis.conf
- 重启
redis服务时,会加载/usr/redis.conf这个配置文件
include引用其他配置文件

include可以指定引用其他位置的配置文件。- 若被
include引用的配置文件里的参数与redis.conf里的参数有相同的,想要实现加载被引用配置文件里的参数,则需要将include这一行放在redis.conf配置文件里相同参数的后面一行中 - 通俗得讲:后面进行
include的文件会覆盖前面已经加载过的文件 重启生效
units单位大小写不敏感

units:单位- 定义
内存的基本度量单位,只支持bytes,不支持bit。不区分大小写,所以1Gb 1gB 1GB都是相同的
可用的单位:
1k:表示1000字节(注意这里的“k”是千的意思,不是千字节,即不是1KB)。1kb:表示1024字节,即1千字节(KB)。1m:表示1000000字节。1mb:表示1024*1024字节,即1兆字节(MB)。1g:表示1000000000字节。1gb:表示1024*1024*1024字节,即1吉字节(GB)。
network网络配置
bind

[root@server ~]# cat /etc/redis.conf | grep bind
bind 127.0.0.1 -::1
- 默认情况下
bind=127.0.0.1只能接受本机的访问请求。在不写的情况下,无限制接受任何 IP 地址的访问 - 若
外部要连接服务端,可以用通配符*,即bind * - 通过设置
bind指令,可以控制哪些IP地址可以接受到Redis服务器的连接请求。
配置方式
bind指令接受一个或多个IP地址作为参数,多个IP地址之间使用空格分隔。- 例如:
bind 127.0.0.1 192.168.1.100,这表示Redis服务器将同时绑定在本地回环接口和IP地址为192.168.1.100的网络接口上。,允许本机和192.168.1.100的主机访问
示例
- 允许来自
本地主机的连接请求(默认配置):bind 127.0.0.1 - 允许来自
指定IP地址(如192.168.1.100)的连接请求:bind 192.168.1.100 - 允许来自
任何IP地址的连接请求(不推荐,存在安全风险):bind 0.0.0.0或bind *
protected-mode

- 是否
开启保护模式。如配置里没有指定bind和密码。开启该参数后,redis只允许本地访问,拒绝外部访问,推荐设置no
[root@server ~]# cat /etc/redis.conf | grep protected-mode
protected-mode yes
功能概述
- 当
protected-mode设置为yes时,Redis将在没有密码和没有绑定到特定IP地址的情况下,仅允许来自本地环境的连接(即只接受来自localhost或127.0.0.1的连接)。 - 设置为
no时,Redis将不会实施此本地连接限制
配置方法
- 你可以通过编辑
Redis的配置文件(通常是redis.conf)来修改protected-mode的值。
# 默认配置可能是这样的
protected-mode yes
# 如果你想禁用protected-mode,可以将其更改为
protected-mode no
port

port,默认端口是6379。如果指定0端口,表示Redis不监听TCP连接
tcp-backlog

- 设置
tcp的backlog,backlog其实是一个连接队列,backlog队列总和=未完成三次握手队列+已经完成三次握手队列 - 在
高并发环境下你需要一个高backlog值来避免慢客户端连接问题
[root@server ~]# cat /etc/redis.conf | grep tcp-backlog
tcp-backlog 511
1. 定义
tcp-backlog 是一个连接队列,这个队列包含了等待与 Redis 服务器建立连接的客户端套接字。在高并发环境下,设置一个较高的backlog值可以帮助避免慢客户端连接问题。
2. 默认值
在 Redis 的默认配置中,tcp-backlog 的值通常是 511。然而,这个值必须小于等于 Linux 系统定义的 /proc/sys/net/core/somaxconn值和/proc/sys/net/ipv4/tcp_max_syn_backlog值,两个值的默认大小通常是128
3. 优化建议
- 调整
tcp-backlog:对于负载很大的服务程序,可以将tcp-backlog的值调整为2048或更大。这有助于在高并发环境下提高Redis的性能 - 调整
somaxconn:由于tcp-backlog的值不能超过/proc/sys/net/core/somaxconn,因此你可能还需要调整这个内核参数。你可以通过编辑/etc/sysctl.conf文件并添加net.core.somaxconn = 2048来实现这一点,然后执行sysctl -p使更改生效 - 调整
tcp_max_syn_backlog:由于tcp-backlog的值不能超过/proc/sys/net/ipv4/tcp_max_syn_backlog,因此你可能还需要调整这个内核参数。你可以通过编辑/etc/sysctl.conf文件并添加net.ipv4.tcp_max_syn_backlog = 1024来实现这一点,然后执行sysctl -p使更改生效
timeout

连接超时时间,单位秒,超过timeout,服务端会断开连接,为0则服务端不会主动断开连接,不能小于0
[root@server ~]# cat /etc/redis.conf | grep timeout
timeout 0
1. 定义与功能
- 定义:
timeout参数指定了客户端连接在没有任何操作的情况下,Redis服务器等待客户端活动的最大时间(以秒为单位) - 功能:
当客户端连接在指定的超时时间内没有进行任何操作时,Redis服务器会自动断开该连接。这有助于避免无效的连接长时间占用服务器资源,提高服务器的并发处理能力
2. 默认值与设置方法
- 默认值:默认情况下,
timeout的值为0,表示Redis服务器不会主动断开空闲的客户端连接。 - 设置方法:
- 在
Redis的配置文件(通常是redis.conf)中,可以通过添加或修改timeout参数来设置超时时间。例如,timeout 300表示设置超时时间为300秒(5分钟)。 - 也可以在启动
Redis服务器的命令中直接添加--timeout参数来设置超时时间。例如,redis-server --timeout 300表示在启动Redis服务器时设置超时时间为300秒(5分钟)
- 在
tcp-keepalive

- 对
访问客户端的一种心跳检测,每n秒检测一次 单位为秒,如果设置为0,则不会进行Keepalive检测,建议设置成60
[root@server ~]# cat /etc/redis.conf | grep tcp-keepalive
tcp-keepalive 300
在Redis的配置文件中,tcp-keepalive参数用于设置TCP连接的保活策略。以下是关于tcp-keepalive参数的详细解释:
定义与功能
- 定义:
tcp-keepalive参数允许Redis服务器定期向空闲的客户端发送TCP心跳包,以检测网络连通性。 - 功能:
- 检测网络异常:如果网络出现异常,服务器可以尽快清理“
僵尸”连接,释放系统资源。 - 保持连接活跃:通过
发送心跳包,确保连接保持活跃状态,防止因长时间无操作而被错误地断开。
- 检测网络异常:如果网络出现异常,服务器可以尽快清理“
TLS/SSL
作用:数据连接加密配置
general通用类
作用:一些通用的配置
daemonize守护进程(后台进程)
- 是否为
后台进程,即守护进程,用于后台启动,设置为yes

[root@server ~]# cat /etc/redis.conf | grep daemonize
daemonize yes
定义与功能
- 定义:
daemonize是一个配置选项,用于指定Redis是否应以守护进程(后台进程)的形式运行。 - 功能:
- 当
daemonize设置为yes时,Redis服务器将在后台运行,并将进程ID(PID)写入到由pidfile配置项指定的文件中 - 当
daemonize设置为no时,Redis将在当前终端会话中作为前台进程运行
- 当
pidfile
- 存放
pid文件的位置,每个实例会产生一个不同的pid文件

[root@server ~]# cat /etc/redis.conf | grep pidfile
pidfile /var/run/redis_6379.pid
Redis配置文件中的pidfile是一个非常重要的配置项,它用于指定Redis进程的PID(进程ID)文件路径。以下是关于pidfile的详细解释:
定义与功能
- 定义:
pidfile是Redis配置文件中的一个参数,用于定义Redis服务器进程ID(PID)的文件路径。 - 功能:当
Redis服务器启动时,它会将自己的PID写入到由pidfile指定的文件中。这个文件是一个文本文件,内容仅包含Redis进程的PID。通过读取这个文件,系统管理员或其他工具可以轻松地获取Redis进程的PID,进而进行监控、管理或操作
logfile

日志文件名称logfile,默认为空,则将日志打印在屏幕上,不输出成文件。也可以指定文件位置,这样服务运行时只会把日志输入到指定文件里
[root@server ~]# cat /etc/redis.conf | grep logfile
logfile ""
定义与功能
- 定义:
logfile是Redis配置文件中指定日志文件存储路径和名称的配置项。 - 功能:通过配置
logfile,Redis服务器可以将重要的运行事件、错误信息等记录到指定的日志文件中。这些日志信息对于了解Redis服务器的运行状态、进行故障排查和调优等操作非常有帮助
- 如果
logfile被设置为空字符串,Redis将把日志信息输出到标准输出(stdout)。但是,如果Redis是以守护进程(daemon)方式运行的,标准输出将被重定向到/dev/null,即不会保存任何日志信息。
logfile /var/log/redis/redis-server.log
在这个例子中,Redis的日志文件将被写入到/var/log/redis/redis-server.log文件中
loglevel

指定日志记录级别,Redis总共支持四个级别
debug:存储很多信息,方便开发、测试verbose:同上,但是没有debug级别信息多notice:适当的日志级别,适合生产环境(默认)warning:只记录非常重要/关键的消息
四个级别根据使用阶段来选择,生产环境选择notice或者warning
[root@server ~]# cat /etc/redis.conf | grep loglevel
loglevel notice
Redis配置文件中的loglevel参数用于设置Redis服务器的日志级别,决定了Redis在何种情况下输出日志信息。以下是关于loglevel的详细解释:
日志级别
Redis支持以下几种日志级别(按详细程度从高到低排序):
debug:最详细的日志级别,适用于开发和调试阶段。会记录大量的信息,包括各种操作和内部状态变化verbose:较为详细的日志级别,适用于追踪Redis的行为。会记录一些有用的信息,但不像debug级别那样详细notice:普通级别的日志,适用于记录Redis的常规操作。通常只记录一些重要的、需要管理员注意的事件warning:警告级别的日志,适用于记录一些潜在的问题或异常情况。这些信息可能表示某些配置不当或系统性能问题
databases
设定库的数量,默认16,默认数据库为0,可以使用SELECT <dbid>命令在连接上指定数据库id

[root@server ~]# cat /etc/redis.conf | grep databases
databases 16
security安全类
通过redis命令行设置密码
[root@server ~]# redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "" #密码为空
127.0.0.1:6379> config set requirepass 123456 #设置密码为123456
OK
127.0.0.1:6379> config get requirepass #查看密码
1) "requirepass"
2) "123456" #密码为123456
127.0.0.1:6379> exit
[root@server ~]# redis-cli
127.0.0.1:6379> ping #没有进行密码认证,不允许任何操作
(error) NOAUTH Authentication required.
127.0.0.1:6379> config get requirepass #没有进行密码认证,不允许任何操作
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth 123456 #进行密码认证
OK #认证成功
127.0.0.1:6379> ping #认证成功后可以进行操作
PONG
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "123456"
127.0.0.1:6379> exit
[root@server ~]# systemctl restart redis #重启redis服务
[root@server ~]# redis-cli
127.0.0.1:6379> ping #发现重启后,之前设置的密码失效
PONG
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) ""
- 在
命令中设置密码,只是临时的。重启redis服务器,密码就还原了
通过配置文件requirepass设置密码

- 在
Redis的配置文件中,requirepass指令用于设置Redis服务器的密码,以要求客户端在尝试进行身份验证之前提供密码
配置细节
- 位置:
requirepass通常位于Redis配置文件(通常是redis.conf)中。 - 设置密码:要设置密码,只需在
requirepass后面添加密码即可。例如,要设置密码为mysecret,你可以这样做:
requirepass mysecret
- 重启 Redis:更改配置文件后,你需要重启
Redis服务器以使更改生效。 - 安全性:确保密码是强密码,并妥善保管。不要在代码中或任何公共位置硬编码密码。
使用密码进行身份验证
当 Redis 服务器设置了密码后,客户端需要使用 auth 命令进行身份验证。这通常在客户端连接后立即进行。
例如,使用 redis-cli 客户端连接到设置了密码的Redis服务器时,你需要这样做:
[root@server ~]# redis-cli -a mysecret
或者,在连接后使用AUTH命令:
[root@server ~]# redis-cli
127.0.0.1:6379> AUTH mysecret
OK
示例
[root@server ~]# vim /etc/redis.conf
requirepass 123456 #在配置文件中,设置密码为123456
[root@server ~]# systemctl restart redis #重启redis服务
[root@server ~]# redis-cli
127.0.0.1:6379> ping
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth 123456 #需要进行密码认证
OK
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> exit
[root@server ~]# systemctl restart redis #重启redis服务
[root@server ~]# redis-cli
127.0.0.1:6379> ping #没有进行密码认证
(error) NOAUTH Authentication required.
127.0.0.1:6379> config get requirepass
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth 123456 #进行密码认证
OK
127.0.0.1:6379> config get requirepass #查看密码
1) "requirepass"
2) "123456" #密码
127.0.0.1:6379>
通过配置文件实现永久设置
clients限制类
maxclients

[root@server ~]# cat /etc/redis.conf | grep maxclients
# maxclients 10000
设置最大客户端连接数量maxclients,默认关闭状态,可以设置客户端的最大连接数,超过这个数值的第n+1个用户开始就连接不了服务端。- 如果达到了
此限制,redis则会拒绝新的连接请求,并且向这些连接请求方发出“max number of clients reached”以作回应
maxmemory

maxmemory,默认没有设置建议必须设置,否则可能导致将内存占满,造成服务器宕机
[root@server ~]# cat /etc/redis.conf | grep maxmemory
# maxmemory <bytes>
- 设置
redis可以使用的内存量。一旦到达内存使用上限,redis将会试图移除内部数据,移除规则可以通过maxmemory-policy来指定 - 如果
redis无法根据移除规则来移除内存中的数据,或者设置了“不允许移除”,那么redis则会针对那些需要申请内存的指令返回错误信息,比如SET、LPUSH等 - 但是对于
无内存申请的指令,仍然会正常响应,比如GET等。 - 如果你的
redis是主redis(说明你的redis有从redis),那么在设置内存使用上限时,需要在系统中留出一些内存空间给同步队列缓存,只有在你设置的是“不移除”的情况下,就不用考虑这个因素
在 Redis 的配置文件中(通常是 redis.conf),maxmemory 指令用于设置 Redis 实例可以使用的最大内存量(以字节为单位)。一旦Redis 使用的内存达到这个限制,Redis 就会根据配置的淘汰策略(eviction policy)来删除一些键,以便为新的数据腾出空间。
示例配置:
# 设置最大内存限制为 4GB
maxmemory 4gb
你也可以使用其他单位,如 k(千字节)、m(兆字节)和 g(吉字节)。
注意事项:
-
合理设置:你需要根据你的
服务器总内存和Redis实例的用途来合理设置maxmemory。设置得太小可能会导致Redis过早地开始淘汰键,而设置得太大则可能耗尽系统资源。 -
淘汰策略:当
Redis达到maxmemory限制时,它会根据配置的淘汰策略来删除一些键。你可以使用maxmemory-policy指令来设置淘汰策略。可用的策略包括:volatile-lru:当内存不足以容纳新写入数据时,在键空间中选择最近最少使用的(LRU)数据淘汰。只针对设置了过期时间的键allkeys-lru:当内存不足以容纳新写入数据时,在键空间中选择最近最少使用的(LRU)数据淘汰,针对所有keyvolatile-lfu:当内存不足以容纳新写入数据时,在键空间中选择最不经常使用的(LFU)数据淘汰。只针对设置了过期时间的键allkeys-lfu:当内存不足以容纳新写入数据时,在键空间中选择最不经常使用的(LFU)数据淘汰,针对所有keyvolatile-random:当内存不足以容纳新写入数据时,随机选择键淘汰,只对设置了过期时间的键allkeys-random:当内存不足以容纳新写入数据时,在键空间中随机选择键淘汰,针对所有keyvolatile-ttl:当内存不足以容纳新写入数据时,选择剩余时间(TTL)最短的键淘汰,针对那些快要过期的keynoeviction:当内存不足以容纳新写入数据时,不进行移除。针对写操作,只是返回错误信息
你可以通过配置
maxmemory-policy来选择最适合你应用需求的淘汰策略
maxmemory-policy

[root@server ~]# cat /etc/redis.conf | grep maxmemory-policy
# maxmemory-policy noeviction
在Redis的配置文件中,maxmemory-policy用于配置当Redis实例使用的内存达到maxmemory限制时,系统应采取何种策略来释放内存空间。以下是关于maxmemory-policy的详细解释:
作用
maxmemory-policy定义了当Redis使用的内存达到maxmemory限制时,如何选择要淘汰的键(key)以释放内存
可选策略
volatile-lru:当内存不足以容纳新写入数据时,在键空间中选择最近最少使用的(LRU)数据淘汰。只针对设置了过期时间的键allkeys-lru:当内存不足以容纳新写入数据时,在键空间中选择最近最少使用的(LRU)数据淘汰,针对所有keyvolatile-lfu:当内存不足以容纳新写入数据时,在键空间中选择最不经常使用的(LFU)数据淘汰。只针对设置了过期时间的键allkeys-lfu:当内存不足以容纳新写入数据时,在键空间中选择最不经常使用的(LFU)数据淘汰,针对所有keyvolatile-random:当内存不足以容纳新写入数据时,随机选择键淘汰,只对设置了过期时间的键allkeys-random:当内存不足以容纳新写入数据时,在键空间中随机选择键淘汰,针对所有keyvolatile-ttl:当内存不足以容纳新写入数据时,选择剩余时间(TTL)最短的键淘汰,针对那些快要过期的keynoeviction:当内存不足以容纳新写入数据时,不进行移除。针对写操作,只是返回错误信息
maxmemory-samples

- 用于设置
样本数量,LRU算法和最小TTL算法都并非是精确的算法,而是估算值,所以你可以设置样本的大小,redis默认会检查这么多个key并选择其中LRU的那个 一般设置3到7的数字,数值越小样本越不准确,但性能消耗越小
[root@server ~]# cat /etc/redis.conf | grep maxmemory-samples
# maxmemory-samples 5
作用
maxmemory-samples定义了Redis在执行淘汰策略时,为了估算键的使用情况而应检查的样本数量。对于LFU(Least Frequently Used,最近最不常使用)策略,这个值用于计算键的访问频率
1606

被折叠的 条评论
为什么被折叠?



