redis事务
1.将事务涉及到key注册为观察模式
2.执行只读操作
3.根据只读结果组装写操作命令并发送到服务端入队
4.发送批量执行命令exec
如果在执行期间key被修改过,则执行失败,否则成功。事务可以理解为一个打包的批量执行脚本,但批量指令并非原子化的操作,中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。
基于全量的持久化既在持久化触发的时刻,将当时的状态(所有db的key-value)完全保存下来,形成一个snapshot,AOF增量持久化保存的时状态的每一次变更,当初始状态给定,经过相同的变更之后,最终的状态也是确定的
SAVE单线程串行化执行,把redis当前状态写入磁盘作为快照保存
BGSAVE首先fork一个子线程,写入磁盘快照的状态来源于子进程fork时的redis数据状态,因此父进程一旦完成fork,后续执行的客户端命令对数据状态产生的变更将不会反应在本次快照文件中
BGSAVE相比于SAVE的优势是持久化期间可以持续提供数据读写服务,但需要保证空闲内存足够
Always:主循环每个迭代触发fsync方法,会降低redis吞吐量,拥有最高的容错能力
every second:每秒异步地触发fsync
No:不显示调用fsync,由操作系统决定什么时候落地磁盘,因此容错能力不可控
网友评论