1、基本配置

1.1、bind

绑定的网络IP,如果不指定redis将会监听所有网络接口,建议绑定本地IP。示例:

bind 127.0.0.1

1.2、port

端口设置,默认为 6379 ,如果port设置为0 redis将不会监听tcp socket。示例:

port 6379

1.3、protected-mode

是否开启保护模式。默认开启,如果没有设置bind项的ip和redis密码的话,服务将只允许本地访 问。示例:

protected-mode yes

1.4、daemonize

是否将Redis作为守护进程运行。注意配置成守护进程后Redis会将进程号写入文件/var/run/redis.pid。示例:

daemonize no

1.5、tcp-keepalive

当客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能。示例:

tcp-keepalive 300

1.6、tcp-backlog

tcp连接排队队列大小,在高并发环境下需要一个高backlog值来避免慢客户端连接问题。示例:

tcp-backlog 511

1.7、pidfile

pid文件在redis启动时创建,退出时删除,建议配置该项。示例:

pidfile /var/run/redis.pid

1.8、loglevel

配置日志级别。选项有debug, verbose, notice, warning,示例:

loglevel notice

1.9、logfile

日志名称。空字符串表示标准输出。注意如果redis配置为后台进程,标准输出中信息会发送到/dev/null。示例:

logfile /tmp/redis.log

1.10、databases

设置使用第几个数据库,默认为0。示例:

databases 16

1.11、save <seconds> <changes>

持久化设置:
下面的例子将会进行把数据写入磁盘的操作:
  900秒(15分钟)之后,且至少1次变更
  300秒(5分钟)之后,且至少10次变更
  60秒之后,且至少10000次变更
不写磁盘的话就把所有 "save" 设置注释掉就行了。
  save 900 1
  save 300 10
  save 60 10000

1.12、rdbcompression

是否在备份.rdb文件时是否用LZF压缩字符串,默认设置为yes。如果想节约cpu资源可以把它设置为no。示例

rdbcompression yes

1.13、dbfilename

指定本地数据库文件名,默认值为dump.rdb,示例:

dbfilename backup.rdb

1.14、dir

指定本地数据库存放目录,示例

dir /var/run/redis/db/

2、限制性配置

2.1、maxclients

设置最多同时连接的客户端数量。默认这个限制是10000个客户端,然而如果Redis服务器不能配置,处理文件的限制数来满足指定的值,那么最大的客户端连接数就被设置成当前文件限制数减32(因为Redis服务器保留了一些文件描述符作为内部使用)。示例:

maxclients  20000

2.2、maxmemory <bytes>

指定Redis最大内存限制,Redis在启动时会把数据加载到内存中,达到最大内存后,Redis会先尝试清除已到期或即将到期的Key,当此方法处理 后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。

max memory  10240000

2.3、maxmemory-policy

最大内存逐出策略:

volatile-lru -> 根据LRU算法删除设置过期时间的key

allkeys-lru -> 根据LRU算法删除任何key

volatile-random -> 随机移除设置过过期时间的key

allkeys-random -> 随机移除任何key

volatile-ttl -> 移除即将过期的key(minor TTL)

noeviction -> 不移除任何key,只返回一个写错误

示例:

maxmemory-policy  volatile-lru

2.4、maxmemory-samples

LRU和最小TTL算法的实现都不是很精确,但是很接近(为了省内存),所以你可以用样本量做检测。 例如:默认Redis会检查3个key然后取最旧的那个,你可以通过下面的配置指令来设置样本的个数。

maxmemory-samples 5

3、安全性

3.1、requirepass

客户端连接密码。示例:

requirepass  redis@123456

3.2、rename-command

命令重命名。线上一些重要的操作可以进行重命名,防止误操作,比如:

rename-command flushdb  fdb

4、主从同步

4.1、slaveof <masterip> <masterport>

主从同步配置,表示当前redis实例连接到master实例的ip和端口,示例:

slaveof  10.17.188.199 6379

4.2、masterauth

master连接密码,示例:

masterauth redis-master@123456

4.3、slave-serve-stale-data

当一个slave失去和master的连接,或者同步正在进行中,slave的行为有两种可能:

1) 如果 slave-serve-stale-data 设置为 "yes" (默认值),slave会继续响应客户端请求,可能是正常数据,也可能是还没获得值的空数据。

2) 如果 slave-serve-stale-data 设置为 "no",slave会回复"正在从master同步(SYNC with master in progress)"来处理各种请求,除了 INFO 和 SLAVEOF 命令。

4.4、slave-read-only

从节点是否只读,一般建议设置为只读,示例:

slave-read-only yes

4.5、repl-diskless-sync

同步策略有两种: 磁盘或socket,默认磁盘方式,如果设置yes就用socket方式:

repl-diskless-sync yes

4.6、repl-diskless-sync-delay

如果socket同步方式开启,可以配置同步延迟时间,以等待master产生子进程通过socket传输RDB数据给slave,默认值为5秒,设置为0秒则每次传输无延迟。:

repl-diskless-sync-delay 5

4.7、repl-ping-slave-period

slave根据指定的时间间隔向master发送ping请求。默认10秒。

4.8、repl-timeout

同步的超时时间:

repl-timeout 120

4.9、repl-disable-tcp-nodelay

是否在slave套接字发送SYNC之后禁用 TCP_NODELAY。如果选择yes,Redis将使用更少的TCP包和带宽来向slaves发送数据。但是这将使数据传输到slave上有延迟,Linux内核的默认配置会达到40毫秒。如果选择no,数据传输到salve的延迟将会减少但要使用更多的带宽。

repl-disable-tcp-nodelay yes

4.10、repl-backlog-size

设置数据备份的backlog大小。backlog是一个slave在一段时间内断开连接时记录salve数据的缓冲,所以一个slave在重新连接时,不必要全量的同步,而是一个增量同步就足够了,将在断开连接的这段# 时间内把slave丢失的部分数据传送给它。

repl-backlog-size  1mb

4.11、repl-backlog-ttl

当master在一段时间内不再与任何slave连接,backlog将会释放。以下选项配置了从最后一个slave断开开始计时多少秒后,backlog缓冲将会释放。0表示永不释放backlog。

repl-backlog-ttl 3600

4.12、slave-priority

slave的优先级是一个整数展示在Redis的Info输出中。如果master不再正常工作了,sentinel将用它来选择一个slave提升为master。优先级数字小的salve会优先考虑提升为master,所以例如有三个slave优先级分别为10,100,25,sentinel将挑选优先级最小数字为10的slave。0作为一个特殊的优先级,标识这个slave不能作为master,所以一个优先级为0的slave永远不会被 sentinel挑选提升为master。

slave-priority 100