[发明专利]一种分布式锁在审
申请号: | 202110642984.3 | 申请日: | 2021-06-09 |
公开(公告)号: | CN113312185A | 公开(公告)日: | 2021-08-27 |
发明(设计)人: | 宋喆;张建伟;江燕 | 申请(专利权)人: | 浪潮云信息技术股份公司 |
主分类号: | G06F9/52 | 分类号: | G06F9/52 |
代理公司: | 济南信达专利事务所有限公司 37100 | 代理人: | 姜鹏 |
地址: | 250100 山东省济南市高*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 分布式 | ||
1.一种分布式锁,其特征在于,基于Redis的自身特性以及命令,设置key值及过期时间,利用分布式锁加锁、释放锁和释放锁前置检查过程,用于保证进程访问共享资源的完整性和一致性。
2.根据权利要求1所述的一种分布式锁,其特征在于,在分布式锁加锁中,Redis的setnx命令适合作为排他性的锁实现,该命令只有在相应key值不存在的情况下才会通过该命令设置value成功,否则返回失败结果。
3.根据权利要求2所述的一种分布式锁,其特征在于,当一个进程需要独占某个共享资源时,需要通过setnx命令设置value,当其余进程再执行该命令时,则设置value失败即为获得锁失败。
4.根据权利要求3所述的一种分布式锁,其特征在于,所述加锁的流程为:
加锁时通过命令设置key值及过期时间,若命令执行成功,则说明获得锁成功,若命令执行失败,则获取已存在锁的过期时间与当前系统时间进行比较,若过期时间小于当前系统时间,说明锁已过期,则可以由该进程重新获得,使用getset命令设置新的过期时间;若过期时间大于当前系统时间,说明锁未过期,则无法获得。
5.根据权利要求1所述的一种分布式锁,其特征在于,在释放锁中,当一个进程完成对某个共享资源的独占使用后,可以执行delete命令删除此前获得锁过程中所设置的键值对;此后其余进程需要对该共享资源的进行独占访问时,即可通过setnx命令获得锁。
6.根据权利要求5所述的一种分布式锁,其特征在于,所述释放锁的流程为:
释放锁时首先验证已存在锁的特征值,判断是否为当前进程所设置,若验证失败,则不可进行释放锁操作;若验证成功,则获取该锁的过期时间,与当前系统时间进行比较,若过期时间小于当前系统时间,说明锁已过期,无需进行操作,若过期时间大于当前系统时间,则执行delete命令,进行释放锁操作。
7.根据权利要求6所述的一种分布式锁,其特征在于,释放锁前置检查,当一个进程还没有结束对共享资源的独占访问,锁会当达到超时时间而释放掉,当另外进程获得锁后,则当一个进程结束对资源的访问后,则会错误执行释放锁操作。
8.根据权利要求7所述的一种分布式锁,其特征在于,当进程进行释放锁操作时,通过get命令获得value,验证此value是否为该进程设置的identifier,若验证通过,则可进行delete操作。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浪潮云信息技术股份公司,未经浪潮云信息技术股份公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110642984.3/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种气体绝缘变压器
- 下一篇:一种磁性椭偏测量装置