首页 > 其他 > 详细

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

时间:2020-02-28 22:37:31      阅读:69      评论:0      收藏:0      [点我收藏+]

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并发竞争问题及解决方案

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!