一种对节点加锁的方法和Redis服务器技术

技术编号:37875007 阅读:45 留言:0更新日期:2023-06-15 21:03
本申请公开了一种对节点加锁的方法和Redis服务器,该方法包括以下步骤:Redis服务器预加载lua脚本,所述lua脚本用于对与目标节点相关的多个节点进行一次性加锁操作;所述Redis服务器使用单个lua解释器运行包括所述lua脚本在内的所有脚本,并通过调用所述lua脚本对所述目标节点加写锁。本申请实施例通过预加载并调用lua脚本实现对多个节点地一次性加锁操作,能够提升加锁效率,减少调用次数和网络请求,从而提升系统处理能力。从而提升系统处理能力。从而提升系统处理能力。

【技术实现步骤摘要】
一种对节点加锁的方法和Redis服务器


[0001]本申请属于计算机
,具体涉及一种对节点加锁的方法和Redis服务器。

技术介绍

[0002]在大规模分布式文件系统中,一般采用目录树对接用户的文件系统。目录树是文件系统元数据的树形组织方式,例如/user1/a/b,/user1/c,/user1/d/e这三个文件和目录的路径就形成了一个目录树。用户对文件的查询,添加,删除,移动,重命名等操作就是对应目录树的操作。在并发系统的处理时,需要对目录树加锁,以保证操作的正确性和数据的一致性。
[0003]现有技术中,通常对整颗目录树加读写锁保护,代码实现逻辑简单,但性能很差,锁冲突概率大,会造成锁等待时间过长,性能有限。
[0004]申请内容
[0005]本申请实施例的目的是提供一种对节点加锁的方法和Redis服务器,以解决现有的加锁方法性能较差的缺陷。
[0006]为了解决上述技术问题,本申请是这样实现的:
[0007]第一方面,提供了一种对节点加锁的方法,包括以下步骤:
[0008]Redis本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种对节点加锁的方法,其特征在于,包括以下步骤:Redis服务器预加载lua脚本,所述lua脚本用于对与目标节点相关的多个节点进行一次性加锁操作;所述Redis服务器使用单个lua解释器运行包括所述lua脚本在内的所有脚本,并通过调用所述lua脚本对所述目标节点加写锁。2.根据权利要求1所述的方法,其特征在于,所述通过调用所述lua脚本对所述目标节点加写锁,具体包括:通过调用所述lua脚本对所述目标节点的父节点和根节点加读锁,对所述目标节点加写锁。3.根据权利要求2所述的方法,其特征在于,所述通过调用所述lua脚本对所述目标节点的父节点和根节点加读锁,对所述目标节点加写锁,具体包括:检查所述目标节点的父节点和根节点是否可以加读锁,以及检查所述目标节点是否可以加写锁;如果所述目标节点的父节点和根节点都可以加读锁,且所述目标节点可以加写锁,则先对所述根节点加读锁,再对所述目标节点的父节点加读锁,再对所述目标节点加写锁,并返回加锁成功;否则,返回锁冲突,加锁失败。4.根据权利要求3所述的方法,其特征在于,所述lua脚本还用于对与目标节点相关的多个节点进行一次性解锁操作;所述通过调用所述lua脚本对所述目标节点加写锁之后,还包括:通过调用所述lua脚本对所述目标节点释放写锁。5.根据权利要求4所述的方法,其特征在于,所述通过调用所述lua脚本对所述目标节点释放写锁,具体包括:通过调用所述lua脚本对所述目标节点的父...

【专利技术属性】
技术研发人员:张杰郭立庆
申请(专利权)人:北京易华录信息技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1