1.units(单位)

redis配置大小单位,开都定义了一些基本的度量单位,只支持bytes不支持bit,大小写不敏感
image.png

2.includes(包含)

引入配置,多实例情况下可以将公共的配置文件进行引入加载
image.png

3.网络相关配置和一般配置

bing(访问地址限制)

默认情况bind=127.0.0.1只接受本机的访问请求,需要将该配置改为0.0.0.0或不写
image.png

protected-mode(远程客户端连接保护模式)

默认为yes禁止远程客户端连接
解决办法:
1.修改为no
2.设置bind或密码

port (服务端口)

默认为6379

tcp-backlog

默认511,设置tcp的bacllog,backlog其实是一个连接队列,backlog队列总和=未完成三次握手队列和已完成三次握手队列
在高并发环境下你需要一个高backlog值来避免慢客户端连接问题
注意linux内核会将这个值减小到/proc/sys/net/core/somaxconn的值(128),所以需要确认增大/proc/sys/net/core/somaxconn和/proc/sys/net/ipv4/tcp_max_syn_backlog(128)两个值达到想要的效果

timeout(连接超时)

默认为0,永不超时

tcp-keepalive

默认为300,客户端TCP连接的健康性检查。健康性检查的好处是,在客户端异常关闭的情况下,Redis服务端可以发现这个问题,并主动关闭对端通道。这个参数建议开启。

daemonize(守护进程)

当为yes的时候,以守护进程的模式运行。该参数的默认值为 no,主要目的是为了在测试环境下调试方便;当运行在生产环境时,可以将这个选项配置为yes。

pidfile(进程ID文件)

当Redis没有以守护进程的方式运行,这个pid文件的配置选项不会起作用。当redis以守护进程方式运行时,这个配置选项设置的文件就会被创建和使用。

loglevel(日志级别)

配置的Redis日志级别,默认为notice。这个选项可以设置以下这些值:
debug,非常多的信息无论有用的还是没用的都会被显示或者记录,一般用于开发和测试状态;
verbose,比起debug要少很多,但是也极少出现有用的信息;
notice,信息量适度而且一般不会错过有用的信息,可用于生产环境;
warning,只有非常有用和危险的信息会被显示或者记录,建议使用warning级别的日志记录模式

logfile

日志文件存在的位置,默认为空字符串设置,这时日志会打印到标准输出设备。

syslog-enabled

默认为no(开启),当配置为yes时,Redis的日志会输出到系统日志。

databases

从Redis很早的版本开始,它就支持多个独立的内存数据库同时存在。该值设置数据库的数量,默认数据库为16,可以使用SELECT 命令在连接上指定数据库id。

4.安全配置

requirepass(设置密码)

默认无密码,客户端命令通过auth password进行认证
只有在配置文件中设置密码是永久有效的

rename-command(重命名)

在生产环境下,有一些Redis命令是非常危险的,例如FLUSHALL命令和FLUSHDB命令。所以Redis服务器为生产环境的指令安全性提供了一个重命名功能,通过这个功能我们可以将一些需要避免执行的指令变更成其它指令。

5.资源限制配置

maxclients(客户端连接限制)

设定当前同时连接到本Redis服务上的客户端数量,默认为10000。注意这个值的设定还和操作系统上file limit参数有关联,实际情况是10000个同时正常的客户端连接完全够用,如果实际情况需要调整则一定要同时确认该设定值没有超过操作系统上设定的文件描述符限制数量。

maxmemory(内存限制)

该选项是告诉Redis当使用了多少物理内存后就开始拒绝后续的写入请求,该参数能很好的保护好你的Redis不会因为使用了过多的物理内存而导致swap,最终严重影响性能甚至崩溃。该参数的设置单位为bytes,建议的设置范围不要超过操作系统可支配内存的 3/5,例如您的操作系统可支配8GB内存,那么建议的设置值就是5GB,也就是5242880k、5120mb、5gb。在配置容量大小时,Redis支持各种单位简写,也就是说1GB 1Gb 1gB都是一个意思。如果不设置该参数就表示不限制,但这种方式在生产环境下不推荐。

maxmemory-policy(内存清理策略)

它设置了当内存达到最大可用数量时的内存清除策略。
该选项可以设置以下这些值:
volatile-lru设定值,使用Redis时如果不是有特殊的存储要求,都建议设定Key的过期时间expire。一旦设置了过期时间Redis会将这些Key放置到一个LRU队列中),Redis使用“惰性删除”+“定期删除”的方式对LRU队列中过期的Key进行清理。当内存达到满载状态时,Redis也会启动一次清除操作。
allkeys-lru设定值将忽略Key的过期时间设定,将所有Key放入LRU队列并清除过期的数据。
volatile-random该选项将对过期的Key值采取“随即选取”算法进行清除。
allkeys-random选项和volatile-random选项类似,只不过将Key的选取范围扩大到了所有Key,而不只针对设定了过期时间expire的Key。
volatile-ttl,该选项将清除当前即将过期的Key(最小TTL算法)。
noeviction,如果清除策略设置该值,在Redis内存满载情况下将不启动任何清除策略,直接拒绝后续的写操作。noeviction是一个默认策略,所以建议在生产环境中一定要进行清除策略的修改。

maxmemory-samples

以上提到的LRU算法和TTL算法在Redis中的实现并不是固定的,Redis支持技术人员根据实际情况在算法性能和精度间进行调整。maxmemory-samples配置项实际上就是一个Key的抽样值,值越高算法精度越高。例如设置为10的时候,Redis中的LRU算法基本上处理失效的Key就非常精确了,但是却需要消耗较多的CPU资源;设置为3的时候,虽然处理失效的Key精度不高,但是处理速度非常快。该选项的默认值为5。