则conf文件必须是redis-server的首先个参数,3) 复制是全自动的

主从复制使用slaveof将Redis实例作为另一个Redis服务器的副本。

#redis配置文件详解,针对2.6.3–2.6.7

http://www.jianshu.com/p/41f393f594e8
  redis-server
运行时,可以平素在指令行中指定参数,也得以在配备文件中写入参数。若是是使用了conf文件,则conf文件必须是redis-server的首先个参数。如:

1)
Redis复制是异步的,master可以配备成若是它连接的slave没有达到给定的数据,就终止接受写入。
2)
即使断线较少的岁月,slave可以实施部分增量复制。必要配备合理的复制积压缓冲区大小来狠命选取增量复制。
3) 复制是全自动的,断线之后slave自动重连master。

# Note on units: when memory size is needed, it is possible to
specify
# it in the usual form of 1k 5GB 4M and so forth:
#
# 1k => 1000 bytes
# 1kb => 1024 bytes
# 1m => 1000000 bytes
# 1mb => 1024*1024 bytes
# 1g => 1000000000 bytes
# 1gb => 1024*1024*1024 bytes
#
# units are case insensitive so 1GB 1Gb 1gB are all the same.

./redis-server /usr/local/redis/redis.conf

slave配置:
slaveof <masterip> <masterport>

#
Redis默许是不作为守护进程来运行的。你可以把这些设置为”yes”让它当做医护进程来运转。
# 注意,当作为医护进度的时候,Redis会把经过ID写到 /var/run/redis.pid
daemonize yes

一、网络参数

master可以安装密码:
masterauth <master-password>

# 当以守护进度格局运行的时候,Redis会把经过ID默许写到
/var/run/redis.pid。你可以在此处修改路径。
pidfile /var/run/redis.pid

bind

点名监听接口。redis默许监听所有可用接口。使用bind,可以监听指定的一个或两个接口,如:

bind 192.168.1.100 10.0.0.1
或者
bind 127.0.0.1

当slave失去与master的连接,或者正在复制时:
1)
如若slave-serve-stale-data被设置为’yes’(默许),则slave将会如故回复客户端的哀求,可能是老式的数据,或者数据集可能只是空的,如果那是第三次联合。
2)
如若slave-serve-stale-data设置为’no’,则slave将还原”正在联合”的不当,除了INFO和SLAVEOF命令。
slave-serve-stale-data yes

# 接受连接的特定端口,默许是6379。
# 假若端口设置为0,Redis就不会监听TCP套接字
port 6379

protected-mod

珍视方式是一层安全珍爱层,以幸免Redis实例在internet上开拓,被访问并且被拔取。
  敬重格局开启后,如若没有使用“bind”指令明确绑定到一组地方以及redis
server没有配备密码。服务端只接受来自回环口127.0.0.1 和 Unix
域套接字的连年

珍视默许默许开启:

protected-mode yes

slave可以配备为可写,这对于仓储一些短命数据很有用,为什么是短跑?因为与master同步后,数据会被删去,所以不提议那样做。Redis
2.6的话slave默许是只读的。
小心:slave只读不意味可以任由暴光,因为它可以执行config、debug等揭穿服务器音讯的授命,当然你可以对那一个命令进行重命名,但诸如此类做总是不太保证
slave-read-only yes

# 假如端口设置为0,Redis就不会监听TCP套接字
port 6379

port

指定端口,默许6379。倘使值为0,则不在TCP Scoket上监听

port 6379

异步复制策略:磁盘复制和无盘复制

#
如果你想的话,你可以绑定单一接口;即使那里没单独设置,那么富有接口的连日都会被监听。
#
# bind 127.0.0.1

tcp-backlog

** TCP listen() backlog**

TCP socket 服务付出的4个步骤
socket->bind->listen->accept。调用listen函数时,有一个backlog参数.

int listen(int sockfd, int backlog);

在Linux中backlog表示已到位(ESTABLISHED)且未accept的系列大小。

每秒高产出的条件中,为了防止客户端连接慢的问题,必要一个较高的backlog
的值。注意,Linux 内核 默许将其截断为 /proc/sys/net/core/somaxconn
的值,确保增进somaxconn和tcp_max_syn_backlog的值以得到所需的效益。

只顾:无盘复制近期地处试验阶段

slave第两遍一连或者再度连接master的时候,无法促成增量复制,而是全量复制,master会发送rdb给slave,有以下两种艺术:
1)
磁盘复制:master创造一个子进程将rdb文件写入磁盘,然后由父进度传输给slave
2) 无盘复制:master不写磁盘,而是创立一个子经过平素通过socket发送rdb文件

利用磁盘复制,当执行bgsave生成好了rdb文件但还没起来发送的时候,其余排队等候的slave也得以获得这几个rdb文件而不必等待重新生成
假若是无盘备份,一旦传输开始,其余slave排队等待传输停止
运用无盘复制时,可安插多久(秒)有微微slave才起来传输,当磁盘比较慢而网络带宽比较大的时候,无盘复制是个科学的抉择
repl-diskless-sync no

一旦打开无盘复制,可以配备合理的延时来等待其余slave,因为只要开首传输,前面回复的复制请求就要排队等待,默许5秒,设置为0则不等待
repl-diskless-sync-delay 5

slave会每隔repl-ping-slave-period(默许10秒)ping一遍master,若是当先repl-timeout(默认60秒)都尚未吸收响应,就会认为master挂了
repl-ping-slave-period 10
repl-timeout 60

咱俩得以决定在宗旨同步时是或不是禁用TCP_NODELAY。如果是yes,那么master会使用更少的TCP包和更少的带宽来向slave传输数据。
不过那恐怕会追加一些手拉手的推移,大约会高达40阿秒左右。如若是no,那么数量同步的延迟时间会下落,但是会消耗越来越多的带宽。
repl-disable-tcp-nodelay no

缓冲积压队列,redis会把多年来的通令放到队列里,供slave举行增量复制,设置得越大越有空子完成增量复制而非全量复制
repl-backlog-size 1mb

跨越来越多长期没有slave请求复制,缓冲积压队列将被放飞
repl-backlog-ttl 3600

当master挂了,Redis
Sentinel通过slave-priority来控制哪些slave接管成为master,最小的最优先,0代表永远不接管
slave-priority 100

布局master在M秒内有N个slave连接才可写,可以把内部一个值设置成0来关闭此成效,比如说10秒内有3台slave连接master才可写
min-slaves-to-write 3
min-slaves-max-lag 10

master通过info获取slave的ip地址和端口,当使用了端口转载或NAT的时候,需求陈设IP地址映射
slave-announce-ip 5.5.5.5
slave-announce-port 1234

#
指定用来监听连接的unxi套接字的路子。这一个没有默许值,所以只要您不指定的话,Redis就不会通过unix套接字
# unixsocket /tmp/redis.sock
# unixsocketperm 755

unixsocket

指定Unix Socket路径。没有默许值,由此并未点名时,Redis不会在Unix
Socket上监听

unixsocket /tmp/redis.sock
unixsocketperm 700    #socket文件权限

#一个客户端空闲多少秒后关门连接。(0代表禁用,永不停歇)
timeout 0

timeout

客户端空闲N秒后则关闭连接(0 代表禁用)

timeout <Num>

默认值:

timeout 0

# 设置服务器调试阶段。
# debug (很多音信,对开发/测试有用)
# verbose (很多简短的有用新闻,可是不像debug等级那么多)
# notice (适量的信息,基本上是您生产条件中须要的水平)

tcp-keepalive

TCP keepalive。如若非零,使用SO_KEEPALIVE在缺席的状态下向客户端发送TCP
ACK。有三个便宜:

  1. 检测 死亡的peer
  2. 从中间的网络设施的角度来看,保持两次三番存活

默许值(以秒为单位):

tcp-keepalive 300

# warning (唯有很要紧/严重的信息会记录下来)

二、一般参数

loglevel notice

include

饱含其余布署文件。

include /path/to/other.conf

#
指明日志文件名。也可以使用”stdout”来强制让Redis把日记新闻写到标准输出上。
#
注意:假设Redis以守护进度方式运行,而你设置日志突显到正式输出的话,那么日志会发送到
/dev/null
logfile stdout
# 要采取系统日志记录器很粗略,只要设置 “syslog-enabled” 为 “yes”
就足以了。
# 然后基于需求安装任何部分syslog参数就可以了。
# syslog-enabled no

daemonize

默认值:

daemonize no

是或不是作为后台进度启动。默许值为no不开启,即使须求敞开则设置为yes。一般为yes。

# 指明syslog身份
# syslog-ident redis

supervised

supervised no

# 指明syslog的配备。必须是一个用户仍然是 LOCAL0 ~ LOCAL7 之一。
# syslog-facility local0

pidfile

作为后台进程启动时,将经过pid
写入文件。当redis作为后台进度启动时,倘诺没有了然指定pid file,则默许为
“/var/run/redis.pid”

默许指定值:

pidfile /var/run/redis_6379.pid

#设置数据库个数。默许数据库是 DB 0,你可以透过SELECT <dbid> WHERE
dbid(0~’databases’ – 1)来为每个链接拔取服务器
databases 16

loglevel notice

日记等级

################################ 快照
########################
                                                             
# 把数据库存到磁盘上:                                                 
                                                   
#  save <seconds> <changes>                               
 
#                                                             
#  会在指定秒数和数据变动次数之后把数据库写到磁盘上。       
#                                                             
#  上边的例证将会进展把数量写入磁盘的操作:                   
#  900秒(15分钟)之后,且至少1次变更                       
#  300秒(5分钟)之后,且至少10次变更                       
#  60秒之后,且至少10000次变更                               
#                                                             
#  注意:你要想不写磁盘的话就把装有 “save” 设置注释掉就行了。

logfile

日记文件路径

logfile "/var/log/redis.log"

#save 900 1
save 300 30
#save 60 10000

databases

安装数据库的number。默许数据库是 DB 0,可以选拔接纳SELECT
<dbid>在各种连接的底蕴上选择差别的 dbid是0和’数据库’-1之间的数字

#后台存储错误为止写。
stop-writes-on-bgsave-error yes

三、持久化

snapshotting,快照、持久化。即将DB保存到磁盘上。开启持久化使用save命令

# 当导出到 .rdb 数据库时是否用LZF压缩字符串对象。 
# 默许设置为 “yes”,所以差不离连接生效的。                               
                         
# 假诺您想节约CPU的话你可以把那一个装置为
“no”,然而一旦您有可缩短的key的话,那数据文件就会更大了。
rdbcompression yes

save

save <seconds> <changes>

借使指定时间(秒为单位)内指定的写操作次数暴发将会保留DB

默认值:

save 900 1 #表示900秒内少1个key有变动
save 300 10 #表示300秒内至少10个key有变动
save 60 10000 #表示60秒内至少10000个key有变动

假使不要求启用持久化,则将”save”指令注释即可,或者用如下方式写:

save ""

# Since verison 5 of RDB a CRC64 checksum is placed at the end of the
file.
# This makes the format more resistant to corruption but there is a
performance
# hit to pay (around 10%) when saving and loading RDB files, so you can
disable it
# for maximum performances.
#
#积存和加载rdb文件时校验。
rdbchecksum yes

stop-writes-on-bgsave-error

默许情形下,如若启用了RDB快照,Redis将适可而止接受写入(至少一个保存点)并且最新的后台保存将失利。那将使得用户发现到多少不会不错的持久存在于磁盘上,否则有可能没有人会小心到有的,灾害就会生出。
  如若后台的save进程再一次伊始工作,Redis会再度自动允许写入。可是,如若您设置了对Redis服务器的科学监视和持久性,您或许需求禁用此成效,以便Redis固然有磁盘问题、权限等等仍然照常工作

默认:

stop-writes-on-bgsave-error yes

# 数据库的文本名
dbfilename dump.rdb

rdbcompression

转储 .rdb 文件时是否使用LZF进行压缩,默许值为yes。

默认值:

rdbcompression yes

借使在保存子节点时需求节约CPU,将其安装为”no”,可是假诺有可减掉的值或者键,则数据集将越来越大。

#  工作目录
# 数据库会写到这几个目录下,文件名就是上边的 “dbfilename” 的值。
# 累加文(Gavin)件也放那里。
# 注意你这里指定的总得是目录,不是文本名。
dir ./

rdbchecksum

当加载和仓储RDB文件时开展校验。这使格式更能提升数据安全,不过会损耗一定性能(大致10%),尽管急需取得最大性能,则可以禁止此选项。

默认值:

rdbchecksum yes

################################# 同步
#################################
#
# 主从一块。通过 slaveof 配置来兑现Redis实例的备份。
#
注意,那里是本地从远端复制数据。也就是说,本地可以有分裂的数据库文件、绑定区其余IP、监听分裂的端口。
#
# slaveof <masterip> <masterport>
 
# 借使master设置了密码(通过下边的 “requirepass”
选项来安顿),那么slave在早先同步此前必须进行身份验证,否则它的一道请求会被驳回。
#
# masterauth <master-password>
 
#
当一个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 命令。

dbfilename

指定rdb文件名

slave-serve-stale-data yes

dir

rdb文件存放路径

 #如果为yes,slave实例只读,借使为no,slave实例可读可写。
slave-read-only yes

持久化示例

save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename "dump6379.rdb"
dir "/usr/local/redis-3.2.9/data"

# slave按照指定的岁月间隔向服务器发送ping请求。
# 时间间隔可以由此 repl_ping_slave_period 来设置。
# 默认10秒。
#
# repl-ping-slave-period 10
 
# 上边的选项设置了大块数据I/O、向master请求数据和ping响应的超时时间。
# 默认值60秒。
#
# 一个很要紧的事情是:确保这几个值比 repl-ping-slave-period
大,否则master和slave之间的传输过期时间比预想的要短。
# repl-timeout 60

四、复制

敞开复制利用的是 slaveof 命令。只在从机上才使用slaveof举行配置。

 #若果master不可以再正常办事,那么会在七个slave中,采纳优先值最小的一个slave进步为master,优先值为0表示不能擢升为master。
slave-priority 100

slaveof

slaveof <masterIP> <masterPort>

Redis
的详尽介绍
请点那里
Redis
的下载地址
请点这里

masterauth

如果master使用了 requirepass 指令,则client 连接
master时须要运用密码。在主从复制中,使用 masterauth
来开展求证,前边接的就是三番五回master 时须要的密码。

masterauth master_password

引进阅读:

slave-serve-stale-data

当从机与主机断开连接时,或者当复制仍在举办时,从机可以采用二种差其余法门:
1)如若slave-serve-stale-data设置为“yes”(默许),则slave依旧会回复client请求,
就算数据或者会冒出逾期或者一旦那是率先次联袂,数据集可能为空。
2)借使slave-serve-stale-data设置为“no”,则从机将復苏错误“SYNC with
master in progress”到所有种类的指令,除了 INFO和SLAVEOF 命令。

默认值:

slave-serve-stale-data yes

Redis集群明细文档
http://www.linuxidc.com/Linux/2013-09/90118.htm

slave-read-only

布署slave是或不是只读。

默认值:

slave-read-only yes

正如是一个布置了slave 只读的实例,这种场馆下插入数据就会有不当提示。

[root@slave2 src]# /usr/local/redis-3.2.9/src/redis-cli -h 172.16.7.192 
172.16.7.192:6379> append test 'test'
(error) READONLY You can't write against a read only slave.

