配置文件
Units 单位
1、配置大小单位
2、定义一些基本度量单位,只支持 bytes,不支持 bit
3、大小写不敏感
INCLUDES
1、可以包含其他配置文件
2、多实例的情况,可以把公用的配置文件提取出来
NETWORK
1、bind
bind 127.0.0.1 -::1
(1)默认在回环的 IPv4 和 IPv6 上监听,表示只能接受本机的访问请求
(2)不写的情况下,表示无限制,接受任何 IP 地址的访问
(3)如果开启 protected-mode,在没有设定 bind ip,且没有设密码的情况下,Redis 只允许接受本机的响应
2、protected-mode
protected-mode yes
(1)本机访问保护模式
(2)默认 yes,表示只能本机访问
3、Port
port 6379
(1)接受指定端口的连接
(2)默认 6379
(3)如果指定端口为 0,Redis 将不在 TCP 套接字上监听
4、tcp-backlog
tcp-backlog 511
(1)设置 tcp 的 backlog
(2)backlog 是一个连接队列
(3)backlog 队列总和 = 未完成三次握手队列 + 已经完成三次握手队列
(4)在高并发环境下,需要一个高 backlog 值,避免缓慢的客户端连接问题
(5)注意:Linux 内核会将该值减小到 /proc/sys/net/core/somaxconn 的值(128),所以需要确认增大 /proc/sys/net/core/somaxconn 和 /proc/sys/net/ipv4/tcp_max_syn_backlog(128)两个值,以达到想要的效果
5、timeout
timeout 0
(1)一个空闲的客户端维持多少秒会关闭
(2)0 表示关闭该功能,即永不关闭
6、tcp-keepalive
tcp-keepalive 300
(1)对访问客户端的一种心跳检测,单位为秒
(2)默认每 300 秒检测一次
(3)如果设置为 0,则不会进行 Keepalive 检测,建议设置为 60
GENERAL
1、daemonize
daemonize no
(1)是否为后台进程
(2)默认情况下,Redis 不作为一个守护程序运行
(3)Redis 在守护进程中会在 /var/run/redis.pid 中写入一个 pid 文件
(4)当 Redis 由 upstart 或 systemd 监管时,这个参数没有影响
2、pidfile
pidfile /var/run/redis_6379.pid
(1)如果指定一个 pid 文件,Redis 会在启动时,将其写入指定位置,并在退出时将其删除
(2)当服务器在非守护状态下运行时,如果配置中没有指定 pid 文件,则不会创建 pid 文件
(3)在配置中指定 pid 文件,当服务器处于守护状态时,即使没有指定,也会使用 pid 文件,默认为 /var/run/redis.pid
(4)如果 Redis 不能创建它,服务器会正常启动和运行
(5)注意,在现代 Linux 系统上,/run/redis.pid 更符合要求
3、loglevel
loglevel notice
(1)指定日志记录级别,Redis 总共支持四个级别:debug、verbose、notice、warning,默认为 notice
(2)debug:大量的信息,对开发 / 测试有用
(3)verbose:许多很少有用的信息,但不像 debug 级别那样混乱
(4)notice:适度粗略,生产环境中使用
(5)warning:只有非常重要 / 关键的信息才会被记录
4、logfile
logfile ""
(1)指定日志文件的名称
(2)可以使用空字符串来强制 Redis 在标准输出上记录日志
(3)如果使用标准输出来记录日志,但使用守护进程,日志将被发送到 /dev/null
5、databases
databases 16
(1)设置数据库的数量
(2)默认的数据库是 DB 0
(3)SELECT <dbid>,在每个连接的基础上选择一个不同的数据库,其中 dbid 是 0 和 databases - 1 之间的数字
SECURITY
# requirepass foobared
1、Redis 6 开始,requirepass 只是一个在新的 ACL 系统之上的兼容层
2、该选项的作用只是设置默认用户的密码
3、客户端仍将使用 AUTH <password>,或者更明确地使用 AUTH default <password>
4、如果他们遵循新的协议:两者都可以使用
5、requirepass 不适用于 aclfile 选项和 ACL LOAD 命令,这些将导致 requirepass 被忽略
CLIENTS
# maxclients 10000
1、设置同时连接的客户端的最大数量
2、默认设置为 10000 个客户端
3、然而,如果 Redis 服务器不能配置进程文件限制以允许指定的限制,则允许的最大客户数被设置为当前文件限制减去 32(因为 Redis 保留了一些文件描述符供内部使用)
4、一旦达到限制,Redis 将关闭所有新的连接,发送 'max number of clients reached' 错误
5、当使用 Redis 集群时,最大的连接数也与集群总线共享:集群中的每个节点将使用两个连接,一个传入,另一个传出。在集群非常大的情况下,相应地确定限制的大小是很重要的
MEMORY MANAGEMENT
1、maxmemory
# maxmemory <bytes>
(1)设置一个内存使用限制到指定的字节数
(2)当达到内存限制时,Redis 将尝试根据所选择的驱逐策略来删除键
(3)如果 Redis 不能根据策略删除键,或者策略被设置为 noeviction,Redis 将开始对会使用更多内存的命令做出错误回复,并将继续对 GET 等只读命令做出回复
(4)这个选项通常在使用 Redis 作为 LRU 或 LFU 缓存时很有用,或者为一个实例设置一个硬的内存限制(使用 noeviction 策略)
2、maxmemory-policy
# maxmemory-policy noeviction
(1)当达到 maxmemory 时,Redis 将如何选择要删除的内容
(2)volatile-lru:使用近似的 LRU 进行驱逐,只清除有过期集的键
(3)allkeys-lru:使用近似的 LRU 来驱逐任何键
(4)volatile-lfu:使用近似的 LFU 进行驱逐,只清除有过期集的键
(5)allkeys-lfu:使用近似的 LFU 驱逐任何键
(6)volatile-random:删除一个有过期集的随机键
(7)allkeys-random:删除一个随机键,任何键
(8)volatile-ttl:删除过期时间最近的键(minor TTL)
(9)noeviction:不驱逐任何东西,只是在写操作时返回一个错误
(10)LRU 指最近使用最少
(11)LFU 指最不经常使用
(12)LRU、LFU、volatile-ttl 都是使用近似的随机化算法实现
(13)在上述任何一种策略下,当没有合适的密钥用于驱逐时,Redis 将在需要更多内存的写操作上返回错误
3、maxmemory-samples
# maxmemory-samples 5
(1)LRU、LFU、最小 TTL 算法不是精确的算法,而是近似的算法(为了节省内存),所以可以根据速度或准确性来调整它
(2)默认情况下,Redis 将检查 5 个键,并挑选最近使用最少的一个
(3)默认为 5 产生足够好的结果,10 非常接近真正的 LRU,但要花费更多的 CPU 资源,3 较快,但不是很准确
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战