Redis配置文件最详细解析


这里,我们从Redis为我们提供的源配置文件从上到下进行解析。

Part1、Units 单位

配置大小单位如下:
在这里插入图片描述
这里,有个点需要注意的是,Redis不支持bit,只支持bytes。(1bytes = 8bit)且大小写不敏感。(不区分大小写)

Part2、INCLUDES 包含

在这里插入图片描述
用来添加一个或多个配置文件。如果您有一个适用于所有Redis服务器的标准模板,但还需要自定义一些每个服务器的设置,那么这将非常有用。“包含文件”可以包含其他文件,因此请明智地使用它。

注意,来自admin或Redis Sentinel的命令“CONFIG REWRITE”不会重写选项“include”。由于Redis始终使用最后处理的行作为配置指令的值,因此最好将include放在该文件的开头,以避免在运行时覆盖配置更改。

如果您对使用include覆盖配置选项感兴趣,那么最好使用include作为最后一行。

添加方式如下:

include [其他Redis配置文件的路径]

Part3、MODULES 模型

在这里插入图片描述

Part4、NETWORK 网络

4.1 bind 和 protected-mode

默认情况下,bind = 127.0.0.1。只能接收本机的访问请求。如果不写bind,那么无限制接收任何ip的访问请求。生产环境肯定要写我们应用服务器的地址,而服务器是需要远程访问的,所以我们需要将其注释掉。

注意:如果开启了protected-mode,那么在没有设定bind ip地址 且没有设置密码的情况下,Redis只允许接收本机的请求。

所以,我们在做项目的时候,一般我们会把bind注释掉,然后把protected-mode改为no。

4.2 port

访问Redis的端口号,这个应该不用讲吧。

4.3 tcp-backlog

设置tcp的backlog,backlog其实是一个连接队列,backlog 队列总和 = 未完成三次握手队列 + 已经完成三次队列握手队列。

在高并发环境下,我们需要将tcp-backlog的值设置大一些,以避免慢客户端的连接问题。

注意,Linux的内核会将这个值减小到 /proc/sys/net/core/somaxconn 的值(128),所以需要增大 /proc/sys/net/core/somaxconn 和 /proc/sys/net/ipv4/tcp_max_syn_backlog(128) 两个值来达到想要的效果。

4.4 timeout

一个空闲的客户端维持多少秒会关闭,0表示永不关闭。

tcp-keepalived

多久发射一次信号,检测“心跳”,判断我们的服务是否还在操作。如果我们还在操作,那么继续提供服务,如果已经没有操作,那么释放服务。

Part5、GENERAL 生成

5.1 daemonize

表示是否为后台进程,一般我们都会设置为yes。

5.2 pidfile

存放pid文件的位置,每个实例会产生一个不同的pid文件。

5.3 loglevel 和 logfile

  • loglevel:日志级别,他有四个等级(显示信息由多到少):debug、verbose、notice、warning。

  • logfile:日志文件存放的位置。

5.4 database

设置数据库的数量,默认是16。默认使用的数据库是0数据库。

Part6、SECURITY 安全

6.1 requirepass

访问密码的查看、设置和取消。在命令中设置密码都是临时的,每次重启Redis服务器后,密码就还原了。如果要永久设置密码,我们必须修改他的配置文件。

只需要去掉配置文件中的注释:

requirepass forward

Part7、LIMIT 限制

7.1 maxclients

设置Redis最多同时与多少个客户端进行连接。默认情况下是 10,000 个客户端。如果达到了此限制,redis则会拒绝新的连接请求,并且向新的连接请求方发出“max number of clients reached”响应。

7.2 maxmemory

设置Redis可以使用的内存量。一旦达到内存上限,redis将会试图移除内部数据,移除的规则可以通过 maxmemory-policy 来指定。

如果redis无法根据移除规则来移除内存中的数据,或者设置了“不允许移除”,那么redis则会针对那些需要申请内存的指令返回错误信息,比如SET、LPUSH等。

但是对于无内存申请的指令,仍然会正常响应。比如GET等。如果你的Redis是主Redis且有从Redis,那么在设置内存上限时,需要在系统中留出一些内存空间给同步队列缓存,只有在你设置的是“不移除”的情况下,才不用考虑这个因素。

建议必须设置,否则,如果服务器内存满了的话,服务器会宕机。

7.3 maxmemory-policy

  • volatile-lru:使用LRU(最近最少使用)算法移除key,只对设置了过期时间的键
  • allkeys-lru:在所有集合key中,使用LRU算法移除key。
  • volatile-random:在过期集合中移除随机的key,只对设置了过期时间的键
  • allkeys-random:在所有集合key中,移除随机的key
  • volatile-ttl:移除那些TTL值最小的key,即快要过期的key
  • noeviction:不进行移除。针对写操作,只是返回错误信息

7.4 maxmemory-samples

设置样本数量,LRU算法和最小TTL算法都不是精确的算法,而是估算值。所以,我们可以设置样本的大小,redis默认会检查这么多个key并选择其中LRU的那个。

一般设置 3 到 7 的数字,数值越小样本越不精确,但是性能消耗也越小。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值