1.快照
快照是一次全量备份,顾名思义可以理解为拍照一样,把整个内存数据映射到硬盘中,保存一份到硬盘,因此恢复数据起来比较快,把数据映射回去即可,不像AOF,一条条的执行操作命令。
1.1.快照流程
1.2.快照优点
1.3.快照缺点
2.AOF 日志
AOF 日志存储的是 Redis 服务器的顺序指令序列,AOF 日志只记录对内存进行修改的指令记录。
它的出现是为了弥补RDB的不足(数据的不一致性),所以它采用日志的形式来记录每个写操作,并追加到文件中。Redis 重启的会根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。
2.1.AOF配置文件
打开 redis.conf 文件,找到 APPEND ONLY MODE 对应内容
# redis 默认关闭,开启需要手动把no改为yes
appendonly yes
# 指定本地数据库文件名,默认值为 appendonly.aof
appendfilename "appendonly.aof"
# 指定更新日志条件
# appendfsync always
appendfsync everysec
# appendfsync no
2.2.AOF优缺点
优点:数据的完整性和一致性更高 缺点:因为AOF记录的内容多,文件会越来越大,数据恢复也会越来越慢。
3.总结
02redis管道
什么是管道??
Redis 管道 (Pipeline) 本身并不是 Redis 服务器直接提供的技术,这个技术本质上是由客户端提供的,跟服务器没有什么直接的关系。
管道(Pipeline)就是为了改善这个情况的,利用管道,客户端可以一次性发送多个请求而不用等待服务器的响应,待所有命令都发送完后再一次性读取服务的响应,这样可以极大的降低RTT时间从而提升性能。需要注意到是用pipeline方式打包命令发送,redis必须在处理完所有命令前先缓存起所有命令的处理结果。打包的命令越多,缓存消耗内存也越多。所以并不是打包的命令越多越好。
管道使用场景
适用一些命令之间没有相互依赖的,命令数量比较多的场景,可以像批处理一样对其进行处理。
管道总结
打包的redis的管道可以将多个命令打包,一次性的发送给服务器端处理,当命令之间不存在依赖关系时,相比于一条命令一次请求的普通操作方式,管道的操作几乎是对使用者透明的。
和redis的事务类似,redis管道能完成的操作也能够被更加灵活的redis脚本实现,但是脚本的可读性不强、可维护性差。个人认为,如果批量处理的命令之间不存在依赖关系时,优先使用管道;反之,则只能使用脚本了。