【Redis】Redis学习③ - Redis主要配置项

【Redis】Redis学习③ - Redis主要配置项

Redis主要配置项

监听地址,可以用空格隔开跟多个监听IP

bind 0.0.0.0 

redis3.2之后加入的新特性,在没有设置bind IP和密码的时候只允许访问172.0.0.1:6379

protected-mode yes

监听端口

port 6379

三次握手的时候server端收到client ack确认号之后的队列值

tcp-backlog 511

客户端和Redis服务端的连接超时时间,默认是0,表示永不超时

timeout 0

tcp会话保持时间

tcp-keepalive 300

前台启动redis,一般不是作为守护进程运行的,如果你想让他在后台运行,就改成yes,当redis作为守护进程运行的时候,会写一个pid到/var/run/redis.pid文件里面

daemonize no

pid 文件路径

pidfile /var/run/redis_6379.pid

和操作系统相关的参数,可以设置通过upstart和systemd管理redis守护进程,centos以后都使用systemd

supervised no

日志级别

loglevel notice

日志路径

logfile ""

设置db库数量,默认16个库

databases 16

在启动redis时是否显示logo

always-show-logo yes

在900秒内有一个键内容发生更改就触发快照机制

save 900 1
save 300 10
save 60 10000

快照出错时是否禁止redis写入操作

stop-writes-on-bgsave-error no

持久化到RDB文件时,是否压缩,yes为压缩

rdbcompression yes

是否开启RC64校验,默认是开启

rdbchecksum yes

快照文件名

dbfilename dump.rdb

快照文件保存路径

dir ./

当从库同主库失去连接或者复制正在进行,从库有两种运行方式:
1)如果replica-server-stale-data设置为yes(默认设置),从库会继续响应客户端的读请求。
2)如果replica-server-stale-data设置为no,除去指定的命令之外的任何请求都会返回一个错误“SYNC with master in progress”。

replica-server-stale-data yes

是否设置从库只读

replica-read-only yes

是否使用socket方式复制数据,目前redis复制提供两种方式,disk和socket。
如果新的slave连上来或者重连的slave无法部分同步,就会执行全量同步,master会生成rdb文件,有2种方式:
1)disk方式:disk方式是master创建一个新的进程把rdb文件保存到磁盘,再把磁盘上的rdb文件传递给slave
2)socket方式:socket方式是master创建一个新的进程,直接把rdb文件以socket方式发给slave。

  • disk方式的时候,当一个rdb保存的过程中,多个slave都能共享这个rdb文件。
  • socket的方式就是一个个slave顺序复制。
  • 只有在磁盘速度缓慢但是网络相对较快的情况下才使用socket方式,否则使用默认的disk方式。
repl-diskless-sync no

diskless复制的延迟时间,设置0为关闭,一旦复制开始还没结束之前,master节点不会再接收新slave的复制请求,直到下一次开始

repl-diskless-sync-delay 30

根据master指定的时间进行周期性的PING监测

repl-ping-salve-period 10

复制链接超时时间,需要大于repl-ping-slave-period,否则会经常报超时

repl-timeout 60

在socket模式下是否在slave套接字发送SYNC之后禁用TCP_NODELAY。

  • 如果选择“yes” Redis将是用更少的TCP包和带宽来向slaves发送数据。但是这将使数据传输到slave上有延迟,Linux内核的默认配置会达到40毫秒。
  • 如果选择“no” 数据传输到slave的延迟将会减少但要使用更多的带宽。
repl-disable-tcp-nodelay no
  • 注解(TCP_NODELAY):参考:TCP_NODELAY
    TCP/IP协议中针对TCP默认开启了Nagle算法。Nagle算法通过减少需要传输的数据包,来优化网络。在内核实现中,数据包的发送和接受会先做缓存,分别对应于写缓存和读缓存。
    启动TCP_NODELAY,就意味着禁用了Nagle算法,允许小包的发送。对于延时敏感型,同时数据传输量比较小的应用,开启TCP_NODELAY选项无疑是一个正确的选择。比如,对于SSH会话,用户在远程敲击键盘发出指令的速度相对于网络带宽能力来说,绝对不是在一个量级上的,所以数据传输非常少;而又要求用户的输入能够及时获得返回,有较低的延时。如果开启了Nagle算法,就很可能出现频繁的延时,导致用户体验极差。当然,你也可以选择在应用层进行buffer,比如使用java中的buffered stream,尽可能地将大包写入到内核的写缓存进行发送;vectored I/O(writev接口)也是个不错的选择。
    对于关闭TCP_NODELAY,则是应用了Nagle算法。数据只有在写缓存中累积到一定量之后,才会被发送出去,这样明显提高了网络利用率(实际传输数据payload与协议头的比例大大提高)。但是这又不可避免地增加了延时;与TCP delayed ack这个特性结合,这个问题会更加显著,延时基本在40ms左右。当然这个问题只有在连续进行两次写操作的时候,才会暴露出来。
    连续进行多次对小数据包的写操作,然后进行读操作,本身就不是一个好的网络编程模式;在应用层就应该进行优化。

