INCLUDES
Redis只有一个 redis.conf 配置文件,如果有多个人维护,则可以创建多个配置文件,通过 include 配置进来
MODULES
自定义模块配置,通过 loadmodule 配置进来
NETWORK
- bind:绑定redis服务器网卡IP,默认为127.0.0.1,访问redis服务器只能通过本机的客户端连接。如果要支持外部网络连接,则需要注释 # 127.0.0.1
- port:redis服务运行的端口号,默认为6379
- protected-mode:保护模式,默认为yes,需要通过bind ip 或者 设置访问密码才能访问;如果为no,则外部网络可直接访问
- timeout:客户端连接的超时时间,默认为0,单位为秒,永不关闭连接。如果设置了连接超时时间,客户端在这段超时时间内未发出任何指令,则关闭该客户端连接
- tcp-keepalive:检查客户端是否处于健康状态,避免服务器一直阻塞,默认为300,单位为秒
GENERAL
- daemonize:redis服务是否以守护进程(后台运行)的方式启动,默认为no,建议设置为yes
- pidfile:配置PID文件路径,当redis以守护进程的方式启动时,它会把 pid 默认写到 /var/redis/run/redis_6379.pid 里面
- loglevel:日志级别,默认为notice。redis一共有四种日志级别
* debug(记录大量日志信息,适用于开发、测试阶段)
* verbose(较多日志信息)
* notice(适量日志信息,使用于生产环境)
* warning(仅有部分重要、关键信息才会被记录)
- logfile:日志打印文件地址
- databases:设置数据库数目,默认使用数据库为DB 0,默认16个数据库,用select dbid 切换
SNAPSHOTTING
- save命令:触发redis持久化的条件,将内存中的数据保存到磁盘中,默认配置如下:
- save 900 1:当900秒内,至少有1个key的值发生变化,则保存到磁盘中
- save 300 10:当300秒内,至少有10个key的值发生变化,则保存到磁盘中
- save 60 10000:当60秒内,至少有10000个key的值发生变化,则保存到磁盘中
如果不需要做持久化,仅使用缓存功能,则可以将持久化条件全部注释,且设置为save ""
- stop-writes-on-bgsave-error:默认为yes。当启用RDB持久化且最后一次后台数据保存失败,redis是否停止接收数据。可以让用户知道将内存中的数据持久化到磁盘中发生了错误。如果设置为no,则不会意识到灾难发生,当redis重启后,可以重新开始接收数据
- rdbcompression:默认为yes。对于持久化到磁盘中的数据是否进行压缩处理,如果为yes,则redis采用LZF算法进行压缩;如果不想消耗cpu来进行压缩,可以设置为no,但存储在磁盘中的快照会比较大
- rdbchecksum:默认为yes。在存储快照后,可以使用redis的CRC64算法进行数据校验,会产生一定的性能消耗,如果想达到最大的性能提升,可以设置为no关闭
- dbfilename:设置快照的文件名,默认为dump.rdb
- dir:存储快照存放的文件路径。此配置是一个目录,不是一个文件名,使用 dbfilename 的值做为保存的文件名
REPLICATION
- slave-serve-stale-data:默认为yes。主从复制中,从服务器可以响应客户端请求;如果设置为no,主从复制中,从服务器将阻塞所有请求,有客户端请求时返回“SYNC with master in progress”
- slave-read-only:默认为yes。主从节点中slave节点只读,如果设置为no,则slave节点可以写
- repl-diskless-sync:默认为no。主从数据复制是否使用无硬盘复制功能
- repl-diskless-sync-delay:
- repl-disable-tcp-nodelay:
SECURITY
- rename-command:命令重命名,对于一些危险命令,可以使用
* flushdb:清空数据库
* flushall:清空所有记录
* config:服务器配置项
* keys:可查看所有key键
一般危险命令会禁止使用,如rename-command FLUSHALL "";如果需要保留命令,但需谨慎使用,可以重命名,如rename-command FLUSHALL 重命名值。
- requirepass:设置redis连接密码
CLIENTS
- maxclients:设置redis最大连接数,注释此配置或设置为0,则标识不做限制。如果客户端连接数达到限制时,会返回 "max number of clients reached" 错误信息
MEMORY MANAGEMENT
- maxmemory:设置redis最大内存。如果设置为0,则代表不做限制,通常配合 maxmemory-policy 配置项一起使用
- maxmemory-policy:当redis内存达到设置的最大值时,redis将使用内存清除策略,有以下几种:
* volatile-lru:利用LRU算法移除设置过期时间的key(LRU:最近使用。Least Recently Used)
* allkeys-lru:利用LRU算法移除任何key
* volatile-random:移除设置过期时间的随机key
* allkeys-random:移植随机key
* volatile-ttl:移除即将过期的key
* noeviction noeviction:不移除key,返回一个错误,默认选项
APPEND ONLY MODE
- appendonly:redis默认使用RDB方式持久化,此配置是使用AOF的方式进行持久化,默认为no。如果设置为yes,redis会把每次写入的数据接收后都写入appendonly.aof文件中,每次启动redis会先从appendonly.aof文件中将数据读取到内存中,忽略RDB文件
- appendfilename :AOF持久化的文件名,默认为 appendonly.aof
- appendfsync:AOF持久化策略
* no:表示不执行fsync命令,由操作系统保证将内存中的数据同步到磁盘中,速度最快
* always:表示每次写入都执行fsync命令,将内存中的数据同步到磁盘中
* everysec:表示每秒执行一次fsync命令,可能会导致丢失这1s数据(如果执行fsync命令失败),默认项
- no-appendfsync-on-rewrite:在重写入aof或rdb文件时会造成阻塞,会执行大量IO,如果对延迟要求较高,则设置为yes,表示rewrite期间对新写操作不执行fsync命令,暂存于内存中,等rewrite完成后再写入,默认值为no,建议为yes。
- auto-aof-rewrite-percentage:默认值为100。aof自动重写配置,当前aof文件大小超过上一次重写的aof文件的百分之多少进行重写,redis执行bgrewriteaof对日志文件进行重写。
- auto-aof-rewrite-min-size:默认为64mb。设置允许重写的最小aof文件大小,避免达到了约定100%文件任然很小的情况还要重写
- aof-load-truncated:如果redis宕机,在恢复启动后,可能aof文件尾部是不完整的。默认值为yes,aof日志文件会继续使用,如果设置为no,则恢复失败,需要用户手动 redis-check-aof 修复AOF文件才可使用
LUA SCRIPTING
- lua-time-limit:lua脚本执行的最大时间,单位为ms。默认值为5000
REDIS CLUSTER
- cluster-enabled:redis集群开关
- cluster-config-file:redis集群配置文件,每个节点都有一个集群配置文件
- cluster-node-timeout:集群节点互联超时毫秒数,默认为15000毫秒
- cluster-slave-validity-factor:默认值为10。在进行故障转移的时候,全部slave节点都会请求申请为master节点,但有些slave节点可能与master节点断开连接一段时间了,导致数据过于陈旧,这样的slave节点不应该被提升为master。该参数就是用来判断slave节点与master节点断线的时间是否过长。判断方法是:比较slave节点断开连接的时间和(node-timeout * slave-validity-factor) + repl-ping-slave-period,如果节点超时时间为三十秒, 并且slave-validity-factor为10,假设默认的repl-ping-slave-period是10秒,即如果超过310秒slave节点将不会尝试进行故障转移
- cluster-migration-barrier:master节点需要的最小slave节点数,只有达到这个数,master节点失败时,slave节点才能迁移到其他master节点上
- cluster-require-full-coverage:默认情况下,集群全部的slot有节点负责,集群状态才为ok,才能提供服务。 设置为no,可以在slot没有全部分配的时候提供服务。不建议打开该配置,这样会造成分区的时候,小分区的master一直在接受写请求,而造成很长时间数据不一致