关于持久化的一点疑问

2022-01-03 20:08:58 +08:00
 yezheyu

在很多软件中都会有持久化策略,像 redis ,rabbitmq 等。

其过程大多都是把内存中数据保存到内存中一块缓存中,顺便记录一份日志,缓存定期或定量的被另一个持久化线程写入到磁盘,期间机器宕机,再根据日志文件恢复数据。

对于这个过程,我有点疑问,写日志时保存也是在磁盘对吧,那干嘛多此一举把数据先放到内存的缓存,再放到磁盘,直接像日志那样直接保存到磁盘不行吗?

3361 次点击
所在节点    程序员
23 条回复
githubhaoliu
2022-01-04 11:09:43 +08:00
首先,并不是所有磁盘写入都比内存慢,磁盘顺序写的性能非常高,并且反直觉的比内存都快[1]。


关于 Redis 为什么要放到内存缓存,那是因为 Redis 本来就是内存操作呀,查、写操作都是在内存。如果直接写到日志后怎么查出来数据呢?
githubhaoliu
2022-01-04 11:09:57 +08:00
johopig
2022-01-04 12:17:20 +08:00
因为日志是顺序写,数据是随机的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/825944

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX