一种使用缓存拦截器进行读写缓存的方法与流程

文档序号:18939997发布日期:2019-10-23 01:04阅读:442来源:国知局
一种使用缓存拦截器进行读写缓存的方法与流程

本发明涉及读写缓存技术领域,尤其涉及一种使用缓存拦截器进行读写缓存的方法。



背景技术:

开发人员使用缓存的时候,开发人员须在业务代码中编写读写缓存的代码,这种缓存的使用方式会导致业务代码中存在大量重复读写缓存的代码,同时也提高了系统的复杂性,降低了代码可读性,并且使开发人员无法100%精力专注到业务代码编写中。



技术实现要素:

本发明的目的是为了解决现有技术中存在的缺点,而提出的一种使用缓存拦截器进行读写缓存的方法。

为了实现上述目的,本发明采用了如下技术方案:一种使用缓存拦截器进行读写缓存的方法,包括以下步骤:

ss01:用户发起获取业务数据的请求;

ss02:如果用户请求的处理方法a上面设置了缓存打标器,即可被缓存拦截器拦截,缓存打标器会对方法a进行标记,告诉系统该方法需要使用缓存;然后系统在初始化的时候,会将所有标有缓存标记的方法记录在待缓存方法列表中,即方法a会被记录到缓存方法列表中,在系统运行的时候,系统检测到用户请求的处理方法a包含在待缓存方法列表中,缓存拦截器会对存在于待缓存方法列表中的所有方法进行拦截,最终此方法a即被事先设置好的缓存拦截器拦截;

ss03:缓存拦截器拦截到用户的请求之后,根据索引设置器设置的索引字段,从索引生成器中构造缓存索引;

ss04:从缓存中获取索引生成器的缓存索引对应的业务数据;

ss05:如果缓存数据不为空,即为命中缓存,直接返回数据给用户;

ss06:如果缓存数据为空,即为未命中缓存,调用业务数据获取接口,将接口返回数据在缓存拦截器中根据已获取的缓存索引设置到缓存中;

ss07:返回最终业务数据给用户。

作为上述技术方案的进一步描述:

所述缓存拦截器的主要功能在于根据对标有注解标识符方法进行拦截后,根据缓存索引设置器设置的值,优先从缓存中获取数据,如果有数据则直接返回;如果没有数据,从接口中获取业务数据,并根据缓存索引,将业务数据设置到缓存中。

作为上述技术方案的进一步描述:

所述缓存打标器的主要功能是设置需要进行数据缓存的方法打上标志,并设置缓存的过期时间,被此打标器打标的方法将会被上述缓存拦截器拦截。

作为上述技术方案的进一步描述:

所述索引设置器为设置缓存索引的处理工具,且索引设置器的主要功能是设置缓存索引,所述索引生成器的主要功能是根据索引设置器的设置值,并以一定的索引规则生成最终进行读写的缓存索引。

作为上述技术方案的进一步描述:

所述被缓存打标器打标的方法在被缓存拦截器拦截之后,根据索引设置器的设置并由索引生成器生成索引,根据该索引从缓存库中进行读写数据,其中,缓存库为用于保存缓存数据。

作为上述技术方案的进一步描述:

所述步骤3中索引设置器可以生效的前提为某个方法m已使用缓存打标器打上缓存的标记,且索引生成器将会以一定规则进行缓存索引构造,其中,索引设置器在打上缓存标记的方法m的某几个方法参数上进行具体索引的设置,如方法m中包含有用户姓名的参数,则可在该参数上添加索引设置。

作为上述技术方案的进一步描述:

所述索引生成器的索引规则共包括四种,其中第一种索引规则为:以索引设置器设置的值为前缀,方法参数实际值为后缀,中间以英文冒号分割。

作为上述技术方案的进一步描述:

所述第二种索引规则为:如果索引设置器未设置任何值,则为缺省设置,方法m中所有参数的名称和值都作为一部分内容添加到缓存索引中,中间以英文冒号分割。

作为上述技术方案的进一步描述:

所述第三种索引规则为:如果索引设置器设置在一个复合对象参数,并且该对象的每个属性都提供了访问器方法,将需要包含到缓存索引的一个或多个属性名,将每个属性名包含到英文双引号中,中间并以逗号分割;

以索引设置器设置属性名称为前缀,通过复合对象访问器方法获得的对应属性值为后缀,中间以英文冒号分割。

作为上述技术方案的进一步描述:

所述第四种索引规则为添加以当前系统所处环境别名和系统名称为前缀后进行最终缓存索引的生成。

有益效果

本发明提供了一种使用缓存拦截器进行读写缓存的方法。具备以下有益效果:

