

















这是一个创建于 948 天前的主题,其中的信息可能已经有所发展或是发生改变。
Redis 服务挂了,一段时间后又恢复,如果这段时间能内,有修改数据库的操作,不会造成缓存与数据库不一致吗?
如果是 Redis 主从集群,能避免这种情况吗?集群全挂了呢?
注:目前解决缓存与数据库一致所使用的方案,是双写方案,写操作-先写数据库再删缓存,读操作-有缓存就读缓存,无缓存就读数据库后重建缓存
但这种方案的问题是,缓存服务挂了后,在写操作时无法删掉过期缓存,最后等缓存服务恢复,读操作读到的就是过期数据
请老哥们指点一下,
难道因为缓存服务挂掉,就拒绝一切写操作吗?
2 calmzhu 2023 年 10 月 21 日加个监控啊,挂了恢复前清下缓存。 |
3 crysislinux 2023 年 10 月 21 日 via Android集群挂了还说啥,站点就 down 呗。用 Redis 集群的站 Redis 挂了基本也没法儿提供服务了 |
4 devopsdogdog 2023 年 10 月 21 日 via Android好好想想缓存是不是这样用,你都写 mysql 了,redis 不写就好了,只靠读的时候缓存一下。 缓存数据一般不用于这种需要强一致性的。 |
5 HuLiY 2023 年 10 月 21 日双写方案,写操作-先写数据库再删缓存,读操作-有缓存就读缓存[并设置一个合适的过期时间],无缓存就读数据库后重建缓存 |
6 HuLiY 2023 年 10 月 21 日-----------上一条写错了---------------- |
7 EarthChild 2023 年 10 月 21 日那就做个标识啊,redis 读/写不成就做个标识,等读出来了,这个标识为 true ,就清空 redis 缓存,每次读/写 redis 前都判断一下这个标识都行了。 |
8 kuituosi 2023 年 10 月 22 日严格来说就没有方法保证一致性,不管是双写还是集群。 |
9 julyclyde 2023 年 10 月 22 日再恢复的时候它应该是空白的,然后逐渐被双读操作给填充出来 |
10 hangszhang 2023 年 10 月 22 日试试 binlog 同步到 redis 的方案 |
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。