Redis实现分布式锁,看这篇文章就稳了

397 阅读1分钟

读了关于redis实现分布式锁的文章,大体的方案

我们在系统中修改已有数据时,需要先读取,然后进行修改保存,此时很容易遇到并发问题。由于修改和保存不是原子操作,在并发场景下,部分对数据的操作可能会丢失。在单服务器系统我们常用本地锁来避免并发带来的问题,然而,当服务采用集群方式部署时,本地锁无法在多个服务器之间生效,这时候保证数据的一致性就需要分布式锁来实现。

而Redis实现分布式锁是我们一种比较好的解决方案。

  1. SpringBoot+aop+redis自定义注解
  2. SpringBoot+Integration+redis实现分布式锁
  3. SpringBoot+redission实现分布式锁

方案一springboot+aop+redis自定义注解

SpringBoot 自定义注解+AOP+Redis 实现分布式锁

Spring Boot一个注解,轻松实现 Redis 分布式锁

优点:自定义程度高 缺点:上锁和解锁非原子性,需要考虑续锁

方案二 springboot+Integration+redis实现分布式锁

通过SpringBoot更优雅的实现分布式锁(Spring Integration)

关于 spring-integration-redis 是个不完善的 redis 分布式锁这件事

优点:上锁使用lua脚本保证了原子性 缺点:解锁非原子性,会造成问题,没有续锁

方案三 springboot+redission实现分布式锁

springboot整合redisson实战(二)Redisson分布式锁的使用

springboot 集成redission 以及分布式锁的使用详解

优点:支持单机集群,上锁和解锁都是原子性和看门狗延续锁

推荐使用方案三

小米分享的一篇文章

分布式锁的实现之 redis 篇