SpringBoot整合redisson分布式锁
1、为什么要使用分布式锁 在分布式场景下为了保证数据最终一致性。在单进程的系统中,存在多个线程可以同时改变某个变量(可变共享变量)时,就需要对变量或代码块做同步(lock—synchronized),使其在修改这种变量时能够线性执行消除并发修改变量。但分布式系统是多部署、多进程的,开发语言提供的并发处理API在此场景下就无能为力了。 2.分布式锁的使用场景 电商网站用下单操作时需要使用,秒杀活动更是如此,否则会出现超卖(库存100,秒杀活动时库存变负数了 3、分布式锁的实现方式 大概有三种:1.基于关系型数据库,2.基于缓存,3基于zookeeper 大部分网站使用的是基于缓存的,有更好的性能,而缓存一般是以集群方式部署,保证了高可用性 总体来说,支持redis单实例、redis哨兵、redis cluster、redis master-slave等各种部署架构,都可以给你完美实现。 4.基于缓存redis,使用开源 redisson 实现分布式锁 5、关于redisson 锁的几点说明, 1、通过阅读redission锁的API可以得知,其获取锁释放锁的使用和JDK里面的lock很相似,底层的实现采用了类似lock的处理方式 2、redisson 依赖redis,因此使用redisson 锁需要服务端安装redis,而且redisson 支持单机和集群两种模式下的锁的实现 3