读了关于redis实现分布式锁的文章,大体的方案
我们在系统中修改已有数据时,需要先读取,然后进行修改保存,此时很容易遇到并发问题。由于修改和保存不是原子操作,在并发场景下,部分对数据的操作可能会丢失。在单服务器系统我们常用本地锁来避免并发带来的问题,然而,当服务采用集群方式部署时,本地锁无法在多个服务器之间生效,这时候保证数据的一致性就需要分布式锁来实现。
而Redis实现分布式锁是我们一种比较好的解决方案。
- SpringBoot+aop+redis自定义注解
- SpringBoot+Integration+redis实现分布式锁
- 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 以及分布式锁的使用详解
优点:支持单机集群,上锁和解锁都是原子性和看门狗延续锁
推荐使用方案三
小米分享的一篇文章