该使用缓存拦截器进行读写缓存的方法进行缓存时开发人员只需专注于业务代码的编写,无需关注缓存的读写,业务代码中无需植入读写缓存代码,这样可以减少代码量,提高开发人员的开发效率,并且只需在缓存拦截器中进行一次缓存的读写代码编写,系统中任何地方都可以使用,达到“一次编写,到处可用”的效果。

附图说明

图1为本发明提出的一种使用缓存拦截器进行读写缓存的方法的流程图;

图2为本发明提出的一种使用缓存拦截器进行读写缓存的方法的泳道图;

图3为本发明中缓存组件关系图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。

参照图1-3,一种使用缓存拦截器进行读写缓存的方法,包括以下步骤:

ss01:用户发起获取业务数据的请求;

ss02:如果用户请求的处理方法a上面设置了缓存打标器,即可被缓存拦截器拦截,缓存打标器会对方法a进行标记,告诉系统该方法需要使用缓存;然后系统在初始化的时候,会将所有标有缓存标记的方法记录在待缓存方法列表中,即方法a会被记录到缓存方法列表中,在系统运行的时候,系统检测到用户请求的处理方法a包含在待缓存方法列表中,缓存拦截器会对存在于待缓存方法列表中的所有方法进行拦截,最终此方法a即被事先设置好的缓存拦截器拦截;

ss03:缓存拦截器拦截到用户的请求之后,根据索引设置器设置的索引字段,从索引生成器中构造缓存索引;

ss04:从缓存中获取索引生成器的缓存索引对应的业务数据;

ss05:如果缓存数据不为空,即为命中缓存,直接返回数据给用户;

ss06:如果缓存数据为空,即为未命中缓存,调用业务数据获取接口,将接口返回数据在缓存拦截器中根据已获取的缓存索引设置到缓存中;

ss07:返回最终业务数据给用户。

缓存拦截器的主要功能在于根据对标有注解标识符方法进行拦截后,根据缓存索引设置器设置的值,优先从缓存中获取数据,如果有数据则直接返回;如果没有数据,从接口中获取业务数据,并根据缓存索引,将业务数据设置到缓存中。

还可以使用第三方库或者编程语言自带拦截器进行缓存拦截器的开发。

缓存打标器的主要功能是设置需要进行数据缓存的方法打上标志,并设置缓存的过期时间,被此打标器打标的方法将会被上述缓存拦截器拦截。

索引设置器为设置缓存索引的处理工具,且索引设置器的主要功能是设置缓存索引,索引生成器的主要功能是根据索引设置器的设置值,并以一定的索引规则生成最终进行读写的缓存索引。

还可以使用配置文件或者语言自带注解功能进行缓存打标器和索引设置器的实现。

被缓存打标器打标的方法,被缓存拦截器拦截之后,根据索引设置器的设置并由索引生成器生成索引,根据该索引从缓存库中进行读写数据,其中,缓存库为用于保存缓存数据。

还可以使用非关系型数据库或者使用本地虚拟机内存作为缓存库。

步骤3中索引设置器可以生效的前提为某个方法m已使用缓存打标器打上缓存的标记,且索引生成器将会以一定规则进行缓存索引构造,其中,索引设置器在打上缓存标记的方法m的某几个方法参数上进行具体索引的设置,如方法m中包含有用户姓名的参数,则可在该参数上添加索引设置。

索引生成器的索引规则共包括四种,其中第一种索引规则为:以索引设置器设置的值为前缀,方法参数实际值为后缀,中间以英文冒号分割。

参数username的实际值为jack,则“username:jack”会被作为缓存索引的一部分。

第二种索引规则为:如果索引设置器未设置任何值,则为缺省设置,方法m中所有参数的名称和值都作为一部分内容添加到缓存索引中,中间以英文冒号分割。

方法m中包含有参数用户姓名username(实际值为jack)和用户性别gender(实际值为男),则“username:jack:gender:男”会作为一部分内容添加到缓存索引。

第三种索引规则为:如果索引设置器设置在一个复合对象参数,并且该对象的每个属性都提供了访问器方法,将需要包含到缓存索引的一个或多个属性名,将每个属性名包含到英文双引号中,中间并以逗号分割;

以索引设置器设置属性名称为前缀,通过复合对象访问器方法获得的对应属性值为后缀,中间以英文冒号分割。

复合对象user(keysetter("usename","gender")user),且username访问器方法返回值为jack,gender返回值为男,则最终“username:jack:gender:男”会作为一部分内容添加到缓存索引中。

第四种索引规则为添加以当前系统所处环境别名和系统名称为前缀后进行最终缓存索引的生成。

系统所处环境别名为prod,系统名称为user-center,则最终生成的缓存索引为prod:user-center:username:jack:gender:男,保证缓存的唯一性。

在本说明书的描述中,参考术语“一个实施例”、“示例”、“具体示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1