redis为nosql数据库服务器,数据存储在内存里,如果没有持久化,进程结束,则数据丢失。 

 redis 拥有两种数据持久化方式。

《一》RDB方式,如果配置文件中配置完成,1>当数据更改满足配置的条件时会自动持久化数据。2>也可使用save和bgsave手动触发数据持久化。save会阻塞当前进程,redis不接受客户端的执行指令。bgsave命令redis会异步进行快照操作,从而快照的同时可接收客户端请求。lastsave命令可以查看最后一次快照时间。执行flush all 命令清空redis也会执行快照。

RDB 方式缺点:1>快照持久化是对所有数据做快照,随着数据量增加,这种方式也越耗时。2>redis间隔性快照,可能会丢失一部分数据,因此对数据精度要求不高时才使用这种方式。3>数据的备份文件可在多台服务器上备份。避免丢失。

 配置文件 redis.conf的

################################ SNAPSHOTTING(快照)################################
## save 是指定执行rdb储存的条件, save time numer
# 下面的语句既是 15分钟保存了一次,执行rdb持久化
# 如果5分钟内有10个key的内容被修改,那么执行rdb持久化一次
# 如果一分钟内容redis更改了10000次数据,也会执行一次rdb持久化

## 如果要禁用RDB,不配置任何save或者写一个save "" 空字符串即可
save 900 1
save 300 10
save 60 10000

# 该配置默认是yes,见名思意即是在bgsave过程中如果出现了问题,
# 那么就会中断,后面的数据也就不再持久化了
stop-writes-on-bgsave-error no

# 当导出到 .rdb 数据库时是否用LZF压缩字符串对象。
# 默认设置为 "yes",所以几乎总是生效的。
# 如果你想节省CPU的话你可以把这个设置为 "no",但是如果你有可压缩的key的话,那数据文件就会更大了。
rdbcompression yes

# 对rdb数据进行校验,耗费CPU资源,默认为yes
rdbchecksum yes

# 数据文件的名字,可自定义
dbfilename dump.rdb

# 数据文件存储的地方,默认是 ./  代表会在启动redis的当前路径下执行持久化并存放dump.rdb文件
dir ./

《二》AOF持久化方式。redis.conf配置文件中的修改为yes即开启AOF方式。

AOF缺点,1>aof是把对redis操作的每一步命令记录下来,所以文件会比较大。2>速度低于rdb,并且恢复速度慢。 

appendfilename "appendonly.aof"    备份文件名
appendfsync everysec   设置为每秒备份一次

 三种保存方式:

AOF_FSYNC_NO :不保存。   停机后丢失操作系统最后一次对aof文件触发save操作之后的数据。
AOF_FSYNC_EVERYSEC :每一秒钟保存一次。丢失一般不超过2秒钟的数据。
AOF_FSYNC_ALWAYS :每执行一个命令保存一次。停机后最多丢失一个命令的数据。

除了每秒保存一次的save不阻塞进程外,其他几个的write和save都会阻塞进程。