05_redis的并发竞争问题及解决方案
2020-02-22 21:58:44 20 举报
redis的并发竞争问题及解决方案
作者其他创作
大纲/内容
系统B
期望:set test_key v1 -> v2 -> v3 -> v4实际:set test_key v1 -> v3 -> v4 -> v2
说明:并发竞争是指在某个时刻多个服务都要去更新同一个key。
1、set test_key v4
系统A
系统A实例1
1、set test_key v3
4、set test_key v4
redis并发竞争问题
缓存
5、set test_key v3
zookepeer
期望:set test_key v1 -> v2 -> v3 -> v4
set test_key v1
2、set test_key v2
1、set test_key v2
系统A实例3
系统C
说明:写入缓存的数据都是从mysql查询出来的,都得写入mysql中,写入mysql中最必须保存一个时间戳。从mysql查询出来的时候,时间戳也查询出来,v1 10:00:00v2 10:00:01v3 10:00:02v4 10:00:03
1、获取分布式锁
实际:set test_key v1 10:00:00 -> v2 10:00:01 -> v4 10:00:03 ->v3 10:00:02(此时v3不能设置,因为时间比v4的时间要早,因为旧数据覆盖了新数据)
解决核心思想:使用分布式锁,确保同一时间只有一个系统实例在操作某个key,其它的都不能进行读和写。每次写缓存之前,先判断一下当前这个value的时间戳是否比缓存里的时间戳更新,如果更新那就可写如果更旧就不能用旧的数据覆盖新的数据。
redis并发竞争问题解决方案
3、获取分布式锁
系统A实例2
0 条评论
下一页