Redis并发竞争问题

  • Post author:
  • Post category:其他




Redis 的并发竞争问题



并发竞争

线上非常常见的一个问题,就是多客户端同时并发写入一个key,可能本来应该先到的数据后到了,导致数据版本错了,或者是多客户端同时获取一个key,修改值之后再写回去,只要顺序错了,数据就错了

而且Redis自己就有天然解决这个问题的CAS类的乐观锁方案



解决办法



Redis 的CAS 乐观锁

这个是Redis 自带的分布式锁的机制,但是再生产环境中并不常用



基于Zookeeper实现分布式锁的方案

基于Zookeeper来解决Redis的并发竞争问题

  1. 对当前Redis中的数据进行属性分割,提前预估到涉及到并发竞争的数据模型
  2. 针对这些数据模型设计不同的解决方案
  3. 当业务端要修改涉及到并发竞争问题的key的情况下,需要先通过zookeeper来获取分布式锁
  4. 获取到分布式锁之后,需要获取当前key对应的值,并且这类的数据模型需要再redis中保存数据产生的时间点
  5. 再更新数据时,需要先对数据的时间点进行判断,如果原数据的时间点大于当前数据的时间点,则停止更新并释放锁
  6. 如果当前数据的时间点大于原数据的时间点,则开始更新,并释放锁

    通过上述流程,即可解决Redis的并发竞争问题



版权声明:本文为weixin_69824074原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。