缓存使用,前台直接操作mysql,后台操作缓存。怎么保证数据一致性

发布于 2021-11-27 22:42:39 字数 510 浏览 823 评论 5

因项目需要主要模块:

    broker(消息服务器)+web(管理员页面)+。。。。

    只有一个mysql数据库,web前台可以直接操作数据库,broker基本全是缓存操作。为了保证数据的一致性,在web前台修改数据库后都需要给broker发消息,让broker去刷新缓存。这么做开发很麻烦。但是没有好的方法解决。

    有同事说使用第三方缓存,直接与数据库交互保持数据的一致性,避免了每一次web操作数据库都得通知给broker。以前用过第三方缓存,但是只是用到它们的恢复特性,当断电后能够自动恢复缓存功能,没有见过直接同步数据库的。

    即使能够直接与数据库进行同步,我所了解的数据库同步机制,是直接读数据库的log文件,其实这样做并不能完全保证数据库和缓存数据的一致性。  

    求好的解决方案。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

看透却不说透 2021-12-01 19:23:22

读取binlog是一种方案,我们已经得出方案了,避免不了,因为前台操作后台也需要做出了数据更新以外的其他操作。完全解耦前台和后台是不容易实现的。

旧伤慢歌 2021-12-01 19:21:39

有个读binlog的开源工具,读binlog,发mq。

输什么也不输骨气 2021-12-01 19:15:45

这种第三方缓存,不能够解决实际业务逻辑处理,虽然可以保持数据一致,其实他们的同步机制,也是文件监听实现的,监听binlog,也就是也不能做到前台处理和后台同步。后台不只是更新数据,还有其它逻辑处理。如果第三方缓存具有事件处理机制就好了,当数据更新后能够通知后台,并触发后台相关逻辑处理。

倚栏听风 2021-12-01 19:08:55

同样得得需要web通知。。。有没有一种方式,面向数据库透明的缓存,就和hibernate缓存似的。数据一致性通过数据库和缓存直接通信。这样就避免了web多余的操作。

落墨 2021-12-01 02:28:31

可以使用MQ,当前台操作数据库后立即通知MQ由MQ去更新缓存 [4]

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文