Redis 配置文件常用配置探究

前言

  • 本文主要记录常用的部分内容由于是学习笔记系列所以可能并不能完全贴近实际生产环境

一 Redis 配置文件详解

  • Redis 的核心配置文件 redis.conf 在安装根目录下默认包含 2000 多行。

1.1 配置文件基础说明

在这里插入图片描述

  • 这部分主要是给出一些说明包含三部分意思
    • 第 1-6 行用于说明如果要启动 Redis需要指出配置文件的路径
    • 第 8-16 行用于说明当前配置文件中可以使用的的容量单位及意义
    • 第 18 行用于说明这些容量单位没有大小写之分

1.2 includes模块

在这里插入图片描述

  • 指定要在当前配置文件中包含的配置文件
  • 这样做的目的主要是便于配置信息管理——可以将不同场景的配置都进行单独定义然后在当前核心配置文件中根据不同场景选择包含进不同的配置文件。

1.3 modules模块

在这里插入图片描述

  • Redis 配置文件中可以通过加载不同的第三方模块来增强、扩展 Redis 的功能

1.4 network模块

在这里插入图片描述

  • Network 配置模块是比较重要的部分主要进行网络相关的配置。

1.4.1 bind配置

在这里插入图片描述

  • 指定可以访问当前 Redis 服务的客户端 IP默认只允许本地访问。为了使所有其它客户端都可访问一般要将其注释掉。
  • 或者将其修改为
bind 0.0.0.0

1.4.2 protected-mode

在这里插入图片描述

  • 默认保护模式是开启的其只允许本机的客户端访问。但在生产中应该关闭以确保其它客户端可以连接 Redis。

1.4.3 port

在这里插入图片描述

  • Redis 监听的连接端口号默认 6379。

1.4.4 tcp-backlog

在这里插入图片描述

  • tcp-backlog 是一个 TCP 连接的队列其主要用于解决高并发场景下客户端慢连接问题。
  • 该参数为队列的长度。
  • 该队列与 TCP 连接的三次握手有关。
  • 不同的 Linux 内核backlog 队列中存放的元素客户端连接类型是不同的。
    • Linux 内核 2.2 版本之前该队列中存放的是已完成了第一次握手的所有客户端连接其中就包含已完成三次握手的客户端连接。 backlog 队列中的连接也具有两种状态未完成三次握手的连接状态【SYN_RECEIVED】已完成三次握手的连接状态【 ESTABLISHED】。只有 ESTABLISHED 状态的连接才会被 Redis 处理。
    • Linux 内核 2.2 版本之后 TCP 系统中维护了两个队列SYN_RECEIVED 队列与 ESTABLISHED队列。
      • SYN_RECEIVED 队列中存放的是未完成三次握手的连接ESTABLISHED 队列中存放的是已完成三次握手的连接。
      • 此时的 backlog 就是 ESTABLISHED 队列。

1.4.5 补充TCP 中的 backlog 队列的长度确定

  • Redis中TCP 中的 backlog 队列的长度由 Redis 配置文件设置与 Linux中由内核参数somaxconn来共同决定取它们中的最小值。
  • 查看 Linux 内核版本
    uname -a
    cat /proc/version
    
    在这里插入图片描述
  • 查看当前 Linux 内核中 somaxconn 的值
    cat /proc/sys/net/core/somaxconn
    

在这里插入图片描述

  • 生产环境下特别是高并发场景下backlog 的值最好要大一些否则可能会影响系统性能。
  • 修改/etc/sysctl.conf 文件在文件最后添加如下内容
    net.core.somaxconn=2048
    
  • 执行命令来使新的修改生效
    sysctl -p
    

1.4.6 timeout

在这里插入图片描述

  • 空闲超时当客户端与 Redis 间的空闲时间超过该时长后连接自动断开。
  • 单位秒默认值为 0表示永远不超时

1.4.7 tcp-keepalive

  • 该配置主要用于设置 Redis 检测与其连接的所有客户端的存活性时间间隔单位秒。
  • 一般是在空闲超时 timeout 设置为 0 时进行配置。
    在这里插入图片描述

1.5 general

1.5.1 daemonize

  • 该配置可以控制 Redis 启动是否采用守护进程方式即是否是后台启动。
    在这里插入图片描述

1.5.2 pidfile

  • 该配置用于指定 Redis 运行时 pid 写入的文件无论 Redis 是否采用守护进程方式启动pid 都会写入到该配置的文件。
  • 注意如果没有配置 pid 文件不同的启动方式pid 文件的产生效果是不同的
  • 采用守护进程方式启动后台启动daemonize 为 yespid 文件为/var/run/redis.pid。
  • 采用前台启动daemonize 为 no不生产 pid 文件
    在这里插入图片描述

1.5.3 loglevel

在这里插入图片描述

  • loglevel配置日志的级别
  • Redis 中共有四个级别由低到高依次是
    • debug可以获取到很多的信息一般在开发和测试时使用。
    • verbose可以获取到很多不太有用的信息但不像 debug 级别那么多。
    • notice可以获取到在生产中想获取到的适当多的信息默认级别。
    • warning只记录非常重要/关键的信息

1.5.4 logfile

  • logfile指定日志文件
  • 如果设置为空串则强制将日志记录到标准输出设备显示器。如果使用的是守护进程启动方式设置为空串则意味着会将日志发送到设备/dev/null空设备。
    在这里插入图片描述

1.5.5 databases

  • 设置数据库的数量默认数据库是 0 号数据库。
  • 可以使用 select <dbid>在每个连接的基础上选择一个不同的数据库其中 dbid 是介于 0 和'databases'-1'之间的数字。
    在这里插入图片描述

1.6 security

  • 用户设置 ACL 权限、Redis 访问密码相关配置。该模块中最常用的就是 requirepass 属性
    在这里插入图片描述
  • 设置客户端访问密码。注释掉后则没有密码。
    在这里插入图片描述

1.7 clients

在这里插入图片描述

  • 该模块用于设置与客户端相关的属性其中仅包含一个属性 maxclients
  • maxclients 用于设置 Redis 可并发处理的客户端连接数量默认值为 10000。如果达到了该最大连接数则会拒绝再来的新连接并返回一个异常信息已达到最大连接数。
  • 注意该值不能超过 Linux 系统支持的可打开的文件描述符最大数量阈值。
    ulimit -n
    
    在这里插入图片描述
  • 如果想要修改该值可以通过修改/etc/secutiry/limits.conf 文件。

1.8 memory management

  • 该配置可以控制最大可用内存及相关内容移除问题
    在这里插入图片描述

1.8.1 maxmemory

  • 将内存使用限制设置为指定的字节数。当达到内存限制时Redis 将根据选择的逐出策略 maxmemory-policy 尝试删除符合条件的 key。
  • 如果不能按照逐出策略移除 key则会给写操作命令返回 error但对于只读的命令是没有影响的。
    在这里插入图片描述

1.8.2 maxmamory-policy

  • 该属性用于设置当达到 maxmemory 时Redis 将如何选择要移除的内容。当然如果没有符合相应策略的内容要删除则在执行写入命令时会给出 errors 的响应。
  • Redis 中共支持 8 种移除策略
    • volatile-lru使用近似 LRU 算法移除仅适用于设置了过期时间的 key。
    • allkeys-lru使用近似 LRU 算法移除可适用于所有类型的 key。
    • volatile-lfu使用近似 LFU 算法移除仅适用于设置了过期时间的 key。
    • allkeys-lfu使用近似 LFU 算法移除可适用于所有类型的 key。
    • volatile-random随机移除一个 key仅适用于设置了过期时间的 key。
    • allkeys-random随机移除一个 key可适用于所有类型的 key。
    • volatile-ttl移除距离过期时间最近的 key。
    • noeviction不移除任何内容只是在写操作时返回一个错误默认值。

在这里插入图片描述

1.8.3 maxmemory-samples

  • 该属性用于指定挑选要删除的 key 的样本数量。样本的选择采用的是 LRU 算法其不能修改。但从样本中再选择要移除的 key则采用的是 maxmamory-policy 指定的策略。
    在这里插入图片描述

1.8.4 maxmemory-eviction-tenacity

  • 设置移除容忍度。数值越小表示容忍度越低需要移除的数据移除延迟越小数值越大表示容忍度越高需要移除的数据移除延迟越大。
    在这里插入图片描述

1.8.5 threaded I/O

  • 该配置模块用于配置 Redis 对多线程 IO 模型的支持。
    在这里插入图片描述

1.8.6 io-threads

  • 该属性用于指定要启用多线程 IO 模型时要使用的线程数量。
    在这里插入图片描述
  • 查看当前系统中包含的 CPU 数量
    在这里插入图片描述

1.8.7 io-threads-do-reads

  • 该属性用于启用多线程 IO 模型中的多线程处理读请求的能力
    在这里插入图片描述
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: redis