每一次操作之前都会记录日志,防止中断造成数据丢失。操作如下:A 记录日志B redis 计数+1C 清除日志1、如果执行完A中断,启动之后检查日志,可以再次执行操作B,数据不丢失。2、如果执行完b就中断,那么日志恢复之后就会多执行一次b,数据虽然不丢失,但是造成重复数据。题目原本是断电,后来可能都围绕断电回答了,其实断电概率还是挺小的,主要是应用执行的时候突然被用户终止运行,或者程序崩溃等等造成的数据丢失。看评论还有人抬扛的。实际上,很多数据库都有类似的机制防止突然中止造成数据丢失。。1、比如 leveldb :log文件在LevelDb中的主要作用是系统故障恢复时,能够保证不会丢失数据。因为在将记录写入内存的Memtable之前,会先写入Log文件,这样即使系统发生故障,Memtable中的数据没有来得及Dump到磁盘的SSTable文件,LevelDB也可以根据log文件恢复内存的Memtable数据结构内容,不会造成系统丢失数据,在这点上LevelDb和Bigtable是一致的。相关文章:https://www.cnblogs.com/haipp...2、还有elasticsearch:如果没有用 fsync 把数据从文件系统缓存刷(flush)到硬盘,我们不能保证数据在断电甚至是程序正常退出之后依然存在。为了保证 Elasticsearch 的可靠性,需要确保数据变化被持久化到磁盘。相关文章:https://www.elastic.co/guide/...3、还有rabbitmq的防止丢消息和重复消费:相关文章:https://www.jianshu.com/p/5ad...
- 3 回答
- 0 关注
- 666 浏览
添加回答
举报
0/150
提交
取消