一种异步延时加载缓存的方法
文献发布时间:2023-06-19 10:51:07
技术领域
本发明属于服务器数据缓存领域,涉及一种异步延时加载缓存的方法。
背景技术
通过服务器的内存作为缓存,同步阻塞的对缓存进行初始化和关系型查找。
同步阻塞的对缓存数据进行初始化,对于一些复杂关系型无法使用非关系型缓存(如reids)进行存储。
现有技术缺陷:
1.缓存初始化的时候需要阻塞等待,对服务器的性能和cpu都是很大的损耗。
2.对于复杂的关系型查询效率低,导致服务阻塞。
3.无法使用非关系型缓存(如redis)进行存储,导致服务和缓存无法剥离做成无状态轻量级服务。
4.服务器内存占用严重,经常触发gc影响性能。
发明内容
本发明针对上述的问题,提供了一种异步延时加载缓存的方法。
为了达到上述目的,本发明采用的技术方案为,
一种异步延时加载缓存的方法,该方法从客户端发出缓存请求之后依次经过延时缓存集群、业务服务集群,再到延时缓存集群,实现异步延时加载缓存,所述业务服务集群包括codis集群和mysql集群。
作为优选,具体包括以下步骤:
1)客户端发起缓存请求,并将该请求发送至延时缓存集群;
2)延时缓存集群会对该缓存库进行相同的该数据检测,若存在该数据,则返回客户端,若不存在该数据,则加载到业务服务集群;
3)业务服务集群中的codis集群和mysql集群则会对该数据进行加载,并将该加载数据返回给延时缓存集群,即完成缓存。
作为优选,延时缓存集群收到业务服务集群退回的数据后,可自定义设置过期时间。
作为优选,该数据在未过期的时间段内,客户端发起的该数据的缓存请求,都会无状态的去到延时缓存服务集群读取数据,其缓存服务集群则将该数据直接返回。
作为优选,该数据超过过期时间,采用被动加载的方式,等下一个客户端发起缓存请求过来时,才去做缓存的异步更新。
作为优选,其缓存更新期间则是通过ReentrantLock锁超时机制,完成上一次加载的数据做返回处理。
作为优选,另起一条线程定期清理超过过期时间且没再被访问的缓存数据。
作为优选,其另起一条线程则是通过java的new Thread创建线程,调用run方法轮询检测。
与现有技术相比,本发明的优点和积极效果在于,
1、本发明通过缓存与业务服务的剥离,实现轻量化服务;通过ReentrantLock的等锁超时机制异步不阻塞的加载缓存,并且延时设置该缓存的有效期保证缓存服务的高性能和可用性,从而实现了异步延时加载缓存。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为一种异步延时加载缓存的方法的流程图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和实施例对本发明做进一步说明。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用不同于在此描述的其他方式来实施,因此,本发明并不限于下面公开说明书的具体实施例的限制。
实施例1,如图1所示,本发明提供了一种异步延时加载缓存的方法,该方法从客户端发出缓存请求之后依次经过延时缓存集群、业务服务集群,再到延时缓存集群,实现异步延时加载缓存,所述业务服务集群包括codis集群和mysql集群。
具体包括以下步骤:
1)客户端发起缓存请求,并将该请求发送至延时缓存集群;
2)延时缓存集群会对该缓存库进行相同的该数据检测,若存在该数据,则返回客户端,若不存在该数据,则加载到业务服务集群;
3)业务服务集群中的codis集群和mysql集群则会对该数据进行加载,并将该加载数据返回给延时缓存集群,即完成缓存。
延时缓存集群收到业务服务集群退回的数据后,可自定义设置过期时间。
该数据在未过期的时间段内,客户端发起的该数据的缓存请求,都会无状态的去到延时缓存服务集群读取数据,其缓存服务集群则将该数据直接返回。
该数据超过过期时间,采用被动加载的方式,等下一个客户端发起缓存请求过来时,才去做缓存的异步更新。
其缓存更新期间则是通过ReentrantLock锁超时机制,完成上一次加载的数据做返回处理。
另起一条线程定期清理超过过期时间且没再被访问的缓存数据。
其另起一条线程则是通过java的new Thread创建线程,调用run方法轮询检测。
以上所述,仅是本发明的较佳实施例而已,并非是对本发明作其它形式的限制,任何熟悉本专业的技术人员可能利用上述揭示的技术内容加以变更或改型为等同变化的等效实施例应用于其它领域,但是凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与改型,仍属于本发明技术方案的保护范围。
- 一种异步延时加载缓存的方法
- 一种异步缓存方法、异步缓存器及集成电路