您当前的位置: 首页 >  redis

java持续实践

暂无认证

  • 2浏览

    0关注

    746博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Redis实现分布式锁原理

java持续实践 发布时间:2020-09-20 14:53:59 ,浏览量:2

Redis 实现分布式锁实际上是通过setnx 命令, 如果有该key值, 则设置失败, 没有该key, 设置成功. 但是由于setnx 命令没有过期时间的, 需要额外对key设置过期时间, 但是这个是两步操作, 不能保证其原子性.

如下的图中, 就是保证了原子性, 并且能够达到与setnx一致的效果. set key value 传入ex是秒, px 是毫秒 NX 是键不存在时 ,才能设置, 否则返回nil, XX 是键存在时, 才能进行操作, 否则返回nil 例如如下 使用 set key value EX seconds NX 语句 只有thread0 这个key不存在时 ,才会操作成功, 返回ok , 并且可以使用ttl 查看过期时间. 设置的过期时间为100s , 在未过期时, 对其设置, 返回nil

此时这个key可以是某个资源(例如某个商品id ), 当某个线程获得了这个资源的时候, 其他线程想要获得这把锁, 返回的都是nil , 只有这个线程释放了这个key 的时候, 其他线程才能获得此资源. 如下是使用 set key value EX value XX的用法, 当其key存在时, 才能对其设置值, 否则返回nil .

关注
打赏
1658054974
查看更多评论
立即登录/注册

微信扫码登录

0.0447s