redis并发竞争问题及解决方案
Posted 一勺兔子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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并发竞争问题及解决方案的主要内容,如果未能解决你的问题,请参考以下文章
12.redis 的并发竞争问题是什么?如何解决这个问题?了解 redis 事务的 CAS 方案吗?