复制缓冲区大小,只有在slave连接之后才分配内存

repl-backlog-size 1mb

多少时间master没有slave连接,就清空backlog缓冲区

repl-backlog-ttl 3600

当master不可用,Sentinel会根据slave的优先据选举一个master。最低的优先级的slave,当选master。而配置成0,永远不会被选举。

replica-priority 100

设置redis连接密码

requirepass foobared

重命名一些高危命令

rename-command

最大连接客户端

maxclients 10000

最大内存,单位为bytes字节,8G内存的计算方式8(G)*1024(MB)*1024(KB)*1024(Kbyte),需要注意的是salve的输出缓冲区是不计算在maxmemory内

maxmemory 8G

是否开启AOF日志记录,默认redis使用的是rdb方式持久化,这种方式在许多应用中已经足够使用了。但是redis如果中途宕机,会导致可能有几分钟的数据丢失,根据save策略进行持久化。
Append Only File是另一种持久化方式,可以提供更好的持久化特性,Redis会把每次写入的数据在接收后都写入appendonly.aof文件,每次启动时Redis都会先把这个文件读入内存里,先忽略RDB文件。

appendonly no

AOF文件名

appendfilename "appendonly.aof"	 

aof持久化策略的配置

  • no表示不执行fsync,由操作系统保证数据同步到磁盘
  • always表示每次写入都执行fsync,以保证数据同步到磁盘
  • everysec表示每秒执行一次fsync,可能会导致丢失这1s数据
appendfsync everysec

在aof rewrite期间,是否对aof新纪录的append暂缓使用文件同步策略,主要考虑磁盘IO开支和请求阻塞时间。

  • 默认为no,表示 不暂缓,新的aof记录仍然会被立即同步,Linux的默认fsync策略是30秒
  • 如果为yes,可能丢失30秒数据,但由于yes性能较好而且会避免出现阻塞因此比较推荐
no-appendfsync-on-rewrite no

当Aof log增长超过指定百分比例时,重写log file,设置为0表示不自动重写Aof日志,重写是为了使aof体积保持最小,而确保保存最完整的数据

auto-aof-rewrite-percentage

触发aof rewrite的最小文件大小

auto-aof-rewrite-min-size 64mb

是否加载由于其他原因导致的末尾异常的AOF文件(主进程被kill/断电等)

aof-load-truncated yes

redis 4.0 新增RDB-AOF混合持久化格式,在开启了这个功能之后,AOF重写产生的文件将同时包含RDB格式的内容和AOF格式的内容。

  • 其中RDB格式的内容用于记录已有的数据,而AOF格式的内容则用于记录最近发生了变化的数据,这样Redis就可以同时兼有RDB持久化和AOF持久化的优点。既能够快速地生成重写文件,也能够在出现问题时,快速地载入数据
aof-use-rdb-preamble yes

lua脚本的最大执行时间,单位为毫秒

lua-time-limit 5000

是否开启集群模式,默认是单机模式

cluster-enabled yes

由node节点自动生成的集群配置文件

cluster-config-file nodes-6379.conf

集群中node节点连接超时时间

cluster-node-timeout 15000

在执行故障转移的时候可能有些节点和master断开一段时间数据比较旧,这些节点就不适合用于选举为master,超过这个时间的就不会被进行故障转移

cluster-replica-validity-factor 10

一个主节点拥有的至少正常工作的从节点,即如果主节点的slave节点故障后会将多余的从节点分配到当前主节点成为其新的从节点。

cluster-migration-barrier 1

集群槽位覆盖,如果一个主库宕机且没有备库就会出现集群槽位不全,那么yes情况下redis集群槽位验证不全就不再对外提供服务,而no则可以继续使用但是会出现查询数据查不到的情况(因为有数据丢失)。

cluster-require-full-converage no
  • Slow log 是Redis用来记录查询执行时间的日志系统,slow log保存在内存里面,读写速度非常快,因此你可以放心的使用他,不必担心因为开启slow log 而损害Redis的速度。

以微妙为单位的慢日志记录,为负数会禁用慢日志,为0会记录每个命令操作。

slowlog-log-slower-than 10000

记录多少条慢日志保存在队列,超出后会删除最早的,依次滚动删除

slowlog-max-len 128

slow log 相关命令

slowlog len
slowlog get
slowlog reset
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值