redis03: redis3.x版本中redis.conf常用配置详解

1.units,在redis中k与kb,m与mb等并不相同,并且在redis中不区分大小写.
在这里插入图片描述

2.################################ GENERAL #####################################

daemonize  yes   是否在后台执行,默认情况下redis 不是作为守护进程运行的,如果你想让它在后台运行,你就把它改成yes。

port 6379  redis启动时的监听端口号.

tcp-backlog 511   设置tcp的backlog, backlog是一个连接队列,backlog队列总和= 未完成三次握手队列+已经完成三次握手队列。在高并发环境下需要一个高backlog值来避免慢客户端连接问题。注意Linux内核会将这个值减小到/ proc/sys/net/core/somaxconn的值,所以需要确认增大somaxconn和tcp_ max_syn_backlog两个值来达到想要的效果。

timeout  0  设置客户端空闲超过timeout,服务端会断开连接,为0则服务端不会主动断开连接,默认为0,一般不需要修改.

tcp-keepalive 0   0为秒数,类似于ping 功能中的最多等待多少秒给回应,此参数在设置redis服务器集群的时候会配置,一般建议设置为60s.

loglevel notice  日志级别,在redis中常用的是debug,verbose,notice,warning.


logfile  /opt/module/redis/logs    指定了记录日志的文件。空字符串
的话,日志会打印到标准输出设备。后台运行的redis标准输出是/dev/null

syslog-enabled no  是否把输出日志输出到系统日志中,默认是关闭的.

syslog-ident redis  指定syslog里面的日志,默认是以redis开头的.

syslog-facility local0   指定syslog的设备,值可以是user或者是
local-local7,默认是local0.

databases 16  默认的redis安装时一共有16个库.

3.################################### LIMITS ####################################

maxclients 10000   最大可供10000个客户端同时连接.

maxmemory <bytes>   指定redis的最大内存限制,redis在启动的时候会把数
据加载到内存中,送到最大内存以后,redis会先尝试已经到期或即将过期的key,
此方法处理后,仍然到达最大的内存设置,将无法在进行写入操作,但仍然可以进行
读取操作,redis新的VM机制,会把key存放内存,value会存放在swap区.


MAXMEMORY POLICY  最大内存策略,这里有6种策略
1. volatile-lru->使用 LRU 算法移除key,只对设置了过期时间的键
2. allkeys-lru -> 根据 LRU 算法移除所有的key
3. volatile-random -> 在过期集合中移除随机的key,只对设置了过期时间的键
4. allkeys-random ->  移除随机的key
5. volatile-ttl -> 删除那些ttl小的key,即那些最近要过期的key
6. noeviction -> 不进行移除,针对写操作,只是返回错误信息(生产环境下不能采用此策略)


maxmemory-samples 5    设置样本的数量,LRU算法和最小的TTL算法并非都是
精确的算法,而是估计值,所以可以设置样本的大小,redis默认会检查这么多key并
选择一个做LRU的那个

4.################################ SNAPSHOTTING ################################


 
#RDB核心规则配置 save <指定时间间隔> <执行指定次数更新操作>,满足条件
就将内存中的数据同步到硬盘
中。官方出厂配置默认是 900秒内有1个更改,300秒内有10个更改以及60秒
内有10000个更改,则将内存中的数据快照写入磁盘。
若不想用RDB方案,可以把 save "" 的注释打开,下面三个注释
#   save ""
save 900 1
save 300 10
save 60 10000
 
#当RDB持久化出现错误后,是否依然进行继续进行工作,yes:不能进行工作,
no:可以继续进行工作,可以通过info中的rdb_last_bgsave_status了解
RDB持久化是否有错误
stop-writes-on-bgsave-error yes
 
#配置存储至本地数据库时是否压缩数据,默认为yes。Redis采用LZF压缩方式,
但占用了一点CPU的时间。若关闭该选项,会导致数据库文件变的巨大。建议开启。
rdbcompression yes
 
#在存储快照后,还可以让redis使用CRC64算法来进行数据校验,但是这样做会增加大约10%的性能消耗,如果希望获取到最大的性能提升,可以关闭该功能.
rdbchecksum yes
 
#指定本地数据库文件名,一般采用默认的 dump.rdb
dbfilename dump.rdb
 
#数据目录,数据库的写入会在这个目录。rdb、aof文件也会写在这个目录
dir   /opt/module/redis

5.################################# REPLICATION #################################


# 复制选项,slave复制对应的master。
# replicaof <masterip> <masterport>
 
