基于redis的分布式锁实现方法、装置、电子设备和存储介质与流程

文档序号:37282200发布日期:2024-03-12 21:22阅读:19来源:国知局
基于redis的分布式锁实现方法、装置、电子设备和存储介质与流程

本发明涉及分布式领域,尤其涉及一种基于redis的分布式锁实现方法、装置、电子设备和存储介质。


背景技术:

1、物联网服务应用分布式部署,分布式场景中的数据一致性问题一直是一个比较重要的话题。

2、目前分布式锁的方式为在数据库中创建数据库表,核心字段是lockkey,对lockkey字段添加唯一索引,加锁时往数据库表中插入一条lockkey数据,由于有唯一索引的限制,如果操作成功则表示加锁成功,如果操作失败,则表示加锁失败。加锁成功后直接删除数据库表中的lockkey数据即可。但是由于加锁时是往数据库表中插入数据,数据无法自动失效,一旦解锁操作失败,就会导致锁记录一直在数据库中,其他线程无法再获得到锁,此外,目前的加锁过程是无序的,可能会出现多线程加锁混乱,使得数据不一致。


技术实现思路

1、本发明提供了一种基于redis的分布式锁实现方法、装置、电子设备和存储介质,以解决目前对线程进行加锁的过程是无序的问题,实现多线程按照顺序进行加锁。

2、根据本发明的一方面,提供了一种基于redis的分布式锁实现方法,该方法包括:

3、获取当前线程的锁的属性信息,所述属性信息包括目标标识码和目标时间戳,所述当前线程为当前请求执行加锁操作的线程,所述时间戳是线程请求执行加锁操作的开始时间,所述标识码是线程请求执行加锁操作的唯一标识信息;

4、确定所述当前线程执行加锁操作所对应的排队信息,并基于所述排队信息和所述属性信息确定是否对所述当前线程进行加锁操作,所述排队信息用于描述多个线程请求执行加锁操作的执行顺序,所述排队信息包括候选标识码,所述候选标识码为对线程进行加锁时不同锁的标识码。

5、根据本发明的另一方面,提供了一种基于redis的分布式锁实现装置,该装置包括:

6、信息获取模块,用于获取当前线程的锁的属性信息,所述属性信息包括目标标识码和目标时间戳,所述当前线程为当前请求执行加锁操作的线程,所述时间戳是线程请求执行加锁操作的开始时间,所述标识码是线程请求执行加锁操作的唯一标识信息;

7、判断模块,用于确定所述当前线程执行加锁操作所对应的排队信息,并基于所述排队信息和所述属性信息确定是否对所述当前线程进行加锁操作,所述排队信息用于描述多个线程请求执行加锁操作的执行顺序,所述排队信息包括候选标识码,所述候选标识码为对线程进行加锁时不同锁的标识码。

8、根据本发明的另一方面,提供了一种电子设备,所述电子设备包括:

9、至少一个处理器;以及

10、与所述至少一个处理器通信连接的存储器;其中,

11、所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例所述的基于redis的分布式锁实现方法。

12、根据本发明的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本发明任一实施例所述的基于redis的分布式锁实现方法。

13、本发明实施例的技术方案,通过获取当前线程的锁的属性信息,属性信息包括目标标识码和目标时间戳,当前线程为当前请求执行加锁操作的线程,时间戳是线程请求执行加锁操作的开始时间,标识码是线程请求执行加锁操作的唯一标识信息;进一步确定当前线程执行加锁操作所对应的排队信息,并基于排队信息和属性信息确定是否对当前线程进行加锁操作,排队信息用于描述多个线程请求执行加锁操作的执行顺序,排队信息包括候选标识码,候选标识码为对线程进行加锁时不同锁的标识码。本申请解决了目前对线程进行加锁的过程是无序的问题,实现了多线程按照顺序进行加锁。

14、应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。



技术特征:

1.一种基于redis的分布式锁实现方法,其特征在于,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,基于所述排队信息和所述属性信息确定是否对所述当前线程进行加锁操作,包括:

3.根据权利要求2所述的方法,其特征在于,确定所述目标标识码是否存在于所述排队信息中,包括:

4.根据权利要求2所述的方法,其特征在于,确定所述目标标识码是否存在于所述排队信息中,包括:

5.根据权利要求2所述的方法,其特征在于,对所述当前线程执行加锁操作,包括:

6.根据权利要求3或5所述的方法,其特征在于,根据所述目标时间戳确定所述当前线程的等待时长,包括:

7.根据权利要求1所述的方法,其特征在于,所述方法还包括:

8.一种基于redis的分布式锁实现装置,其特征在于,所述装置包括:

9.一种电子设备,其特征在于,所述电子设备包括:

10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现权利要求1-7中任一项所述的基于redis的分布式锁实现方法。


技术总结
本发明公开了一种基于redis的分布式锁实现方法、装置、电子设备和存储介质。该方法包括:获取当前线程的锁的属性信息,属性信息包括目标标识码和目标时间戳,当前线程为当前请求执行加锁操作的线程,时间戳是线程请求执行加锁操作的开始时间,标识码是线程请求执行加锁操作的唯一标识信息;确定当前线程执行加锁操作所对应的排队信息,并基于排队信息和属性信息确定是否对当前线程进行加锁操作,排队信息用于描述多个线程请求执行加锁操作的执行顺序,排队信息包括候选标识码,候选标识码为对线程进行加锁时不同锁的标识码。本申请解决了目前对线程进行加锁的过程是无序的问题,实现了多线程按照顺序进行加锁。

技术研发人员:袁岸草,程媛媛,刘波,郭文鹏,徐超,王丽君
受保护的技术使用者:软通智慧科技有限公司
技术研发日:
技术公布日:2024/3/11
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1