Redis 数据何时持久化到 MySQL 里面呢?

2017-05-14 21:26:42 +08:00
 hujianxin

各位前辈,我请教一个 Redis 问题。

使用 Redis 实现了网站评论的赞踩,排行榜功能。请问,这些热数据,在什么时机从数据库里面读入,什么时机持久化到数据库中呢?

这个问题有最佳实践不?

感谢!

7501 次点击
所在节点    程序员
22 条回复
crazyneo
2017-05-15 17:00:30 +08:00
@vus520 本来踩一脚就完了,你这话说的我不得不踩两脚—— redis 的复制实际是基于 rdb 的,你这个说法会让别人以为 aof 可以做数据复制,进而损失复制过程中缓存的数据,即使是拿 aof 做数据迁移,也要评估停机时间对业务的影响。
此外,对于排行榜类功能,确实就不需要到 mysql 层,这牵涉到一个设计问题,就是 redis 本身是作为读热点存在的,他不应该主动往 mysql 这种持久化存储层去写数据,而应该只有读,你要做排行榜之类应该是业务上异步双写,而不是让 redis 主动往 mysql 去写——在 redis 内写单个操作是原子化的,到 mysql 你还得做个事务保证同步万一不成功还要考虑回滚?尤其是你要从 redis 往 mysql 写很可能还是个长事务,一执行好几分钟,到时候骂娘的可不仅仅是运维。
vus520
2017-05-15 19:00:09 +08:00
@crazyneo

1,我只说基于 aof 和 monitor,可以实现 binlog 的效果,基于 binlog 可以实现多种异步复制,方案各异
2,很多业务都是先入 redis,再入 mysql,你让 redis 做队列的业务怎么做?
3,redis 数据结构已经很丰富了,当成唯一的数据库也不是抗不起来

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

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

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

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

© 2021 V2EX