# 配置
# 配置文件
启动 Redis 服务器时,默认不会读取配置文件,而是采用软件的默认配置。
可以将配置文件放在任意目录下,在启动 Redis 时采用配置文件,如下:
redis-server /opt/redis/redis.conf
- Redis 会读取该配置文件的内容,决定运行时的配置。
- 每次修改配置文件之后,要重启 Redis 才会生效。
配置文件示例:
bind 0.0.0.0 port 6379 requirepass ****** # Redis 的密码。默认不启用密码认证 # protected-mode yes # 是否开启保护模式。如果开启了,但没设置 requirepass ,则会强制设置 bind 127.0.0.1 dir /opt/redis/ # 工作目录,默认是 /var/lib/redis/ # daemonize no # 是否以 daemon 方式运行,默认为 no # pidfile /var/run/redis.pid # logfile '' # 日志文件的保存路径,默认是输出到 stdout # dbfilename dump.rdb # 保存备份数据的文件名 # databases 16 # 设置数据库的数量 # maxclients 10000 # 限制客户端的连接数 timeout 60 # 当客户端连接的空闲时长超过 n 秒时,让 redis 断开该连接。默认禁用 timeout ,因此连接数会越来越多 # 禁用掉一些不安全的命令 rename-command FLUSHDB "" rename-command FLUSHALL "" rename-command KEYS ""
# 运行时配置
- Redis 服务器启动之后,可以修改运行时的配置项。
- 在客户端中,执行
config get/set <name>
可以查看、修改一个配置项。如下:127.0.0.1:6379> config get requirepass # 查看密码 1) "requirepass" 2) "" # 默认没有密码 127.0.0.1:6379> config set requirepass 123456 # 设置密码 OK
- 执行
config get *
会显示所有配置项。 - 执行
config rewrite
会将运行时的配置项保存到配置文件中,否则当 Redis 服务器终止时会丢失已修改的配置。
# 内存
- 相关配置:
maxmemory 1048576 # 限制 Redis 使用的最大内存,单位 bytes 。默认不限制 # maxmemory-policy noeviction # 接近 maxmemory 时的删 key 策略
- 如果不配置 Redis 的 maxmemory ,或配置成 0 ,则 Redis 可无限占用内存,当主机内存不足时可能被 OOM 杀死。
- 建议配置成主机内存的 80% 左右,留有一定冗余。
- maxmemory-policy 有以下几种:
volatile-lru # 根据 LRU 算法删除任意一个设置了过期时间的 key allkeys-lru # 根据 LRU 算法删除任意一个 key volatile-random # 随机删除一个设置了过期时间的 key allkeys-random # 随机删除任意一个 key volatile-ttl # 删除 TTL 最短的 key noeviction # 默认策略。不删除 key ,而是在写操作时报错
# 慢日志
Redis 默认启用了慢日志。如果一个命令的执行耗时超过指定时长,则记录到慢日志。
- 超过一定长度的命令会被截断。
相关配置:
# slowlog-log-slower-than 10000 # 将超过指定耗时的命令记录到慢日志,单位为微秒 μs # slowlog-max-len 128 # 最多记录多少条慢查询日志。达到限制时,删除最旧一条记录,写入新的记录
相关命令:
SLOWLOG GET [count] # 查看最近的 count 条记录,默认为 10 条 SLOWLOG RESET # 清空所有记录
- 例:
127.0.0.1:6379> SLOWLOG GET 1 1) 1) (integer) 1099 # 这条慢日志的序号 2) (integer) 1657077816 # 这条慢日志的记录时刻,格式为 Unix 时间戳 3) (integer) 29212 # 命令的执行耗时,单位为微秒 μs 4) 1) "KEYS" # 命令的内容 2) "hello*" 5) "10.0.0.1:26869" # 客户端地址 6) "" # 客户端名称
- 例: