?
redis支持RDB和AOF两种持久化方式。
redis.conf中可配置RDB持久化文件和AOF持久化文件的位置和文件名。
# 持久化文件位置
dir ./
# 快照文件名
dbfilename dump.rdb
# AOF文件名
appendfilename appendonly.aof
RDB通过快照完成持久化,发生快照的条件如下:
redis启动后会读取RDB文件。
redis允许同时开启RDB和AOF,redis重启后会使用AOF文件恢复数据,因为AOF方式可能丢失的数据更少。
?
默认的redis.conf中有如下配置
#?每900秒有一个或一个以上的键被更改则进行快照,多个save之间是或的关系
save 900 1?
save 300 10
save 60 10000
自动快照是异步的,并不会阻塞客户端请求。
?
save命令是同步操作,阻塞所有客户端请求,生产上避免使用。
bgsave后台异步执行,响应客户端请求,执行bgsave会立即返回OK,想知道快照是否完成可以通过lastsave命令查看最后一次快照时间。
?
执行flushall时,只要自动快照条件不为空,无论是够满足自动快照条件,都会进行一次快照。
?
在执行fork函数时操作系统(类Unix系统)会使用写时复制(copy-on-write)策略,即fork函数发生的一刻父子进程共享同一内存数据,当父进程要更改其中某片数据时(如执行一个命令),操作系统会将该片数据复制一份以保证子进程的数据不受影响,因此新的RDB文件存储的是执行fork函数一刻的内存数据。
?
AOF会将redis执行的每一条写命令追加到磁盘文件中。
默认情况下redis没有开启AOF,可通过如下配置开启。
appendonly yes
AOF文件中保存的就是redis通信协议的内容。
比如我执行一条set age 10命令,则AOF文件内容如下。
*3
$3
set
$3
age
$2
10
?
比如执行了两条命令set age 10和set age 12,其实AOF只用保存第二条命令就行了,因为第二条命令会覆盖第一条命令。
如果冗余命令过多,会导致AOF文件过大而内存数据并没有多少,针对这种情况每达到一定条件(见如下配置)时redis会对AOF文件进行重写。
# 当前AOF文件大小超过上一次重写的AOF文件大小的百分之多少时就重写
auto-aof-rewrite-percentage 100
# 允许重写的最小AOF文件大小
auto-aof-rewrite-min-size 64mb
也可以执行bgrewriteaof命令手动重写。
即使BGREWRITEAOF执行失败,也不会有任何数据丢失,因为旧的AOF文件在BGREWRITEAOF 成功之前不会被修改。
AOF重写过程:
?
AOF持久化会将命令记录在AOF文件中,但由于操作系统的缓存限制,数据并没有真正写入磁盘,而是进行了系统的磁盘缓存,默认情况下系统每30秒进行一次同步,如果这30秒期间系统异常退出则会导致数据丢失。
可通过如下配置设置同步时机。
# 总是同步
appendfsync always
# 每秒同步一次(默认)
appendfsync everysec
# 由操作系统决定(30秒)
appendfsync no
?
现有如下操作
set age 10
expire age 60
save
ttl age? --50
shutdown nosave
--过10秒
./redis-server
ttl age --显示40 or 50?
正确答案是10,说明expire记录的是一个时间戳,即使redis服务停止了,停止期间这10秒的时间仍然是有效的
?
?
Epoll 是个很老的知识点,是后端工程师的经典必修课。这种知识具备的特点就是研...
戳蓝字“ CSDN云计算 ”关注我们哦 作者 | 刘丹 出品 | CSDN云计算IDCSDNcloud ...
堆 Heap Heap:可以迅速找到一堆数中的 最大 或者 最小 值的数据结构。 将根节点...
20210323第一家量产国产化蓝牙AOA高精度定位基站生态合能培训会上海站现场直播下...
这里尊托云数小编参考了几篇文章特为大家整理下,用到的朋友多支持一下了。 进行...
项目背景 最近项目里有个webpack版本较老的项目,由于升级和换框架暂时不被leade...
WebService端代码 复制代码 代码如下: /// summary /// 上传文件到远程服务器 //...
IViewLocationExpander API ExpandViewLocations Razor视图路径,视图引擎会搜索...
详解Spring mvc ant path的使用方法 概要: 任何一个WEB都需要解决URL与请求处理...
1.现在复习的感觉就是:马上要有一大波僵尸涌过来,但老子连向日葵都还没种! 2...