官方的redis.conf配置文件十分完事,且注释说明很详细到位,我们可以根据提示块,快速锁定目标配置项。
真正使用时,第一注意备份默认配置文件,第二覆盖或者注释掉一些仅适用于练习测试用的默认配置项,比如最大客户端数、最大内存接近处理策略等。
整理常用配置项说明如下:
- INCLUDES 多配置文件
类比nginx配置,我们可以以默认的为主框架配置,然后使用include /xx/xx.conf
将其他模块配置包含进来 - NETWORK 网络相关配置
port 6379
redis服务启动端口配置,m默认6379tcp-backlog 511
连接队列大小配置,根据官方注释说明:- 高并发场景下需要一个tpc队列来避免慢客户端连接的问题,这里默认值为511
- 但是,Linux内核将自动将其截断为/proc/sys/net/core/somaxconn的值,所以,如果系统的tps很大,需要同时调整/proc/sys/net/core/somaxconn和tcp-backlog来达到效果
bind 127.0.0.1
配置暴露给哪些客户端连接服务,默认只能本机作为客户端连接。- 如果允许任意机器连接,注掉所有bind配置即可,但是这时请单独配置redis密码。
- 如果指定几台机器才能访问,继续添加bind项即可。
timeout 0
redis-cli客户端空闲超时断开连接的时间设置,默认0代表一直不断开连接tcp-keepalive 300
tcp连接心跳确认时间设置,redis3.2.1开始默认推荐设置300秒(之前默认推荐是60秒)。该值非0,则会redis服务端会在客户端没有动静时,周期性向客户端发送TCP-ACK信号,原因有俩(还不大懂啥意思):- Detect dead peers.
- Take the connection alive from the point of view of network equipment in the middle.
- GENERAL 通用标准配置
daemonize no
是否以守护进程方式运行redis服务,默认为nopidfile /var/run/redis_6379.pid
指定用于记录redis服务进程文件的位置。loglevel notice
redis日志级别配置logfile ''
指定日志文件输出路径# syslog-enabled no
系统日志默认是关闭的# syslog-ident redis
系统日志的文本标识# syslog-facility local0
指定系统日志工具,还不清楚。。databases 16
指定初始数据库数目
默认16,客户端使用select n
切换数据库,n从0开始。
- SNAPSHOTTING 快照配置,待结合redis的RDB持久化梳理。
- APPEND ONLY MODE,待结合redis的AOF持久化梳理。
- REPLICATION 复制相关配置,待结合redis主从复制梳理。
- SECURITY 安全相关设置
# requirepass foobared
默认的redis-cli连接上redis-server不需要密码。
客户端连接后使用config get requirepass
会得到空串,且默认的只有本机可以连接服务。- 配置文件打开该注释,redis-cli连接上后,输入
auth foobared
验证密码OK后,才能继续操作 - 也可以启动后设置密码,客户端连接上后输入
config set requirepass xxx
设置auth密码即可
- 配置文件打开该注释,redis-cli连接上后,输入
- MEMORY MANAGEMENT 内存管理配置
# maxclients 10000
最大客户端连接数# maxmemory <bytes>
最大内存配置# maxmemory-policy noeviction
当redis内存占用接近最大内存配置时采用的策略,有8种:默认noeviction不做算法处理,再写入时报错即可- volatile-lru -> Evict using approximated LRU among the keys with an expire set.
- allkeys-lru -> 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-samples 5
lru、lfu和最小ttl算法不是精确算法,而是近似算法。可以配置样本键数来调整它们的速度和精确度。默认值5产生足够好的结果,十分接近真正的lru,但需要更多的cpu。3更快,但不太准确。- 其他配置块