redis 存储单位
# 1k => 1000 bytes
# 1kb => 1024 bytes
# 1m => 1000000 bytes
# 1mb => 1024*1024 bytes
# 1g => 1000000000 bytes
# 1gb => 1024*1024*1024 bytes
1 配置大小单位,只支持bytes,不支持bit并且对大小写不敏感。
INCLUDES 包含
该配置下可以配置包含一个或多个配置文件,例如:
include /path/to/local.conf
include /path/to/other.conf
NETWORK
tcp-backlog
设置tcp的backlog,backlog其实是一个连接队列,backlog队列总和=未完成三次握手队列 + 已经完成三次握手队列。
在高并发环境下你需要一个高backlog值来避免慢客户端连接问题。注意Linux内核会将这个值减小到/proc/sys/net/core/somaxconn的值,所以需要确认增大somaxconn和tcp_max_syn_backlog两个值
来达到想要的效果
bind
绑定端口或这ip,后可跟一个或多个IP地址
bind 192.168.1.100 10.0.0.1
bind 127.0.0.1 ::1
在默认情况下,强制Redis只监听IPv4环回接口地址(即本机),这意味着Redis将能够只接受运行在同一台计算机上的客户端的连接,如果要解除该限制,只需要将bind修改或注释即可。
protected-mode
保护模式模式,避免外部直接访问redis实例,当启用该模式时,如果出现以下两种情况
- 未启用
bind
命令 - 未配置密码
则只能通过IPv4环回接口地址访问redis服务。
port
配置redis服务端口
timeout
在客户端空闲N秒后关闭连接(0表示没有限制)
tcp-keepalive
检测tcp的存活状态的周期,单位为秒,如果设置为0,则不会进行Keepalive检测。主要有两个作用
- 检测同伴的死亡。
- 从网络的角度看存活的连接。
从Redis 3.2.1开始,默认设置为300秒
GENERAL 常用
daemonize
配置redis是否以守护进程的方式运行,配置yes
或no
,如果是守护进程的方式运行,Redis将在/var/run/Redis.pid中写入一个pid文件
loglevel
日志的级别,主要有以下几个级别
级别 | 描述 |
---|---|
debug | 产生大量的日志信息,对开发/测试有用 |
verbose | 许多信息很少有用,但不像调试级别那样混乱 |
notice | 信息量适中,可能是生产中需要的 |
warning | 仅记录非常重要/关键的消息 |
logfile
指定日志文件名。也可以使用空字符串强制Redis以登录标准输出。请注意,如果使用标准日志记录输出,守护进程下,日志将发送到/dev/null
syslog-enabled
是否把日志输出到syslog中
syslog-ident
指定syslog里的日志标识
syslog-facility
指定syslog设备,值可以是USER或LOCAL0-LOCAL7
databases
指定数据库的数量,默认是16
SECURITY 安全
在访问任何命令之前需要输入密码AUTH PASSWORD
,可以使用config get requirepass
命令查看密码,使用config set requirepass password
设置密码
LIMITS 限制
maxclients
设置redis同时可以与多少个客户端进行连接。默认情况下为10000个客户端。当你无法设置进程文件句柄限制时,redis会设置为当前的文件句柄限制值减去32,因为redis会为自身内部处理逻辑留一些句柄出来。如果达到了此限制,redis则会拒绝新的连接请求,并且向这些连接请求方发出“max number of clients reached”以作回应。
maxmemory
设置redis可以使用的内存量。一旦到达内存使用上限,redis将会试图移除内部数据,移除规则可以通过maxmemory-policy来指定。如果redis无法根据移除规则来移除内存中的数据,或者设置了“不允许移除”,
那么redis则会针对那些需要申请内存的指令返回错误信息,比如SET、LPUSH等。
但是对于无内存申请的指令,仍然会正常响应,比如GET等。如果你的redis是主redis(说明你的redis有从redis),那么在设置内存使用上限时,需要在系统中留出一些内存空间给同步队列缓存,只有在你设置的是“不移除”的情况下,才不用考虑这个因素。
maxmemory-policy
内存到达上限,数据移除策略。主要有以下几个策略
策略 | 描述 |
---|---|
volatile-lru | 使用LRU算法移除key,只对设置了过期时间的键 |
allkeys-lru | 使用LRU算法移除key |
volatile-lfu | 使用LRU算法移除key,只对设置了过期时间的键 |
allkeys-lfu | 使用LRU算法移除key |
volatile-random | 在过期集合中移除随机的key,只对设置了过期时间的键 |
allkeys-random | 移除随机的key |
volatile-ttl | 移除那些TTL值最小的key,即那些最近要过期的key |
noeviction | 不进行移除。针对写操作,只是返回错误信息 |
相关算法说明:
lru:(Least Recently Used)如果一个数据在最近一段时间没有被访问到,那么可以认为在将来它被访问的可能性也很小。因此,当空间满时,最久没有访问的数据最先被置换(淘汰)。
fifo:如果一个数据是最先进入的,那么可以认为在将来它被访问的可能性很小。空间满的时候,最先进入的数据会被最早置换(淘汰)掉。
lfu: (Least Frequently Used) 如果一个数据在最近一段时间很少被访问到,那么可以认为在将来它被访问的可能性也很小。因此,当空间满时,最小频率访问的数据最先被淘汰。
参考:https://www.cnblogs.com/hongdada/p/10406902.html
maxmemory-samples
过期策略算法的样本数量。LRU和最小的TTL算法不是精确的算法,而是近似算法(为了节省内存),所以你可以调整它的速度或精度。默认情况下,Redis将检查5个键并选择最近使用较少的键。默认值5产生足够好的结果。10非常接近,但是比较消耗cpu。3更快,但不太准确
评论区