#如果master设置了requirepass,那么slave要连上master,需要有master的
密码才行。masterauth就是用来配置master的密码,这样可以在连上master后
进行认证。
# masterauth <master-password>
 
#当从库同主机失去连接或者复制正在进行,从机库有两种运行方式:1) 如果slave-serve-stale-data设置为
yes(默认设置),从库会继续响应客户端的请求。
2) 如果slave-serve-stale-data设置为no,
INFO,replicaOF, AUTH, PING, SHUTDOWN, REPLCONF, ROLE, CONFIG,SUBSCRIBE, UNSUBSCRIBE,
PSUBSCRIBE, PUNSUBSCRIBE, PUBLISH, PUBSUB,COMMAND, POST, 
HOST: and LATENCY命令之外的任何请求
都会返回一个错误”SYNC with master in progress”。
replica-serve-stale-data yes
 
#作为从服务器,默认情况下是只读的(yes),可以修改成NO,用于写(不建议)
#replica-read-only yes
 
# 是否使用socket方式复制数据。目前redis复制提供两种方式,disk和socket。如果新的slave连上来或者
重连的slave无法部分同步,就会执行全量同步,master会生成rdb文件。有2种方式:disk方式是master创建
一个新的进程把rdb文件保存到磁盘,再把磁盘上的rdb文件传递给slave。socket是master创建一个新的进
程,直接把rdb文件以socket的方式发给slave。disk方式的时候,当一个rdb保存的过程中,多个slave都能
共享这个rdb文件。socket的方式就的一个个slave顺序复制。在磁盘速度缓慢,网速快的情况下推荐用socket方式。
repl-diskless-sync no
 
#diskless复制的延迟时间,防止设置为0。一旦复制开始,节点不会再接收新slave的复制请求直到下一个rdb传输。
所以最好等待一段时间,等更多的slave连上来
repl-diskless-sync-delay 5
 
#slave根据指定的时间间隔向服务器发送ping请求。时间间隔可以通过 repl_ping_slave_period 来设置,默认10秒。
# repl-ping-slave-period 10
 
# 复制连接超时时间。master和slave都有超时时间的设置。master检测到
slave上次发送的时间超过repl-timeout,即认为slave离线,清除该
slave信息。slave检测到上次和master交互的时间超过repl-timeout,
则认为master离线。需要注意的是repl-timeout需要设置一个比
repl-ping-slave-period更大的值,不然会经常检测到超时
# repl-timeout 60
 
 
#是否禁止复制tcp链接的tcp nodelay参数,可传递yes或者no。默认是no,即使用tcp nodelay。如果
master设置了yes来禁止tcp nodelay设置,在把数据复制给slave的时候,会减少包的数量和更小的网络带
宽。但是这也可能带来数据的延迟。默认我们推荐更小的延迟,但是在数据量传输很大的场景下,建议选择yes
repl-disable-tcp-nodelay no
 
#复制缓冲区大小,这是一个环形复制缓冲区,用来保存最新复制的命令。这样在slave离线的时候,不需要完
全复制master的数据,如果可以执行部分同步,只需要把缓冲区的部分数据复制给slave,就能恢复正常复制状
态。缓冲区的大小越大,slave离线的时间可以更长,复制缓冲区只有在有slave连接的时候才分配内存。没有
slave的一段时间,内存会被释放出来,默认1m
# repl-backlog-size 1mb
 
# master没有slave一段时间会释放复制缓冲区的内存,repl-backlog-ttl用来设置该时间长度。单位为秒。
# repl-backlog-ttl 3600
 
# 当master不可用,Sentinel会根据slave的优先级选举一个master。最低的优先级的slave,当选master。
而配置成0,永远不会被选举
replica-priority 100
 
#redis提供了可以让master停止写入的方式,如果配置了min-replicas-to-write,健康的slave的个数小于N,mater就禁止写入。master最少得有多少个
健康的slave存活才能执行写命令。这个配置虽然不能保证N个slave都一定能
接收到master的写操作,但是能避免没有足够健康的slave的时候,master不能
写入来避免数据丢失。设置为0是关闭该功能
# min-replicas-to-write 3
 
# 延迟小于min-replicas-max-lag秒的slave才认为是健康的slave
min-replicas-max-lag 10
 
# 设置1或另一个设置为0禁用这个特性。
# Setting one or the other to 0 disables the feature.
# By default min-replicas-to-write is set to 0 (feature disabled) and
# min-replicas-max-lag is set to 10.

猜你喜欢

转载自blog.csdn.net/weixin_44080445/article/details/115324818