1
justthewayyouare 2023-10-21 11:50:35 +08:00 via iPhone
不用 redis 就行了。
|
2
calmzhu 2023-10-21 11:53:52 +08:00
加个监控啊,挂了恢复前清下缓存。
|
3
crysislinux 2023-10-21 12:34:53 +08:00 via Android
集群挂了还说啥,站点就 down 呗。用 Redis 集群的站 Redis 挂了基本也没法儿提供服务了
|
4
devopsdogdog 2023-10-21 18:49:29 +08:00 via Android
好好想想缓存是不是这样用,你都写 mysql 了,redis 不写就好了,只靠读的时候缓存一下。
缓存数据一般不用于这种需要强一致性的。 |
5
HuLiY 2023-10-21 19:26:22 +08:00
双写方案,写操作-先写数据库再删缓存,读操作-有缓存就读缓存[并设置一个合适的过期时间],无缓存就读数据库后重建缓存
👆就可以了。 过期时间最好是随机的,避免缓存雪崩。 这种方案一般用于一致性要求低的场景。 |
6
HuLiY 2023-10-21 19:27:24 +08:00
-----------上一条写错了----------------
双写方案,写操作-先写数据库再删缓存,读操作-有缓存就读缓存,无缓存就读数据库后重建缓存[并设置一个合适的过期时间] 👆就可以了。 过期时间最好是随机的,避免缓存雪崩。 这种方案一般用于一致性要求低的场景。 |
7
EarthChild 2023-10-21 20:11:45 +08:00
那就做个标识啊,redis 读/写不成就做个标识,等读出来了,这个标识为 true ,就清空 redis 缓存,每次读/写 redis 前都判断一下这个标识都行了。
|
8
kuituosi 2023-10-22 09:33:37 +08:00
严格来说就没有方法保证一致性,不管是双写还是集群。
对一致性要求高就不要缓存,普通的情况把过期时间设置足够短就可以 |
9
julyclyde 2023-10-22 13:10:11 +08:00
再恢复的时候它应该是空白的,然后逐渐被双读操作给填充出来
而不是持有死之前那一份数据 |
10
hangszhang 2023-10-22 14:56:22 +08:00
试试 binlog 同步到 redis 的方案
|
11
9c04C5dO01Sw5DNL 2023-10-22 16:21:02 +08:00
这种场景可以在恢复后先清空缓存,清空后再给应用使用
|