Ubuntu
12.10下安装Redis(图文详解)+ Jedis连接Redis
http://www.linuxidc.com/Linux/2013-06/85816.htm

repl-diskless-sync

复制同步策略: disk 或者 soket
瞩目: 磁盘复制还在试验阶段
  新的slave
和重新连接的slave无法继续复制进度,只是接受差距。要求做的就是”full
synchronization”,一个RDB 文件从master上传输到slave,
以此传输通过三种区其他方法暴发:
1) Disk-backed:redis master 成立一个新的进度将RDB 文件写入磁盘,
随之,那个文件被父进程按增量的格局传输到slave上。
2) Diskless; redis master 创制了一个进度从来将写RDB
文件传给slave的socke,中间经过不必要接触到磁盘

采取diskless复制时,开端传输以前会等待一段时间(该时间以秒为单文,可布置),希望几个slave主机到达同时传输可以并行化。

应用慢磁盘和快捷(大带宽)网络,无盘复制更好的做事。

默认值

repl-diskless-sync no 

默认使用磁盘方式

Redis体系-安装配置维护篇
http://www.linuxidc.com/Linux/2012-12/75627.htm

repl-diskless-sync-delay

如若接纳磁盘同步格局拉开,可以配备同步延迟时间,以等待master暴发子进度经过socket传输RDB数据给slave。默许值为5秒,设置为0秒则每趟传输无延迟。

默认值

repl-diskless-sync-delay 5

CentOS 6.3安装Redis
http://www.linuxidc.com/Linux/2012-12/75314.htm

repl-ping-slave-period

slave根据预订义时间距离给master 发送
PINGs。通过repl-ping-slave-period 能够变动这么些时刻距离。默许值为10s

# repl-ping-slave-period 10

Redis配置文件redis.conf 详解
http://www.linuxidc.com/Linux/2013-11/92524.htm

repl-timeout

三种景况认为复制超时:
1)slave角度,倘若在repl-timeout时间内尚未接到master SYNC传输的rdb
snapshot数据.
2)slave角度,在repl-timeout没有收取master发送的数据包或者ping。
3)master角度,在repl-timeout时间尚无吸收REPCONF ACK确认音信。
  当redis检测到repl-timeout超时(默认值60s),将会倒闭主从之间的连日,redis
slave发起重新确立基本连接的伸手。对于内存数据集相比较大的系统,可以增大repl-timeout参数。确保那几个值超出指定的repl-ping-slave-period,否则在主旨间流量不高时老是都会检测到过期。

# repl-timeout 60

图片 1

repl-disable-tcp-nodelay

是或不是在slave套接字发送SYNC之后禁用
TCP_NODELAY。即使选择yes,Redis将动用更少的TCP包和带宽来向slaves发送数据。不过那将使数据传输到slave上有延迟,Linux内核的默许配置会达到40微秒。
如果选用no,数据传输到salve的延期将会降价扣但要使用更多的带宽。默许大家会为低顺延做优化,但高流量情况或主旨之间的跳数过多时,可以安装为“yes”。

默认值

repl-disable-tcp-nodelay no

repl-backlog-size

安装数据备份的backlog大小。backlog是一个slave在一段时间内断开连接时记录salve数据的缓冲,所以一个slave在再一次连接时,不要求全量的联合,而是一个增量同步就够用了,将在断开连接的那段时光内把slave丢失的部分数据传送给它。同步的backlog越大,slave可以举行增量同步并且同意断开连接的年月就越长。backlog只分红三回并且至少要求一个slave连接。

默认值

# repl-backlog-size 1mb

repl-backlog-ttl

当master在一段时间内不再与其他slave连接,backlog将会自由。以下选项配置了从末了一个slave断开起来计时多少秒后,backlog缓冲将会释放。0意味着毫不释放backlog

默认值

# repl-backlog-ttl 3600
  • 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。默许优先级为100。

默认值

slave-priority 100

min-slaves-to-write <N>

min-slaves-max-lag <M>

如果总是到master的
slave少于N个,延时小于等于M秒,master就足以告一段落拔取写操作。N个slave需如果“oneline”状态,延时是以秒为单位,并且必须低于等于指定值,是从最后一个从slave接收到的ping(平时每秒发送)开端计数。该选项不保障N个slave正确同步写操作,然则限制数量丢失的窗口期。
例如至少必要3个延时小于等于10秒的slave用上边的下令:

默认值

# min-slaves-to-write 3
# min-slaves-max-lag 10

那两个选项的情致是
只有当连接到master的slave数为3,且master与slave的延时小于等于10秒,master才会接受写。

三头之一设置为0将禁用那些成效。默许 min-slaves-to-write
值是0(该意义禁用)并且 min-slaves-max-lag 值是10。

slave-announce-ip

slave-announce-port

五、安全

  • requirepass

安装客户端认证密码,即客户端连接时要求正确的密码才行。

requirepass passwordhahah

小心:因为redis处理的快慢分外快,因而密码复杂度必须求高,否则极简单爆破

  • rename-command

命令重命名。此举是为了安全性。

如将CONFIG命令设置成万分复杂的字符串:

rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52

在意:命令重命名将会记录到AOF文件(持久化相关,后续会涉及)中依然是将其传输到slaave中而招致局地问题。

六、限制

maxclients

功能:设置同一时间client的连接数,默许值为10000,不过一旦Redis服务器错误可以配置进程文件限制以允许指定的限制将允许的客户端的最大数目设置为眼前文件限制减32(因为Redis保留了一部分里面选拔的公文讲述符)。
一旦达标限制,Redis将关门所有新连接并发送一个谬误’max number of clients
reached’。

# maxclients 10000

maxmemory

安装可以应用的最大内存(单位字节)。当Redis使用内存超越限制值后,Redis将因此回收策略尝试移除key。(查看maxmemory-policy)
  如若redis根据回收策略不可能移除key,或者政策设置为了
‘noeviction’,对于将会动用越来越多内存的命令,Redis
会起第四回来错误,比如SET
、LPUSH等等操作;然则会延续响应只读命令的央求,比如GET
  当使用Redis作为LRU缓存或为实例设置硬盘内存限制(使用’noeviction’策略)时,此选项经常很有用。
  警告:当有七个slave连上达到内存上限时,master为同步slave的输出缓冲区所需内存不计算在拔取内存中。这样当移除key时,就不会因网络问题
/
重新联合事件触发移除key的轮回,反过来slaves的输出缓冲区充满了key被移除的DEL命令,这将触发删除越来越多的key,直到那么些数据库完全被清空停止。
  由此可见,倘若您须求增大多少个slave,指出你设置一个稍小maxmemory限制,这样系统就会有空余的内存作为slave的输出缓存区(但是假设最大内存策略设置为”noeviction”的话就没要求了)

  • 默认值

# maxmemory <bytes>

maxmemory-policy

最大内存策略:要是达到内存限制了,Redis如何选取删除key。

volatile-lru -> 依照LRU算法删除设置过期时间的key
allkeys-lru -> 根据LRU算法删除任何key
volatile-random -> 随机移除设置过过期时间的key
allkeys-random -> 随机移除任何key
volatile-ttl -> 移除即将过期的key(minor TTL)
noeviction -> 不移除任何key,只回去一个写错误
  注意:对所有策略来说,要是Redis找不到适当的可以去除的key都会在写操作时重临一个荒谬。如今甘休涉及的吩咐:set
setnx setex append incr decr rpush lpush rpushx lpushx linsert lset
rpoplpush sadd sinter sinterstore sunion sunionstore sdiff sdiffstore
zadd zincrby zunionstore zinterstore hset hsetnx hmset hincrby incrby
decrby getset mset msetnx exec sort

  • 默认值

# maxmemory-policy noeviction

maxmemory-samples

LRU和纤维TTL算法的兑现都不是很准确,可是很相近(为了外省存),所以您可以用样本量做检测。
例如:默许Redis会检查3个key然后取最旧的卓殊,你可以经过上面的配备指令来安装样本的个数。

默许值为5,数字越大结果越规范不过会损耗更加多CPU。

  • 默认值

# maxmemory-samples 5

七、APPEND ONLY MODE

Redis 持久化方式有二种,RDB和AOF。默许使用RDB
  Redis默许使用异步转储磁盘上的数额,那种格局在大部分应用程序中得以很好地劳作,可是当redis进度或者电源
中断后,可能会促成几分钟的写入数据丢失(具体取决于 save point)
  Append Only
File(AOF)提供了提供了持久性更强的格局,如接纳默许数据fsync策略(参见前边的配备),
在遇见像服务器断电或单写情况下Redis自身进程出题目但操作系统仍健康运行等突发事件时,Redis可能只丢失1秒的数目。
  AOF和RDB可以而且使用,假使AOF也打开了,Redis将加载AOF,因为AOF文件提供了更好的持久性有限支撑。

appendonly

是或不是打开AOF,AOF 默许关闭。

  • 默认值

appendonly no

appendfilename

AOF 文件名

  • 默认值

appendfilename "appendonly.aof"

appendfilename 只接文件名,而不应该是全路线,AOF文件会默许在设置主目录。

appendfsync

fsync()
系统调用告诉操作系统把数量写到磁盘上,而不是等愈多的多少进入输出缓冲区。有些操作系统会真正把数据及时刷到磁盘上;有些则会赶紧去尝尝那样做。

Redis协理二种差距的格局:
no:不要马上刷,唯有在操作系统须要刷的时候再刷。比较快。
always:每便写操作都即刻写入到aof文件。慢,不过最安全。
everysec:每秒写一回。折中方案。
默认的everysec普普通通来说能在速度和数码安全性之间赢得比较好的平衡。

  • 默认值

appendfsync everysec

no-appendfsync-on-rewrite

要是AOF的一头策略设置成 “always” 或者
“everysec”,并且后台的蕴藏进程(后台存储或写入AOF
日志)会时有暴发许多磁盘I/O花费。某些Linux的布署下会使Redis因为
fsync()系统调用而围堵很久。
小心,方今对那些情状还尚未两全改正,甚至分歧线程的 fsync()
会阻塞大家一并的write(2)调用。
为驾驭决那几个题材,可以用上边这一个选项。它可以在 BGSAVE 或BGREWRITEAOF
处理时挡住fsync()。那就代表若是有子进度在进展封存操作,那么Redis就处在”不可同步”的景观。那实质上是说,在最差的图景下可能会甩掉30分钟的日志数据。(默许Linux设定)
一经把这一个设置成”yes”带来了延期问题,就保持”no”,那是保存持久数据的最安全的章程。

  • 默认值

no-appendfsync-on-rewrite no

机动重写AOF文件

倘诺AOF日志文件增大到指定百分比,Redis能够由此 BGREWRITEAOF
自动重写AOF日志文件。
行事原理:Redis记住上次重写时AOF文件的高低(若是重启后还尚未写操作,就平素用启动时的AOF大小)
其一原则大小和脚下高低做比较。倘使当前大小当先指定比例,就会触发重写操作。你还索要指定被重写日记的小小尺寸,那样幸免了高达指定百分比但尺寸如故很小的情状还要重写。
点名百分比为0会禁用AOF自动重写特性。

  • 默认值

auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

aof-load-truncated

万一设置为yes,倘若一个因不胜被截断的AOF文件被redis启动时加载进内存,redis将会发送日志文告用户。要是设置为no,erdis将会拒绝启动。此时必要用”redis-check-aof”工具修复文件。

  • 默认值

aof-load-truncated yes

相关文章