redis分布式锁

分布式锁是控制分布式系统间同步访问共享资源的一种方式,其可以保证共享资源在并发场景下的数据一致性

分布式锁的工作原理:
当有多个线程要访问某一共享资源(DBMS中的数据或Redis中的数据,或共享文件等)时,为了达到协调多个线程的同步访问,此时就需要使用分布式锁。为了达到同步访问的目的,规定让这些线程在访问共享资源之前先要获取到一个令牌token,只有具有令牌的线程才可访问共享资源,这个令牌就是通过各种技术实现的分布式锁,而这个分布式锁是一种“互斥资源”,即只有一个,只要有线程抢到了锁,那么其他线程只能等待,直到锁被释放或等待超时。

场景:某电商平台要对某商品(例如商品 sk:008)进行秒杀销售。假设参与秒杀的商品数量amount为1000台,每个账户只允许抢购一台,即每个请求只会减少一台库存

Redisson可重入锁
原理
使用Redisson的可重入锁可以解决上述问题
Redisson内部使用Lua脚本实现了对可重入锁的添加,重入,续约,释放。Redisson需要用户为锁指定一个key,但无需为锁指定过期时间,因为他有默认过期时间(当然,也可以指定)。由于该锁具有 可重入 功能,所以Redisson会为该锁生成一个计数器,记录线程重入锁的次数

你可能感兴趣的:(redis,分布式,数据库)