本申请各实施例属于通信,具体涉及一种缓存方法以及装置。
背景技术:
1、在web应用系统中,经常会出现一些需要对大量数据进行计算统计分析的操作,而这些数据的实时性要求并不高。
2、在传统的restful接口下,由于几乎不存在强类型校验,因此很容易在接口调用的函数上将计算的结果进行缓存。
3、而在使用graphql接口下,由于存在强类型校验和大量的自定义类型,对其结果和输入参数进行序列化和反序列化就会十分繁琐,因此在接口调用的函数上进行缓存就十分困难,缓存接口的缓存速度低,从而导致开发效率低下。
技术实现思路
1、为了解决现有技术存在的在接口调用的函数上进行缓存就十分困难,缓存接口的缓存速度低,从而导致开发效率低下的技术问题,本发明提供了一种缓存方法及装置。
2、第一方面,本发明提供了一种缓存方法,包括:
3、接收客户端发起的http请求,http请求中包括graphql请求;
4、响应于http请求,解析http请求以获取客户端的用户信息;
5、根据用户信息对客户端进行认证;
6、当客户端认证通过时,解析graphql请求以获取graphql请求的请求方法和请求名称;
7、根据请求方法和请求名称查询系统内部的缓存表,判断是否需要缓存graphql请求;
8、当不需要缓存graphql请求时,通过请求函数进行处理;
9、当需要缓存graphql请求时,获取graphql请求的key值,根据key值查询数据库;当数据库中存在key值时,返回key值对应的value值;当数据库中不存在key值时,通过请求函数进行处理;
10、根据请求函数的处理结果判断graphql请求是否存在错误,若是,向客户端返回请求函数的处理结果,并对请求函数的处理结果进行缓存;否则,向客户端返回错误提示。
11、第二方面,本发明提供了一种缓存装置,包括:
12、接收模块,用于接收客户端发起的http请求,http请求中包括graphql请求;
13、响应模块,用于响应于http请求,解析http请求以获取客户端的用户信息;
14、认证模块,用于根据用户信息对客户端进行认证;
15、解析模块,用于当客户端认证通过时,解析graphql请求以获取graphql请求的请求方法和请求名称;
16、判断模块,用于根据请求方法和请求名称查询系统内部的缓存表,判断是否需要缓存graphql请求;
17、处理模块,用于当不需要缓存graphql请求时,通过请求函数进行处理;
18、查询模块,用于当需要缓存graphql请求时,获取graphql请求的key值,根据key值查询数据库;当数据库中存在key值时,返回key值对应的value值;当数据库中不存在key值时,通过请求函数进行处理;
19、缓存模块,用于根据请求函数的处理结果判断graphql请求是否存在错误,若是,向客户端返回请求函数的处理结果,并对请求函数的处理结果进行缓存;否则,向客户端返回错误提示。
20、与现有技术相比,本发明至少具有以下有益效果:
21、在本发明中,根据graphql请求的请求方法和请求名称,判断是否需要缓存graphql请求,当需要缓存graphql请求时,获取graphql请求的key值,根据key值查询数据库,当数据库中存在key值时,返回key值对应的value值。当数据库中不存在key值时,通过请求函数进行处理,并对请求函数的处理结果进行缓存。如果相同的请求被频繁发起,从缓存中获取结果可以显著减少处理时间,提高响应速度。进一步地,避免了在接口调用的函数上进行缓存,而是在接口中直接进行缓存,缓存接口的缓存速度高,从而提升开发效率。
1.一种缓存方法,其特征在于,包括:
2.根据权利要求1所述的缓存方法,其特征在于,所述根据所述用户信息对所述客户端进行认证,具体包括:
3.根据权利要求2所述的缓存方法,其特征在于,所述对所述客户端进行jwt认证,具体包括:
4.根据权利要求1所述的缓存方法,其特征在于,所述解析所述graphql请求以获取所述graphql请求的请求方法和请求名称,具体包括:
5.根据权利要求4所述的缓存方法,其特征在于,所述使用graphqlvaildator验证器对graphql请求进行校验,具体包括:
6.根据权利要求1所述的缓存方法,其特征在于,所述根据请求方法和请求名称查询系统内部的缓存表,判断是否需要缓存所述graphql请求,具体包括:
7.根据权利要求1所述的缓存方法,其特征在于,所述获取所述graphql请求的key值具体包括:
8.根据权利要求1所述的缓存方法,其特征在于,所述根据所述请求函数的处理结果判断所述graphql请求是否存在错误,具体包括:
9.根据权利要求1所述的缓存方法,其特征在于,所述根据所述请求函数的处理结果判断所述graphql请求是否存在错误,具体包括:
10.一种缓存装置,其特征在于,包括: