redis配置文件介绍
4.1 INCLUDES 包含配置文件
redis也可以像spring的xml文件一样,引入其他的配置文件(前一个配置文件的值被后面配置文件的值覆盖)
#引入其他配置文件的方式如下:
#include /path/to/local.conf
#include /path/to/other.conf
4.2 MODULES
加载自定义模块(redis4.0以后的特性)
#服务端启动时加载自定义模块方式如下:
#loadmodule /path/to/my_module.so
#loadmodule /path/to/other_module.so
4.3 NETWORK 网络监听
1)、redis默认是只监听本地ip的,也可以不指定监听的网络地址,那就是对所有网络可访问,是很危险的,官方强烈建议
#要绑定监听的网络地址。
bind 127.0.0.1
2)、默认端口是6379
port 6379
#如果设为0,redis将不在socket 上监听任何客户端连接
3)、TCP listen() backlog默认情况下:
tcp-backlog 511
#TCP监听的最大容纳数量,在高并发的环境下,你需要把这个值调高以避免客户端连接缓慢的问题。Linux 内核会把这个值缩小成 /proc/sys/net/core/somaxconn对应的值,要提升并发量需要修改这两个值才能达到目的
4)、客户端空闲多久关闭链接.也就是超时时间默认是0秒(0表示永不关闭):
timeout 0
5)、TCP keepalive
#redis是单一长链接的,默认长链接保持时间是300s
tcp-keepalive 300
#单位是秒,表示将周期性的使用SO_KEEPALIVE检测客户端是否还处于健康状态,避免服务器一直阻塞,官方给出的建议值是300s,如果设置为0,则不会周期性的检测
4.4 GENERAL
1)、是否守护进程,redis默认启动的服务不是守护进程:
daemonize no
#当redis作为守护进程运行的时候,它会写一个 pid 到 /var/run/redis.pid 文件里面
2)、supervised no
#可以通过upstart和systemd管理Redis守护进程
#选项:
#supervised no - 没有监督互动
#supervised upstart - 通过将Redis置于SIGSTOP模式来启动信号
#supervised systemd - signal systemd将READY = 1写入$ NOTIFY_SOCKET
#supervised auto - 检测upstart或systemd方法基于 UPSTART_JOB或NOTIFY_SOCKET环境变量
supervised no
3)、 pidfile文件
#redis如启动的是守护进程服务的话,默认会创建一个redis.pid文件到 "/var/run/redis.pid"文件夹下,
#当redis不是以守护进程启动的话,conf文件里也给了一个默认的输出pid文件的路径,并且官方也是强烈建议
#去创建一个这么个文件的:
pidfile /var/run/redis_6379.pid
4)、loglevel 日志级别
d#ebug
#verbose
#notice
#warning
#官方默认的是 notice级别:
loglevel notice
5)、logfile 日志文件路径
logfile ""
6)、databases 数据库数
#redis默认是设置16个数据库的
databases 16
4.5 SECURITY 安全
设置redis的密码,默认是
requirepass "";
可以对应的修改密码;产线环境必须设置密码
在redis客户端使用输入面貌的命令是: auth password
4.6 CLIENTS
#maxclients 10000 最大客户端链接数,默认1万;
修改的话也很简单啦,
maxclients 100 这样就把客户端的最大链接数限制在100;
4.7 MEMORY MANAGEMENT 内存管理(产线必须修改!!)
# maxmemory <bytes> 设置redis内存大小,
默认为0,表示"无限制",最终由OS物理内存大小决定(如果物理内存不足,有可能会使用swap)。此值尽量不要超过机器的物理内存尺寸,从性能和实施的角度考虑,可以为物理内存3/4。此配置需要和"maxmemory-policy"配合使用,当redis中内存数据达到maxmemory时,触发"清除策略"。在"内存不足"时,任何write操作(比如set,lpush等)都会触发"清除策略"的执行。在实际环境中,建议redis的所有物理机器的硬件配置保持一致(内存一致),同时确保master/slave中"maxmemory""policy"配置一致。
当内存满了的时候,如果还接收到set 命令,redis 将先尝试剔除设置过expire 信息的key,而不管该key 的过期时间还没有到达。在删除时,
将按照过期时间进行删除,最早将要被过期的key 将最先被删除。如果带有expire 信息的key 都删光了,内存还不够用,那么将返回错误。这样,redis 将不再接收写请求,只接收get 请求。maxmemory 的设置比较适合于把redis 当作于类似memcached的缓存来使用。
# maxmemory-policy noeviction 内存超限的默认策略是永不过期,
有以下几种方法可设置内存超限后的处理策略
# volatile-lru -> Evict using approximated LRU among the keys with an expire set.
# -> Evict any key using approximated LRU.
# volatile-lfu -> Evict using approximated LFU among the keys with an expire set.
# allkeys-lfu -> Evict any key using approximated LFU.
# volatile-random -> Remove a random key among the ones with an expire set.
# allkeys-random -> Remove a random key, any key.
# volatile-ttl -> Remove the key with the nearest expire time (minor TTL)
# noeviction -> Don't evict anything, just return an error on write operations.
注意一般这里需要修改为 :
maxmemory-policy volatile-lru 或者 maxmemory-policy allkeys-lru