Redis分布式锁——悲观锁实现,以秒杀系统为例
Redis分布式锁——悲观锁实现,以秒杀系统为例 分布式锁 Redis命令介绍 代码实现 AbstractLock基类 实现类 上面使用到的Redis工具类 测试 输出结果 分布式锁 分布式锁是一种用来安全访问分布式机器上变量的安全方案,一般用在全局id生成、秒杀系统、全局变量共享、分布式事务等。一般会有两种实现方案,一种是悲观锁的实现,一种是乐观锁的实现。悲观锁的并发性能差,但是能保证发生脏数据的可能性小一点。 Redis命令介绍 使用Redis实现分布式锁,有两个重要函数需要介绍: SETNX命令 ( SET if N ot e X ists) 语法: SETNX key value 功能: 当前仅当key不存在,将key的值设为value,并返回1;若给定的key已经存在,则SETNX不做任何动作,并返回0。 GETSET命令 (这是一个原子命令!) 语法: GETSET key value 功能: 将给定key的值设为value,并返回key的旧值(old value);当key存在但不是字符串类型时,返回一个错误;当key不存在时,返回nil。 GET命令 语法: GET key 功能: 返回key所关联的字符串值,如果key不存在那么返回特殊值nil,如果key 储存的值不是字符串类型,返回一个错误。 DEL命令 语法: DEL key [key…] 功能: