本申请涉及金融科技,尤其涉及一种缓存数据查询方法和装置、电子设备及存储介质。
背景技术:
1、相关技术中,采用智能推荐系统向目标对象提供保险产品推荐、图文视频推荐等推荐服务。智能推荐系统中存在海量的数据信息,这些数据信息会经过多个召回层、粗排层、精排层、重排层等复杂流程,才能向目标对象推荐该对象感兴趣的数据信息。智能推荐系统对推荐的时间要求较高,需要快速向目标对象推荐其感兴趣的数据信息。为了保证系统在高并发情况下也能保持毫秒级别的低延迟,引入redis缓存是必不可少的。但是对于海量数据的缓存管理是一个很大的挑战,特别是数据的缓存过期时间多的时候,若对缓存过期时间处理不当,很容易产生redis雪崩,从而导致服务器宕机,造成目标对象无法访问数据信息。如何预防redis的缓存雪崩成为了亟待解决的问题。
技术实现思路
1、本申请实施例的主要目的在于提出一种缓存数据查询方法和装置、电子设备及存储介质,旨在预防redis的缓存雪崩。
2、为实现上述目的,本申请实施例的第一方面提出了一种缓存数据查询方法,所述方法包括:
3、获取数据查询请求;
4、响应于所述数据查询请求,对本地缓存进行数据查询,得到数据查询结果;
5、若所述数据查询结果表示所述本地缓存不存在第一预设数据,从基于redis的分布式缓存获取第二预设数据;其中,所述第二预设数据和所述第一预设数据相同;
6、对所述第二预设数据进行数据期限验证,得到期限验证结果;
7、若所述期限验证结果表示所述第二预设数据过期,从预设数据库获取第三预设数据;其中,所述第三预设数据和所述第一预设数据相同。
8、在一些实施例,所述对所述第二预设数据进行数据期限验证,得到期限验证结果,包括:
9、为所述第二预设数据分配缓存过期时间;
10、根据所述缓存过期时间和当前时间对所述第二预设数据进行数据期限验证,得到所述期限验证结果。
11、在一些实施例,所述分布式缓存还包括第四预设数据,所述为所述第二预设数据分配缓存过期时间,包括:
12、随机生成第一过期时间;
13、若所述第一过期时间已被分配给所述第四预设数据,则对所述第二预设数据和所述第四预设数据进行数据容量评估,得到数据容量;
14、对所述第一过期时间分配给所述第二预设数据和所述第四预设数据给所述预设数据库产生的负载进行评估,得到数据库负载数据;
15、若所述数据容量小于或者等于预设容量阈值,且所述数据库负载数据小于或者等于预设负载阈值,则将所述第一过期时间作为所述缓存过期时间,并将所述缓存过期时间分配给所述第二预设数据。
16、在一些实施例,在所述对所述第一过期时间分配给所述第二预设数据和所述第四预设数据给所述预设数据库产生的负载进行评估,得到数据库负载数据之后,所述方法还包括:
17、若所述数据容量和所述数据库负载数据中的至少一种满足预设条件,则随机生成第二过期时间,其中,所述预设条件包括所述数据容量大于所述预设容量阈值、所述数据库负载数据大于所述预设负载阈值;
18、将所述第二过期时间作为所述缓存过期时间,并将所述缓存过期时间分配给所述第二预设数据。
19、在一些实施例,在所述随机生成第一过期时间之后,所述方法还包括:
20、若所述第一过期时间未被分配给所述第四预设数据,则将所述第一过期时间作为所述缓存过期时间,并将所述缓存过期时间分配给所述第二预设数据。
21、在一些实施例,所述期限验证结果包括第一期限验证结果和第二期限验证结果,所述根据所述缓存过期时间和当前时间对所述第二预设数据进行数据期限验证,得到所述期限验证结果,包括:
22、若所述当前时间超过所述缓存过期时间,则所述期限验证结果为所述第一期限验证结果;所述第一期限验证结果表示所述第二预设数据过期;
23、若所述当前时间未超过所述缓存过期时间,则所述期限验证结果为所述第二期限验证结果;所述第二期限验证结果表示所述第二预设数据未过期。
24、在一些实施例,在所述若所述期限验证结果表示所述第二预设数据过期,从预设数据库获取所述第三预设数据之后,所述方法还包括:
25、将所述第三预设数据从所述预设数据库发送到所述分布式缓存;
26、将所述第三预设数据从所述分布式缓存发送到所述本地缓存;
27、向预设对象发送所述第三预设数据。
28、为实现上述目的,本申请实施例的第二方面提出了一种缓存数据查询装置,所述装置包括:
29、获取模块,用于获取数据查询请求;
30、第一查询模块,用于响应于所述数据查询请求,对本地缓存进行数据查询,得到数据查询结果;
31、第二查询模块,用于若所述数据查询结果表示所述本地缓存不存在第一预设数据,从基于redis的分布式缓存获取第二预设数据;其中,所述第二预设数据和所述第一预设数据相同;
32、期限验证模块,用于对所述第二预设数据进行数据期限验证,得到期限验证结果;
33、第三查询模块,用于若所述期限验证结果表示所述第二预设数据过期,从预设数据库获取第三预设数据;其中,所述第三预设数据和所述第一预设数据相同。
34、为实现上述目的,本申请实施例的第三方面提出了一种电子设备,所述电子设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述的缓存数据查询方法。
35、为实现上述目的,本申请实施例的第四方面提出了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的缓存数据查询方法。
36、本申请提出的缓存数据查询方法、缓存数据查询装置、电子设备及计算机可读存储介质,通过引入两级缓存架构缓解redis的缓存雪崩。通过获取数据查询请求,响应于数据查询请求,对本地缓存进行数据查询,得到数据查询结果,若数据查询结果表示本地缓存不存在第一预设数据,从基于redis的分布式缓存获取第二预设数据,第二预设数据和第一预设数据相同。只有当本地缓存不存在第一预设数据,才从基于redis的分布式缓存获取第二预设数据。若数据查询结果表示本地缓存存在第一预设数据,则直接向目标对象返回第一预设数据,在提高访问效率的同时,能够避免大量数据请求同时集中到数据库,有效预防了redis的缓存雪崩。对第二预设数据进行数据期限验证,得到期限验证结果,若期限验证结果表示第二预设数据过期,从预设数据库获取第三预设数据,第三预设数据和第一预设数据相同。
1.缓存数据查询方法,其特征在于,所述方法包括:
2.根据权利要求1所述的缓存数据查询方法,其特征在于,所述对所述第二预设数据进行数据期限验证,得到期限验证结果,包括:
3.根据权利要求2所述的缓存数据查询方法,其特征在于,所述分布式缓存还包括第四预设数据,所述为所述第二预设数据分配缓存过期时间,包括:
4.根据权利要求3所述的缓存数据查询方法,其特征在于,在所述对所述第一过期时间分配给所述第二预设数据和所述第四预设数据给所述预设数据库产生的负载进行评估,得到数据库负载数据之后,所述方法还包括:
5.根据权利要求3所述的缓存数据查询方法,其特征在于,在所述随机生成第一过期时间之后,所述方法还包括:
6.根据权利要求2所述的缓存数据查询方法,其特征在于,所述期限验证结果包括第一期限验证结果和第二期限验证结果,所述根据所述缓存过期时间和当前时间对所述第二预设数据进行数据期限验证,得到所述期限验证结果,包括:
7.根据权利要求1至6任一项所述的缓存数据查询方法,其特征在于,在所述若所述期限验证结果表示所述第二预设数据过期,从预设数据库获取所述第三预设数据之后,所述方法还包括:
8.缓存数据查询装置,其特征在于,所述装置包括:
9.电子设备,其特征在于,所述电子设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现权利要求1至7任一项所述的缓存数据查询方法。
10.计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的缓存数据查询方法。