一种多级分布式缓存系统及方法与流程

文档序号:26713739发布日期:2021-09-22 19:40阅读:107来源:国知局
一种多级分布式缓存系统及方法与流程

1.本技术实施例涉及数据分析技术领域,尤其涉及一种多级分布式缓存系统及方法。


背景技术:

2.随着移动互联网和智能设备的快速发展和普及,互联网应用的服务器处理数据的压力越来越大,同时用户对请求响应时间的要求也愈加苛刻。在网络延迟优化和硬件性能提升已达一定瓶颈的背景下,缓存技术已成为提升服务器并发性能和响应速度的主要手段之一。
3.目前有两种主流的分布式缓存系统实现方式,分别是基于memcached和基于redis的分布式缓存系统。而redis具有支持多种数据类型、支持数据持久化和高扩展性等优点,使得基于redis的分布式缓存系统成为普遍选择,但是该方法存在以下两种问题:1、对数据进行增删改操作时,需要解决redis加载缓存与数据库的数据一致性的问题;2、在数据请求的过程中,若在短时间内出现大量的数据访问请求,可能会发生缓存穿透、缓存击穿和缓存雪崩等问题,从而使数据库瞬时压力过大甚至导致数据库宕机。


技术实现要素:

4.本技术实施例提供一种多级分布式缓存系统及方法,可以通过多级分布式缓存系统,对于数据查询请求进行逐级缓存的访问,降低数据库直接对接数据查询请求的数据量的同时,提高数据查询速度,并且确保缓存系统的稳定运行。
5.第一方面,本技术实施例提供了一种多级分布式缓存系统,所述系统包括:本地缓存、远程缓存和数据库,所述远程缓存包括redis加载缓存和redis查询缓存;
6.所述本地缓存,用于接收到数据查询请求时,若本地缓存中存在目标数据,则返回所述目标数据,若本地缓存中不存在目标数据,则将所述数据查询请求发送至redis查询缓存;
7.所述redis查询缓存,用于接收所述数据查询请求,并确定所述数据查询请求的历史查询结果;若所述数据查询请求的历史查询结果为数据库中不存在目标数据,则返回所记录的数据库中不存在的结果;若存在与所述数据查询请求匹配的历史查询结果,则返回目标数据,并将目标数据存储至本地缓存;若无与所述数据查询请求匹配的历史查询结果,则将所述数据查询请求发送至redis加载缓存;
8.所述redis加载缓存,用于根据缓存配置表预先加载数据库中的待缓存数据,并基于接收到的数据查询请求进行目标数据查询,若查询到则返回目标数据,并将所述目标数据缓存至所述redis查询缓存,并将目标数据存储至本地缓存,若不存在目标数据则发送至数据库进行查询;
9.所述数据库,用于根据接收到的数据查询请求进行目标数据查询,若查询到则返回目标数据,并将所述目标数据缓存至所述redis查询缓存中,并将目标数据存储至本地缓
存,若不存在目标数据则反馈数据库中不存在目标数据,并将反馈内容缓存至所述redis查询缓存中。
10.第二方面,本技术实施例提供了一种多级分布式缓存方法,该方法包括:
11.接收到数据查询请求时,若本地缓存中存在目标数据,则返回所述目标数据,若本地缓存中不存在目标数据,则将所述数据查询请求发送至redis查询缓存;
12.接收所述数据查询请求,并确定所述数据查询请求的历史查询结果;若所述数据查询请求的历史查询结果为数据库中不存在目标数据,则返回所记录的数据库中不存在的结果;若存在与所述数据查询请求匹配的历史查询结果,则返回目标数据,并将目标数据存储至本地缓存;若无与所述数据查询请求匹配的历史查询结果,则将所述数据查询请求发送至redis加载缓存;
13.根据缓存配置表预先加载数据库中的待缓存数据,并基于接收到的数据查询请求进行目标数据查询,若查询到则返回目标数据,并将所述目标数据缓存至所述redis查询缓存,并将目标数据存储至本地缓存,若不存在目标数据则发送至数据库进行查询;
14.根据接收到的数据查询请求进行目标数据查询,若查询到则返回目标数据,并将所述目标数据缓存至所述redis查询缓存中,并将目标数据存储至本地缓存,若不存在目标数据则反馈数据库中不存在目标数据,并将反馈内容缓存至所述redis查询缓存中。
15.本技术实施例提供了一种多级分布式缓存系统,所述系统包括:本地缓存、远程缓存和数据库,所述远程缓存包括redis加载缓存和redis查询缓存;
16.所述本地缓存,用于接收到数据查询请求时,若本地缓存中存在目标数据,则返回所述目标数据,若本地缓存中不存在目标数据,则将所述数据查询请求发送至redis查询缓存;所述redis查询缓存,用于接收所述数据查询请求,并确定所述数据查询请求的历史查询结果;若所述数据查询请求的历史查询结果为数据库中不存在目标数据,则返回所记录的数据库中不存在的结果;若存在与所述数据查询请求匹配的历史查询结果,则返回目标数据,并将目标数据存储至本地缓存;若无与所述数据查询请求匹配的历史查询结果,则将所述数据查询请求发送至redis加载缓存;所述redis加载缓存,用于根据缓存配置表预先加载数据库中的待缓存数据,并基于接收到的数据查询请求进行目标数据查询,若查询到则返回目标数据,并将所述目标数据缓存至所述redis查询缓存,并将目标数据存储至本地缓存,若不存在目标数据则发送至数据库进行查询;所述数据库,用于根据接收到的数据查询请求进行目标数据查询,若查询到则返回目标数据,并将所述目标数据缓存至所述redis查询缓存中,并将目标数据存储至本地缓存,若不存在目标数据则反馈数据库中不存在目标数据,并将反馈内容缓存至所述redis查询缓存中。
17.该多级分布式缓存系统提高了服务端的并发性能,加快了数据请求响应速度,优化了网络性能,提高了用户网络使用体验。
附图说明
18.图1是本技术实施例一提供的多级分布式系统结构框图;
19.图2是本技术实施例一提供的分布式缓存总体架构图;
20.图3是本技术实施例二提供的多级分布式缓存方法流程图。
具体实施方式
21.下面结合附图和实施例对本技术作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本技术,而非对本技术的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本技术相关的部分而非全部结构。
22.在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
23.实施例一
24.图1是本技术实施例一提供的多级分布式系统结构框图,本实施例可适用于网络系统运行过程中短时间内遇到大量操作请求的场景中。
25.如图1所示,本技术实施例中提供的多级分布式系统包括:
26.本地缓存110、远程缓存120和数据库130,所述远程缓存120包括redis加载缓存121和redis查询缓存122;
27.所述本地缓存110,用于接收到数据查询请求时,若本地缓存110中存在目标数据,则返回所述目标数据,若本地缓存110中不存在目标数据,则将所述数据查询请求发送至redis查询缓存122;
28.所述redis查询缓存122,用于接收所述数据查询请求,并确定所述数据查询请求的历史查询结果;若所述数据查询请求的历史查询结果为数据库130中不存在目标数据,则返回所记录的数据库130中不存在的结果;若存在与所述数据查询请求匹配的历史查询结果,则返回目标数据,并将目标数据存储至本地缓存110;若无与所述数据查询请求匹配的历史查询结果,则将所述数据查询请求发送至redis加载缓存121;
29.所述redis加载缓存121,用于根据缓存配置表预先加载数据库130中的待缓存数据,并基于接收到的数据查询请求进行目标数据查询,若查询到则返回目标数据,并将所述目标数据缓存至所述redis查询缓存122,并将目标数据存储至本地缓存110,若不存在目标数据则发送至数据库130进行查询;
30.所述数据库130,用于根据接收到的数据查询请求进行目标数据查询,若查询到则返回目标数据,并将所述目标数据缓存至所述redis查询缓存122中,并将目标数据存储至本地缓存110,若不存在目标数据则反馈数据库中不存在目标数据,并将反馈内容缓存至所述redis查询缓存122中。
31.其中,接收到的数据查询请求是由客户端发出的。例如在电脑上打开一个网页,此时客户端向服务端发出了一条数据请求,服务端从缓存或数据库中找到页面数据,并将网页显示在界面上,即响应了客户端的数据查询请求。
32.进一步的,缓存就是数据交换的缓冲区,是存贮数据(使用频繁的数据)的临时地方。当用户查询数据时,中央处理器首先在缓存中寻找该数据,如果找到了则直接返回该数据。如果找不到,则去数据库中查找该数据。
33.进一步的,本地缓存110和远程缓存120区别在于存储的位置不同。例如,本地缓存110的存储位置可以是本地计算机,远程缓存120的存储位置可以是其他服务器。
34.本地缓存110除了能够对接收到的数据查询请求进行响应以外,还可以接收由redis查询缓存122、redis加载缓存121以及服务器返回的目标数据。并且,本方案中,可以对本地缓存110所缓存的目标数据设置一定的有效期,例如可以设置为30秒。本方案可以通过这样的设置,确保对强一致性要求不高的数据库表的查询性能。
35.进一步的,缓存有不同级别,例如一级缓存、二级缓存等。不同级别的缓存区别在于返回数据的速度不同,可以理解的,一级缓存返回数据的速度高于二级缓存。
36.本实施例中,将本地缓存110作为一级缓存,可选的,本地缓存110可以基于caffeine实现。其中,caffeine是一个高性能的java缓存库。进一步的,本实施例将远程缓存120作为二级缓存,基于redis实现。其中,redis实质上是一种非关系型内存数据库,redis内部是一个key

value存储系统。其中key

value是键值对,在键值对中,key是关键字,value是值,例如"firstname":"brett","firstname"是关键字,"brett"是值。redis支持存储的value类型包括string(字符串)、list(链表)、set(集合)、zset(sorted set

有序集合)和hash(哈希类型,类似于java中的map)。
37.进一步的,数据库130是一个按照数据结构来组织、存储和管理数据的仓库,是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。数据库130可分为关系型数据库和非关系型数据库,其中,关系型数据库有mysql,sqlserver等,非关系型数据库有mongodb、redis、memcache等。本实施例对数据库130的类型不进行限制。
38.可以理解的,当客户端发出数据查询请求时,若本地缓存110、redis查询缓存122以及redis加载缓存121均未存储有目标数据时,则数据查询请求发送至数据库130。若数据库130存储有目标数据,则返回目标数据,并将目标数据缓存至redis查询缓存122中,并将目标数据存储至本地缓存110;若数据库130未存储有目标数据,则返回数据库不存在目标数据,并将该反馈结果缓存至redis查询缓存122中。
39.进一步的,目标数据是指查询请求的数据,例如可以是银行系统里面的参数数据。
40.进一步的,redis查询缓存122是redis加载缓存121及数据库130的缓存。redis查询缓存122中存储的是由数据库130或者redis加载缓存121返回的历史查询的结果。其中,历史查询结果是指历史用户在请求查询目标数据时的查询结果。历史查询结果可以是数据库130中不存在目标数据,此时redis查询缓存122返回数据库130不存在目标数据;历史查询结果也可以redis缓存121及数据库130返回的目标数据,此时redis查询缓存122返回目标数据,并将目标数据存储至本地缓存110。如果没有目标数据的查询结果,则将所述数据查询请求发送至redis加载缓存121。
41.进一步的,redis加载缓存121基于缓存配置表从数据库130中加载待缓存数据。其中,缓存配置表中记载了被频繁访问的数据库表的表信息,及其他相关的redis加载缓存121的配置信息,例如缓存方式,有效时间以及初始化时间等,这些数据需要从数据库130中加载到redis加载缓存121中。待缓存数据是指要从数据库130中加载到redis加载缓存121中的数据。
42.本实施例中,可选的,所述缓存配置表,包括:表名、表主键和表索引;
43.所述表名和所述表主键,用于确定redis加载缓存121中的key及唯一目标数据记录;
44.所述表名和所述表索引,用于确定redis加载缓存121中的key及满足索引条件的
至少一条数据记录。
45.可以理解的,数据是以表的形式存储在数据库130中,根据缓存配置中的表名、主键和索引的取值确定redis加载缓存121中的key。进一步,示例性的,表名、表主键、表索引分别是币种参数表、币种名和币种所属区域,那么redis加载缓存121中的主键key为“币种参数

