System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于中间件,特别涉及一种基于redis异步删除大key的非阻塞删除方法及其实现系统。
技术介绍
1、redis作为一款广泛应用于互联网行业的开源内存数据库,在数据管理方面发挥着重要作用。然而,redis中存在一种潜在问题,即大key。大key通常由于不合理的缓存设计或批量操作等原因而产生,它们占据着大量内存资源,并可能导致过长的持久化时间。这些问题对redis的性能和资源利用率造成了一定的负面影响。
2、在传统情况下,要删除大key,通常需要使用del命令。然而,这种方式的时间复杂度为o(n),其中n代表被删除的key的数量。对于单个字符串类型的key,时间复杂度是o(1),但对于列表、集合、有序集合或哈希表类型的key,时间复杂度则是o(m),其中m代表这些数据结构内的元素数量。
3、这就意味着,传统的删除方法会导致redis在删除大key时长时间阻塞,可能会阻碍新发起的redis命令请求,甚至引发崩溃,从而严重威胁了redis的性能和可用性。为了解决这一问题,我们提出了一种基于redis异步删除大key的非阻塞方法,旨在显著提高redis的性能和可用性。
技术实现思路
1、本专利技术旨在提供一种基于redis异步删除大key的非阻塞删除方法及其实现系统,通过引入异步删除任务和任务队列的机制,实现了对于大key的非阻塞删除操作,同时兼容了del命令,避免了集群容量倾斜和请求堆积等问题的出现,从而提升了分布式缓存的性能和稳定性。
2、本
3、第一方面,提出一种基于redis异步删除大key的非阻塞删除方法,该方法包括如下步骤:
4、s1、接收客户端发送的删除大key请求,redis启动一个或多个后台任务线程,将任务分配给专门的删除线程池;
5、s2、删除线程池将任务分配给其中空闲的工作线程进行处理,在工作线程内部,对大key进行异步的删除操作;
6、s3、redis在后台启动专门的空间回收线程,回收已经被删除的大key占用的内存空间,保证redis内存的使用效率和稳定性。
7、本专利技术进一步的改进在于,所述s1中当客户端发送删除大key的请求时,将请求信息放入一个任务队列中,同时向客户端返回删除成功的key个数,表示该删除请求已经被成功接收。
8、本专利技术进一步的改进在于,所述s1中删除线程池由一组工作线程组成,用于执行实际的删除操作,当线程池空闲时,会等待新任务的到来,而当任务队列中有新的删除任务时,会将任务分配给其中一个空闲的工作线程进行处理。
9、本专利技术进一步的改进在于,所述s2中异步删除大key操作包括以下具体步骤:
10、s201、接收客户端发送的删除大key请求,判断是否为大key;
11、s202、若不是大key,则执行del命令;若是大key,则添加异步删除任务到任务队列,判断是否有空闲异步流程。
12、本专利技术进一步的改进在于,所述s202中判断是否有空闲异步流程包括以下具体步骤:
13、s2021、若有空闲异步流程,则从队列中取出一个异步删除任务,执行删除操作,若无空闲异步流程,则等待异步流程空闲从队列中取出一个异步删除任务,执行删除操作;
14、s2022、继续处理下一个异步删除任务。
15、本专利技术进一步的改进在于,所述s2中异步删除大key操作采用的是redis的unlink命令,将待删除的大key标记为删除状态,并将其放入一个临时的列表中,删除操作在后台线程中进行,不影响主线程的正常操作。
16、本专利技术进一步的改进在于,所述当大key被标记为删除状态后,在后台线程的处理过程中会根据具体情况对该大key进行彻底删除或延迟删除,避免阻塞问题。
17、第二方面,提出一种基于redis异步删除大key的非阻塞删除系统,该系统包括:
18、接收分配模块、异步删除模块、启动回收模块:
19、所述接收分配模块,用于接收客户端发送的删除大key请求,redis启动一个或多个后台任务线程,将任务分配给专门的删除线程池;
20、所述异步删除模块,用于删除线程池将任务分配给其中空闲的工作线程进行处理,在工作线程内部,对大key进行异步的删除操作;
21、所述启动回收模块,用于redis在后台启动专门的空间回收线程,回收已经被删除的大key占用的内存空间,保证redis内存的使用效率和稳定性。本专利技术的技术效果如下:
22、提供一种基于redis异步删除大key的非阻塞删除方法及其实现系统,通过引入异步删除任务和任务队列的机制,实现了对于大key的非阻塞删除操作,同时兼容了del命令,避免了集群容量倾斜和请求堆积等问题的出现,从而提升了分布式缓存的性能和稳定性。
本文档来自技高网...【技术保护点】
1.一种基于Redis异步删除大Key的非阻塞删除方法,其特征在于:包括以下具体步骤:
2.根据权利要求1所述的一种基于Redis异步删除大Key的非阻塞删除方法,其特征在于:所述S1中当客户端发送删除大Key的请求时,将请求信息放入一个任务队列中,同时向客户端返回删除成功的key个数,表示该删除请求已经被成功接收。
3.根据权利要求2所述的一种基于Redis异步删除大Key的非阻塞删除方法,其特征在于:所述S1中删除线程池由一组工作线程组成,用于执行实际的删除操作,当线程池空闲时,会等待新任务的到来,而当任务队列中有新的删除任务时,会将任务分配给其中一个空闲的工作线程进行处理。
4.根据权利要求3所述的一种基于Redis异步删除大Key的非阻塞删除方法,其特征在于:所述S2中异步删除大Key操作包括以下具体步骤:
5.根据权利要求4所述的一种基于Redis异步删除大Key的非阻塞删除方法,其特征在于:所述S202中判断是否有空闲异步流程包括以下具体步骤:
6.根据权利要求3所述的一种基于Redis异步删除大Key的非阻
7.根据权利要求4所述的一种基于Redis异步删除大Key的非阻塞删除方法,其特征在于:所述当大Key被标记为删除状态后,在后台线程的处理过程中会根据具体情况对该大Key进行彻底删除或延迟删除,避免阻塞问题。
8.一种基于Redis异步删除大Key的非阻塞删除系统,基于权利要求1-7任一项所述的一种基于Redis异步删除大Key的非阻塞删除方法实现,其特征在于,包括:接收分配模块、异步删除模块、启动回收模块:
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时,实现权利要求1-7中任一项所述的一种基于Redis异步删除大Key的非阻塞删除方法。
10.一种电子设备,其特征在于,包括存储器,用于存储指令;处理器,用于执行所述指令,使得所述设备执行实现权利要求1-7中任一项所述的一种基于Redis异步删除大Key的非阻塞删除方法的操作。
...【技术特征摘要】
1.一种基于redis异步删除大key的非阻塞删除方法,其特征在于:包括以下具体步骤:
2.根据权利要求1所述的一种基于redis异步删除大key的非阻塞删除方法,其特征在于:所述s1中当客户端发送删除大key的请求时,将请求信息放入一个任务队列中,同时向客户端返回删除成功的key个数,表示该删除请求已经被成功接收。
3.根据权利要求2所述的一种基于redis异步删除大key的非阻塞删除方法,其特征在于:所述s1中删除线程池由一组工作线程组成,用于执行实际的删除操作,当线程池空闲时,会等待新任务的到来,而当任务队列中有新的删除任务时,会将任务分配给其中一个空闲的工作线程进行处理。
4.根据权利要求3所述的一种基于redis异步删除大key的非阻塞删除方法,其特征在于:所述s2中异步删除大key操作包括以下具体步骤:
5.根据权利要求4所述的一种基于redis异步删除大key的非阻塞删除方法,其特征在于:所述s202中判断是否有空闲异步流程包括以下具体步骤:
6.根据权利要求3所述的一种基于redis异步删除大key的非阻塞删除方法,其特征在...
【专利技术属性】
技术研发人员:石方波,毛刘刚,陈国锐,吴小文,张国豪,黄开成,
申请(专利权)人:天翼云科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。