码迷,mamicode.com
首页 > 其他好文 > 详细

为什么Redis可以方便地实现分布式锁

时间:2021-06-02 19:07:23      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:com   body   分布式   业务   pos   分布式锁   col   不用   sts   

 

1、Redis为单进程单线程模式,采用队列模式将并发访问变成串行访问,且多客户端对Redis的连接并不存在竞争关系。

2、Redis的SETNX命令可以方便的实现分布式锁。

setNX(SET if Not eXists)

语法:SETNX key value

返回值:设置成功,返回 1 ;设置失败,返回 0 。(http://www.amjmh.com/v/)

当且仅当 key 不存在时将 key 的值设为 value,并返回1;若给定的 key 已经存在,则 SETNX 不做任何动作,并返回0。

综上所述,可以通过setnx的返回值来判断是否获取到锁,并且不用担心并发访问的问题,因为Redis是单线程的,所以如果返回1则获取到锁,返回0则没获取到。当业务操作执行完后,一定要释放锁,释放锁的逻辑很简单,就是把之前设置的key删除掉即可,这样下次又可以通过setnx该key获取到锁了。

为什么Redis可以方便地实现分布式锁

标签:com   body   分布式   业务   pos   分布式锁   col   不用   sts   

原文地址:https://www.cnblogs.com/lixiaochong/p/14832882.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!