码迷,mamicode.com
首页 > 其他好文 > 详细

redis并发竞争问题及解决方案

时间:2020-02-28 23:05:34      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:操作   分布   消息   zookeeper   情况下   focus   缓存   load   高并发   

redis并发竞争问题及解决方案

为什么会出现竞争问题?

多客户端同时并发写一个key,一个key的值是1,本来按顺序修改为2,3,4,最后是4,但是顺序变成了4,3,2,最后变成了2。

如何解决?

第一种方案:分布式锁+时间戳

分布式锁可以使用redis自身的分布式锁,也可以使用zookeeper,但是一般使用后者,

由于上面举的例子,要求key的操作需要顺序执行,所以需要保存一个时间戳判断set顺序。

系统A key 1 {ValueA 7:00}
系统B key 1 { ValueB 7:05}

 

假设系统B先抢到锁,将key1设置为{ValueB 7:05}。接下来系统A抢到锁,发现自己的key1的时间戳早于缓存中的时间戳(7:00<7:05),那就不做set操作了

第二种方案:利用消息队列

在并发量过大的情况下,可以通过消息中间件进行处理,把并行读写进行串行化。

把Redis.set操作放在队列中使其串行化,必须的一个一个执行。

这种方式在一些高并发的场景中算是一种通用的解决方案。

redis并发竞争问题及解决方案

标签:操作   分布   消息   zookeeper   情况下   focus   缓存   load   高并发   

原文地址:https://www.cnblogs.com/kt-ting/p/12380452.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!