Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程
2 pidfile /usr/local/redis/run/redis_8000.pid
当 Redis 以守护进程的方式运行的时候,Redis 默认会把 pid 文件放在/var/run/redis.pid,当运行多个 redis 服务时,需要指定不同的 pid 文件和端口
3 bind 127.0.0.1
配置redis的ip
4 port 8000
配置redis端口
5 tcp-backlog 511
此参数确定了TCP连接中已完成队列(完成三次握手之后)的长度, 当然此值必须不大于Linux系统定义的/proc/sys/net/core/somaxconn值,默认是511,而Linux的默认参数值是128。当系统并发量大并且客户端速度缓慢的时候,可以将这二个参数一起参考设定>。
6 timeout 300
客户端连接的超时时间,单位为秒,超时后会关闭连接
7 tcp-keepalive 0
如果值非0,单位是秒,表示将周期性的使用SO_KEEPALIVE检测客户端是否还处于健康状态,避免服务器一直阻塞,官方给出的建议值是60S。
8 loglevel notice
日志记录等级,4个可选值debug、verbose、notice、warning
9 logfile "/usr/local/redis/logs/8000.log"
配置 log 文件地址,默认打印在命令行终端的窗口上,也可设为/dev/null屏蔽日志
10 databases 16
设置数据库的个数,可以使用 SELECT 命令来切换数据库
11 save 900 1
设置 Redis 进行数据库镜像的频率。保存数据到disk的策略 900秒之内有1个keys发生变化时
12 save 300 10
设置 Redis 进行数据库镜像的频率。保存数据到disk的策略 30秒之内有10个keys发生变化时
13 stop-writes-on-bgsave-error yes
当持久化出现错误之后,是否继续提供写服务
14 rdbcompression yes
在进行镜像备份时,是否进行压缩
15 rdbchecksum yes
读取和写入的时候是否支持CRC64校验,默认是开启的
16 dbfilename dump9000.rdb
镜像备份文件的文件名
17 dir /usr/local/redis/rdb
数据库镜像备份的文件放置的路径,默认值为 ./
18 masterauth
设置访问master服务器的密码
19 slave-serve-stale-data yes
当slave服务器和master服务器失去连接后,或者当数据正在复制传输的时候,如果此参数值设置“yes”,slave服务器可以继续接受客户端的请求,否则,会返回给请求的客户端如下信息“SYNC with master in progress”
20 slave-read-only yes
是否允许slave服务器节点只提供读服务
21 repl-disable-tcp-nodelay
指定向slave同步数据时,是否禁用socket的NO_DELAY选 项。若配置为“yes”,则禁用NO_DELAY,则TCP协议栈会合并小包统一发送,这样可以减少主从节点间的包数量并节省带宽,但会增加数据同步到 slave的时间。若配置为“no”,表明启用NO_DELAY,则TCPP
协议栈不会延迟小包的发送时机,这样数据同步的延时会减少,但需要更大的带宽。 通常情况下,应该配置为no以降低同步延时,但在主从节点间网络负载已经很高的情况下,可以配置为yes。
22 slave-priority
指定slave的优先级。在不只1个slave存在的部署环境下,当master宕机时,Redis Sentinel会将priority值最小的slave提升为master。需要注意的是,若该配置项为0,则对应的slave永远不会自动提升为master。
23 appendonly
开启append only 模式之后,redis 会把所接收到的每一次写操作请求都追加到appendonly.aof 文件中,当redis 重新启动时,会从该文件恢复出之前的状态。但是这样会造成appendonly.aof 文件过大,所以redis 还支持了BGREWRITEAOF 指令,对appendonly.aof 进行重新整理。默认是不开启的。
24 appendfilename "appendonly8000.aof"
默认为appendonly.aof。
25 appendfsync no
设置aof的同步频率,有三种选择always、everysec、no,默认是everysec表示每秒同步一次。
26 no-appendfsync-on-rewrite no
指定是否在后台aof文件rewrite期间调用fsync,默认为no,表示要调用fsync(无论后台是否有子进程在刷盘)。Redis在后台写RDB文件或重写afo文件期间会存在大量磁盘IO,此时,在某些linux系统中,调用fsync可能会阻塞。
27 auto-aof-rewrite-percentage 100
指定Redis重写aof文件的条件,默认为100,表示与上次rewrite的aof文件大小相比,当前aof文件增长量超过上次afo文件大小的100%时,就会触发background rewrite。若配置为0,则会禁用自动rewrite
28 auto-aof-rewrite-min-size 64mb
指定触发rewrite的aof文件大小。若aof文件小于该值,即使当前文件的增量比例达到auto-aof-rewrite-percentage的配置值,也不会触发自动rewrite。即这两个配置项同时满足时,才会触发rewrite。
29 aof-rewrite-incremental-fsync yes
aof rewrite过程中,是否采取增量文件同步策略,默认为“yes”。 rewrite过程中,每32M数据进行一次文件同步,这样可以减少aof大文件写入对磁盘的操作次数
30 lua-time-limit 5000
一个Lua脚本最长的执行时间,单位为毫秒,如果为0或负数表示无限执行时间,默认为5000
31 maxclients 10000
限制同时连接的客户数量,当连接数超过这个值时,redis 将不再接收其他连接请求,客户端尝试连接时将收到 error 信息
32 maxmemory 14G
最大可使用内存。如果超过,Redis会试图删除EXPIRE集合中的keys
33 maxmemory-policy volatile-ttl
volatile-lru使用LRU算法来删除过期的set,allkeys-lru删除任何遵循LRU算法的key,volatile-ttl删除最近即将过期的key,volatile-random ->随机地删除过期set中的key
34 axmemory-samples 3
对于处理redis内存来说,LRU和minor TTL算法不是精确的,而是近似的(估计的)算法。所以我们会检查某些样本#来达到内存检查的目的。默认的样本数是3,你可以修改它。
35 vm-enabled no
指定是否启用虚拟内存机制,默认值为no,简单的介绍一下,VM机制将数据分页存放,由Redis将访问量较少的页即冷数据swap到磁盘上,访问多的页面由磁盘自动换出到内存中(在后面的文章我会仔细分析Redis的VM机制)
36 vm-swap-file /tmp/redis.swap
虚拟内存文件路径,默认值为/tmp/redis.swap,不可多个Redis实例共享
37 vm-max-memory 0
将所有大于vm-max-memory的数据存入虚拟内存,无论vm-max-memory设置多小,所有索引数据都是内存存储的(Redis的索引数据 就是keys),也就是说,当vm-max-memory设置为0的时候,其实是所有value都存在于磁盘。默认值为0
38 vm-page-size 32
Redis swap文件分成了很多的page,一个对象可以保存在多个page上面,但一个page上不能被多个对象共享,vm-page-size是要根据存储的 数据大小来设定的,作者建议如果存储很多小对象,page大小最好设置为32或者64bytes;如果存储很大大对象,则可以使>用更大的page,如果不 确定,就使用默认值
39 vm-pages 134217728
设置swap文件中的page数量,由于页表(一种表示页面空闲或使用的bitmap)是在放在内存中的,,在磁盘上每8个pages将消耗1byte的内存。
40 vm-max-threads 4
设置访问swap文件的线程数,最好不要超过机器的核数,如果设置为0,那么所有对swap文件的操作都是串行的,可能会造成比较长时间的延迟。默认值为4
41 glueoutputbuf yes
设置在向客户端应答时,是否把较小的包合并为一个包发送,默认为开启
42 hash-max-zipmap-entries 64 hash-max-zipmap-value 512
指定在超过一定的数量或者最大的元素超过某一临界值时,采用一种特殊的哈希算法
43 activerehashing yes
指定是否激活重置哈希,默认为开启
44 include /path/to/local.conf
指定包含其它的配置文件,可以在同一主机上多个Redis实例之间使用同一份配置文件,而同时各个实例又拥有自己的特定配置文件
45 repl-diskless-sync no repl-diskless-sync-delay 5
是否使用socket同步数据,以及同步数据的时间间隔
46 aof-load-truncated yes
指redis在恢复时,会忽略最后一条可能存在问题的指令。默认值yes。即在aof写入时,可能存在指令写错的问题(突然断电,写了一半),这种情况下,yes会log并继续,而no会直接恢复失败.
47 cluster-enabled yes
启用或停用集群
48 cluster-config-file /usr/local/redis/nodes/9000.conf
集群的配置文件
49 cluster-node-timeout 5000
集群种节点确认是否宕机的时间间隔
50 lowlog-log-slower-than 10000
配置记录慢日志的条件,单位是微妙,当是负值时,关闭慢日志记录,当是0时,记录所有操作
51 slowlog-max-len 1024
配置记录慢查询的最大条数
52 latency-monitor-threshold 0
redis延时监控系统通过这个时间间隔纪录大于或等于预定时间(毫秒)的操作, 当设置为0时,这个监控系统处于停止状态
53 notify-keyspace-events ""
参数可以是以下字符串的任意组合,它们用来指定服务器发送哪些类型的通知:
# K键空间通知,所有通知以 __keyspace@ __ 为前缀
# E键事件通知,所有通知以 __keyevent@ __ 为前缀
# g DEL 、 EXPIRE 、 RENAME 等类型无关的通用命令的通知
# $ 字符串命令的通知
# l 列表命令的通知
# s 集合命令的通知
# h 哈希命令的通知
# z 有序集合命令的通知
# x 过期事件,每当有过期键删除时通知
# e 键淘汰事件:每当有键因为maxmemory-policy 策略被淘汰时通知
# A 参数g$lshzxe 的别名
# 举例说明,如果只想订阅键空间中和列表相关的通知, 那么参数就应该设为 Kl,诸如此类。参数中至少有一个 K 或 E,否则不会有任何通知分发,”AKE” 表示发送所有类型的通知,””空字符串表示关闭键空间通知功能。