redis 3.配置文件(网络配置、安全、客户端连接数、最大内存设置、后台运行删除)

一.配置文件

1.1 Units 配置度量单位

  配置文件开头定义了基本的度量单位,仅支持bytes,不支持bit;大小写不敏感;
在这里插入图片描述

1.2 INCLUDES 多实例的情况下把公用的配置文件提取出来

在这里插入图片描述

1.3 网络相关配置

1.3.1 bind

  默认情况bind=127.0.0.1只能接受本机的访问请求。不配置bind参数,则接受任何ip地址的访问
  如果设置protected-mode为on,那么在没有设置bind ip且未设置密码,Redis只允许接受本机的响应
在这里插入图片描述

1.3.2 protected-mode

  若即没有设置安全模式又没有设置bind参数,把 protected-mode设置为no则任何ip地址的客户端可访问redis服务器
在这里插入图片描述

1.3.3 Port

  端口号,默认 6379
在这里插入图片描述

1.3.4 tcp-backlog 在高并发环境下,高backlog值来避免慢客户端连接问题

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

三次握手:
  client 发送 SYN 到 server,将状态修改为 SYN_SEND,如果 server 收到请求,则将状态修改为 SYN_RCVD,并把请求放到 syns queue 队列中。
  server 回复 SYN+ACK 给 client,如果 client 收到请求,则将状态修改为 ESTABLISHED,并发送 ACK 给 server。
  server 收到 ACK,将状态修改为 ESTABLISHED,并把该请求从 syns queue 中放到 accept queue。
在linux系统内核中维护了两个队列:syns queue 和 accept queue

syns queue
  用于保存半连接状态的请求,其大小通过 /proc/sys/net/ipv4/tcp_max_syn_backlog 指定,一般默认值是 512。

accept queue
  用于保存全连接状态的请求,其大小通过 /proc/sys/net/core/somaxconn 指定,在使用 listen函数时,内核会根据传入的 backlog 参数与系统参数 somaxconn,取二者的较小值。

  注:增大tcp-backlog需要确认同时增大/proc/sys/net/core/somaxconn和/proc/sys/net/ipv4/tcp_max_syn_backlog(128)两个值来达到想要的效果
在这里插入图片描述
在这里插入图片描述

1.3.5 timeout 一个空闲的客户端维持多少秒会关闭

  0表示永不关闭
在这里插入图片描述

1.3.6 tcp-keepalive 对访问客户端的一种心跳检测

  每个n秒检测一次,单位为秒。如果设置为0,则不会进行保活检测,建议设置成60
在这里插入图片描述

1.4 GENERAL

1.4.1 daemonize 后台进程运行

  设置为yes,守护进程后台启动
在这里插入图片描述

1.4.2 pidfile 存放pid文件的位置

  每个实例会产生一个不同的pid文件
在这里插入图片描述

1.4.3 loglevel 指定日志记录级别

  Redis总共支持四个级别:debug、verbose、notice、warning,默认为notice

debug 用于开发和测试
varbose 不像debug会记录那么多
notice 常用于生产环境
warning 只有非常重要或者严重的信息会记录到日志

四个级别根据使用阶段来选择,生产环境选择notice 或者warning
在这里插入图片描述

1.4.4 logfile 日志文件名称

在这里插入图片描述

1.4.5 databases 16

  设定库的数量 默认16,默认数据库为0,可以使用SELECT 命令在连接上指定数据库id
在这里插入图片描述

1.5 SECURITY

1.5.1 设置密码

在这里插入图片描述

1.6 CLIENTS

1.6.1 maxclients 最大连接数

  集群中需要配置合适的连接数
在这里插入图片描述

1.7 MEMORY MANAGEMENT

1.7.1 maxmemory

  建议必须设置,否则,内存占满会造成服务器宕机

  设置redis可以使用的内存量。一旦到达内存使用上限,redis将会试图移除内部数据,移除规则可以通过maxmemory-policy来指定。
  如果redis无法根据移除规则来移除内存中的数据,或者设置了“不允许移除”,那么redis则会针对那些需要申请内存的指令返回错误信息,比如SET、LPUSH等;对于无内存申请的指令,仍然会正常响应,比如GET等。

  如果是主节点redis,那么在设置内存使用上限时,需要在系统中留出一些内存空间给同步队列缓存。
在这里插入图片描述

1.7.2 maxmemory-policy

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

1.7.3 maxmemory-samples

  设置样本数量
  一般设置3到7的数字,数值越小样本越不准确,但性能消耗越小。
在这里插入图片描述


1.8 LAZY FREEING 逻辑删除

  在使用 FLUSHDB 和 FLUSHALL 删除包含大量键的数据库时,造成redis阻塞的情况;在清理过期数据和淘汰内存超限的数据时,如果遇到大体积的键可能会造成服务器阻塞。 redis 4.0 引入了lazyfree的机制,可以将删除键或数据库的操作放在后台线程里执行, 从而尽可能地避免服务器阻塞。

lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/javahelpyou/article/details/123976562