人民币”,对应的value值是币种参数表中币种名为人民币的数据记录;redis加载缓存121中的索引key为“币种参数

亚洲”,对应的value值的亚洲区域下的主键key,如“币种参数

人民币”、“币种参数

日元”、“币种参数

韩元”等,再根据主键key确定的是币种参数表中亚洲所有币种的数据记录。其中,所述主键key是由表名和表主键确定的redis加载缓存121中的key,所述索引key是由表名和表索引确定的redis加载缓存121中的key。
46.本实施例通过配置缓存配置表以及设置表名、表主键和表索引可以快速的定位所需目标数据。
47.本实施例中,可选的,所述缓存配置表,还包括:表所属库;
48.所述表所属库,用于表示待缓存表的所属数据库130。
49.可以理解的,缓存配置表中记载的是需要从数据库130中加载到redis加载缓存121中的数据库表的配置信息,加载数据时需要从数据所在的数据库130中获取该数据。
50.本实施例中,可选的,所述缓存配置表,还包括:初始化时间;
51.所述初始化时间,用于确定redis加载缓存121的定时加载任务的执行时间。
52.可以理解的,redis加载缓存121定时按照缓存配置表从数据库130中加载数据。
53.进一步的,初始化时间可以是每天早上6点,或者每隔一定时间间隔,例如从早上6点开始每隔一个小时。其中,初始化时间可以是固定的,也可以是根据实际情况设置的。
54.本实施例通过配置缓存配置表、表所属库、初始化时间可以使服务端快速的从目标数据的存储位置找到该目标数据,用来对目标数据进行预加载到redis加载缓存121。可以理解为redis加载缓存121的初始化过程,例如每天固定时间预加载一些高热度的信息。
55.本实施例中,可选的,所述数据库130,用于接收到数据变更事件,则将所述数据变更事件同步到所述redis加载缓存121;
56.所述redis加载缓存121,用于根据所述数据变更事件,确定redis加载缓存121中的变更数据,并删除所述变更数据;
57.所述数据库130,还用于若接收到所述数据变更事件提交,则进行数据库130的数据更新;
58.所述redis加载缓存121,还用于根据所述数据变更事件的提交结果,进行redis加载缓存121的数据同步更新。
59.其中,数据变更事件是指数据发生变化的事件。例如某电商平台上某款手机剩余库存为120台,若此时有用户对该款手机下了一个订单,则该款手机的库存数字即将发生变化,即产生了数据变更事件。可以理解的,数据库130接收到数据变更事件后,将该事件同步到redis加载缓存121,以便redis加载缓存121根据数据变更事件及时更新数据。示例性的,数据库130接收到数据a即将发生变化,则数据库130将该事件同步到redis加载缓存121,redis加载缓存121将其内部存储的数据a删除。
60.进一步的,数据库130接收到数据变更事件,此时数据可能还没发生变更。例如,根据上段所述的示例,用户下了订单,库存数量即将发生变化,但还没有变化。待用户下单并
支付成功后,库存数量才发生了变化。本实施例中,数据发生了变化的事件被称为数据变更事件提交,此时数据库130对相应数据进行更新,随后redis加载缓存121根据数据库130对内部的相应数据进行更新。
61.本实施例可以在出现数据变更事件后确保缓存与数据库130的数据保持一致。
62.本实施例中,可选的,所述数据库130,用于若接收到所述数据变更事件未提交,则不进行数据更新;
63.所述redis加载缓存121,还用于根据所述数据变更事件的未提交结果,进行删除变更数据的回存操作。
64.可以理解的,若数据没有发生改变,则数据库130不会对相应数据进行更新,此时redis加载缓存121从回收站或者数据库中将删除的数据重新加载。其中,回存操作是指重新加载已删除的数据。
65.本实施例可以在出现数据变更事件因超时等原因未提交时确保缓存与数据库的数据保持一致。
66.本实施例,可选的,所述系统还包括:定时加载任务管理模块;
67.所述定时加载任务管理模块,用于开启定时加载任务线程,按照所述初始化时间对所述数据库130中的待缓存数据进行初始化加载。
68.由于缓存内的数据是有时效性的,数据在缓存内部的时间达到有效时长后就会被删除,所以需要定时的将数据库中待缓存的数据及时重新加载到缓存中。除此之外,数据库还定时的向缓存加载一些高热度的数据。
69.图2是本实施例提供的分布式缓存总体架构图,如图2所示,其中本地缓存基于caffeine实现,作为一级缓存;远程缓存基于redis集群实现,作为二级缓存,其中远程缓存包括redis加载缓存和redis查询缓存。当外部请求查询数据时,优先访问一级缓存即本地缓存,若本地缓存中已缓存符合条件的数据时,则直接返回数据,从而避免了直接从redis集群查询带来的额外的网络io开销,提升了数据查询的效率。当一级缓存无返回结果时,优先访问redis查询缓存,当未查到结果时再访问redis加载缓存,最后访问数据库。同时,本实施例提供了一种利用面向切面编程(aspect oriented program,aop)的缓存快捷无感使用方案。本提案提供本地缓存应用程序接口和远程缓存应用程序接口分别对caffeine和redis的基础操作进行封装。同时借助aop切面技术拦截结构化查询语言(structured query language,sql),实现快捷无感地使用缓存以提升查询效率并减轻数据库压力。
70.本实施例提供一种由本地缓存和远程缓存构成的多级缓存系统。所述系统包括:本地缓存、远程缓存和数据库,所述远程缓存包括redis加载缓存和redis查询缓存;所述本地缓存,用于接收到数据查询请求时,若本地缓存中存在目标数据,则返回所述目标数据,若本地缓存中不存在目标数据,则将所述数据查询请求发送至redis查询缓存;所述redis查询缓存,用于接收所述数据查询请求,并确定所述数据查询请求的历史查询结果;若所述数据查询请求的历史查询结果为数据库中不存在目标数据,则返回所记录的数据库中不存在的结果;若存在与所述数据查询请求匹配的历史查询结果,则返回目标数据,并将目标数据存储至本地缓存;若无与所述数据查询请求匹配的历史查询结果,则将所述数据查询请求发送至redis加载缓存;所述redis加载缓存,用于根据缓存配置表预先加载数据库中的待缓存数据,并基于接收到的数据查询请求进行目标数据查询,若查询到则返回目标数据,
并将所述目标数据缓存至所述redis查询缓存,并将目标数据存储至本地缓存,若不存在目标数据则发送至数据库进行查询。所述数据库,用于根据接收到的数据查询请求进行目标数据查询,若查询到则返回目标数据,并将所述目标数据缓存至所述redis查询缓存中,并将目标数据存储至本地缓存,若不存在目标数据则反馈数据库中不存在目标数据,并将反馈内容缓存至所述redis查询缓存中。
71.本实施例提供的缓存系统提高了服务端的并发性能,加快了数据请求响应速度,优化了网络性能,提高了用户网络使用体验:能够适应集群环境、比单一的redis加载缓存性能更高,同时更好地减轻数据库的压力;在增删改数据库时,先删除缓存相关数据,再对数据库进行更新,最后事务的提交状态将修改的数据同步至缓存,达到redis加载缓存与数据库的最终一致性;对查询结果做redis查询缓存,对数据库未查到的key做null的缓存,以解决缓存穿透问题;给redis加载缓存中的key加互斥锁以解决缓存击穿问题;提供缓存配置表,对使用缓存的数据库表配置不同的缓存加载时间及过期时间,解决了缓存雪崩问题。
72.实施例二
73.图3是本技术实施例二提供的多级分布式缓存方法流程图,本实施例可适用于网络系统运行过程中短时间内遇到大量操作请求的场景中。该方法可以由本技术实施例所提供的多级分布式缓存系统执行,所述多级分布式缓存系统包括:本地缓存、远程缓存和数据库,所述远程缓存包括redis加载缓存和redis查询缓存。
74.如图3所示,本技术实施例中提供的多级分布式缓存方法可包括以下步骤:
75.s310、接收到数据查询请求时,若本地缓存中存在目标数据,则返回所述目标数据,若本地缓存中不存在目标数据,则将所述数据查询请求发送至redis查询缓存。
76.其中,数据查询请求是由客户端发送的,本地缓存接收到数据查询请求后返回目标数据。
77.s320、接收所述数据查询请求,并确定所述数据查询请求的历史查询结果;若所述数据查询请求的历史查询结果为数据库中不存在目标数据,则返回所记录的数据库中不存在的结果;若存在与所述数据查询请求匹配的历史查询结果,则返回目标数据,并将目标数据存储至本地缓存;若无与所述数据查询请求匹配的历史查询结果,则将所述数据查询请求发送至redis加载缓存。
78.其中,数据查询请求是由本地缓存发出的,redis查询缓存接收该数据查询请求。可以理解的,本地缓存中没有目标数据,则本地缓存向redis查询缓存发出数据查询请求。
79.s330、根据缓存配置表预先加载数据库中的待缓存数据,并基于接收到的数据查询请求进行目标数据查询,若查询到则返回目标数据,并将所述目标数据缓存至所述redis查询缓存,并将目标数据存储至本地缓存,若不存在目标数据则发送至数据库进行查询。
80.其中,redis加载缓存根据缓存配置表预先加载数据库中的待缓存数据,并接收redis查询缓存发送的数据查询请求。
81.s340、根据接收到的数据查询请求进行目标数据查询,若查询到则返回目标数据,并将所述目标数据缓存至所述redis查询缓存中,并将目标数据存储至本地缓存,若不存在目标数据则反馈数据库中不存在目标数据,并将反馈内容缓存至所述redis查询缓存中。
82.当客户端发出数据查询请求时,若本地缓存、redis查询缓存以及redis加载缓存均未存储有目标数据时,则数据查询请求发送至数据库。若数据库存储有目标数据,则返回
目标数据,并将目标数据加载到redis查询缓存中,并将目标数据存储至本地缓存;若数据库未存储有目标数据,则返回数据库不存在目标数据,并将该反馈结果缓存至redis查询缓存中。
83.本实施例中,可选的,还包括:
84.接收到数据变更事件,则将所述数据变更事件同步到所述redis加载缓存;
85.根据所述数据变更事件,确定redis加载缓存中的变更数据,并删除所述变更数据;
86.若接收到所述数据变更事件提交,则进行数据库的数据更新;
87.根据所述数据变更事件的提交结果,进行redis加载缓存的数据同步更新。
88.其中,数据变更事件是由客户端发送的,数据库接收该数据变更事件,并根据该数据变更事件对数据进行修改更新,同时将该数据变更事件同步至redis加载缓存,使redis加载缓存与数据库的数据保持一致性。
89.本实施例可以在出现数据变更事件后确保缓存与数据库的数据保持一致。
90.本实施例中,可选的,还包括:
91.若接收到所述数据变更事件未提交,则不进行数据库的数据更新;
92.根据所述数据变更事件的未提交结果,进行删除变更数据的回存操作。
93.本实施例可以在出现数据变更事件因超时等原因未提交时确保缓存与数据库的数据保持一致。
94.本实施例提供一种多级分布式缓存方法,该方法包括:接收到数据查询请求时,若本地缓存中存在目标数据,则返回所述目标数据,若本地缓存中不存在目标数据,则将所述数据查询请求发送至redis查询缓存;接收所述数据查询请求,并确定所述数据查询请求的历史查询结果;若所述数据查询请求的历史查询结果为数据库中不存在目标数据,则返回所记录的数据库中不存在的结果;若存在与所述数据查询请求匹配的历史查询结果,则返回目标数据,并将目标数据存储至本地缓存;若无与所述数据查询请求匹配的历史查询结果,则将所述数据查询请求发送至redis加载缓存;根据缓存配置表预先加载数据库中的待缓存数据,并基于接收到的数据查询请求进行目标数据查询,若查询到则返回目标数据,并将所述目标数据缓存至所述redis查询缓存,并将目标数据存储至本地缓存,若不存在目标数据则发送至数据库进行查询;根据接收到的数据查询请求进行目标数据查询,若查询到则返回目标数据,并将所述目标数据缓存至所述redis查询缓存,并将目标数据存储至本地缓存,若不存在目标数据则反馈数据库中不存在目标数据,并将反馈内容缓存至所述redis查询缓存中。
95.本实施例提供的缓存方法提高了服务端的并发性能,加快了数据请求响应速度,优化了网络性能,提高了用户网络使用体验:能够适应集群环境、比单一的redis加载缓存性能更高,同时更好地减轻数据库的压力;通过定时加载任务预加载数据至redis加载缓存;在增删改数据库时,先删除缓存相关数据,再对数据库进行更新,借助事务提交状态将修改的数据同步至缓存,维护redis加载缓存与数据库的数据一致性;对查询结果做redis查询缓存,对数据库未查到的key做null的缓存,以解决缓存穿透问题;给redis加载缓存中的key加互斥锁以解决缓存击穿问题;提供缓存配置表,对使用缓存的数据库表配置不同的缓存加载时间及过期时间,解决了缓存雪崩问题。
96.注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1