CN112579650A - 基于Redis缓存的数据处理方法及*** - Google Patents
基于Redis缓存的数据处理方法及*** Download PDFInfo
- Publication number
- CN112579650A CN112579650A CN202011564956.6A CN202011564956A CN112579650A CN 112579650 A CN112579650 A CN 112579650A CN 202011564956 A CN202011564956 A CN 202011564956A CN 112579650 A CN112579650 A CN 112579650A
- Authority
- CN
- China
- Prior art keywords
- query
- redis
- key
- request
- write
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 41
- 238000012545 processing Methods 0.000 claims abstract description 47
- 238000004422 calculation algorithm Methods 0.000 claims description 8
- 230000000977 initiatory effect Effects 0.000 claims description 3
- 238000012423 maintenance Methods 0.000 abstract description 9
- 238000011161 development Methods 0.000 abstract description 8
- 238000011160 research Methods 0.000 abstract description 6
- 238000000034 method Methods 0.000 abstract description 5
- 238000004590 computer program Methods 0.000 description 9
- 238000003860 storage Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 238000000926 separation method Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 4
- 238000009826 distribution Methods 0.000 description 4
- 230000008030 elimination Effects 0.000 description 3
- 238000003379 elimination reaction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2462—Approximate or statistical queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/248—Presentation of query results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Computing Systems (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种基于Redis缓存的数据处理方法及***,其中,该基于Redis缓存的数据处理方法包括:Redis集群搭建步骤,用于搭建Redis集群,配置负载均衡策略并配置Redis注册中心;数据写入步骤,用于获取一客户端的写入请求,将所述客户端的写入请求经至少一应用实例写入到数据库中,并将该写入请求的写入key进行热点数据处理后写入到所述Redis集群中每一Redis节点的master_key;数据查询步骤,用于获取所述客户端的查询请求并基于所述负载均衡策略通过所述应用实例将所述查询请求转发到所述Redis节点和/或所述数据库中获取查询结果。通过本申请减少Redis集群配置的复杂性,降低研发运维成本。
Description
技术领域
本申请涉及互联网技术领域,特别是涉及基于Redis缓存的数据处理方法、***、计算机设备和计算机可读存储介质。
背景技术
目前的互联网环境往往伴随着高并发请求的场景,当***的用户量积攒到一定量级时,IO读写往往会成为影响***性能的关键。将热点数据写入缓存,相当于在请求和存储***中间增加一个缓冲层,减少关系型数据库的IO操作,可以显著提升***性能。目前的缓存场景大多是基于第三方中间件实现的。其中Redis作为缓存技术大军中的一员,凭借其丰富的数据结构、线程安全、淘汰策略、快照等特性,在缓存领域得到广泛使用。
现有的Redis集群缓存实现方案,都是基于主从节点、哨兵模式、哈希槽实现的。当数据量不断增大时,单个节点的性能达到瓶颈,就需要增加子节点扩大集群范围。该方案可以实现Redis集群的使用和扩展,可以作为生产方案。但是问题也比较明显,那就是配置繁琐、节点职责划分过细、链路跟踪复杂。
上述基于主从节点、哨兵模式、哈希槽实现集群的技术方案,主要是通过对查询的key进行虚拟槽位计算,找到子节点,子节点由主从节点组合而成,分别实现写和读操作,并对应更新槽点的热点数据。该技术方案中主从节点的监控和故障自动切换则由哨兵实现,使得节点分配的职责过多,开发及维护成本过高,不适用于小***使用。而基于读写分离的方式实现集群的技术方案客户端请求通过负载均衡发布到各个服务实例,使用单独的模块计算热点数据,并将热点数据分别在各个服务实例和Redis从节点中进行缓存,如此一来,使得同一份热点数据多处缓存,维护成本高;在服务实例缓存热点数据,也消耗了服务***资源。
发明内容
本申请实施例提供了一种高可用、可扩展且简化的基于Redis缓存的数据处理方法、***、计算机设备和计算机可读存储介质,减少Redis集群配置的复杂性,降低研发运维成本。
第一方面,本申请实施例提供了一种基于Redis缓存的数据处理方法,包括:
Redis集群搭建步骤,用于搭建Redis集群,配置负载均衡策略并配置Redis注册中心;
数据写入步骤,用于获取一客户端的写入请求,将所述客户端的写入请求经至少一应用实例写入到数据库中,并将所述写入请求的写入key进行热点数据处理后写入到所述Redis集群中每一Redis节点的master_key;
数据查询步骤,用于获取所述客户端的查询请求并基于所述负载均衡策略通过所述应用实例将所述查询请求转发到所述Redis节点和/或所述数据库中获取查询结果。
上述步骤,基于Redis集群实现了基于Redis缓存的读写分离的数据处理方法,Redis节点维护master_key,对主从节点的依赖关系解耦;本申请实施例的数据处理方法有效减少Redis集群配置复杂性、降低研发运维成本,可以轻松扩展应用实例和Redis节点。
在其中一些实施例中,所述数据写入步骤进一步包括:
写入请求获取步骤,用于获取所述客户端的写入请求并基于所述负载均衡策略将该写入请求转发到所述应用实例;
写入服务步骤,用于所述应用实例向所述数据库发起请求,写入数据;
写入请求热点缓存步骤,用于获取所述写入请求的写入key,通过一统计模块进行热点数据处理得到所述写入key的热点key并循环写入每一Redis节点的master_key,所述master_key不设置过期时间。通过所述统计模块实现热点数据的计算和分发。
在其中一些实施例中,所述数据查询步骤进一步包括:
查询请求获取步骤,用于基于所述负载均衡策略将客户端的查询请求转发到所述应用实例;
查询请求转发步骤,用于利用所述Redis注册中心将所述查询请求转发到Redis节点;
Redis缓存查询步骤,用于通过依次读取所述master_key中的数据获取查询结果;
数据库查询步骤,用于当所述master_key中无法获取查询结果时,将所述查询请求转发到数据库中获取查询结果;
查询请求热点缓存步骤,用于获取进入所述数据库查询步骤的查询请求的查询key,利用所述统计模块对所述查询请求进行热点数据处理得到所述查询key的热点key并循环写入每一Redis节点的master_key。
在其中一些实施例中,所述数据处理方法还包括:熔断处理步骤,用于当所述Redis集群不可用时,直接将所述查询请求转发到数据库进行数据查询。
在其中一些实施例中,所述统计模块基于LRU算法利用LinkedHashMap进行热点数据处理,以实现热点key的分发与更新,实现热点key计算及淘汰策略。LRU(Least recentlyused,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。还可以通过配置统计模块的规则主动添加热点数据至所述Redis节点。
第二方面,本申请实施例提供了一种基于Redis缓存的数据处理***,包括:
Redis集群搭建模块,用于搭建Redis集群,配置负载均衡策略并配置Redis注册中心;
数据写入模块,用于获取一客户端的写入请求,将所述客户端的写入请求经至少一应用实例写入到数据库中,并将该写入请求的写入key进行热点数据处理后写入到所述Redis集群中每一Redis节点的master_key;
数据查询模块,用于获取所述客户端的查询请求并基于所述负载均衡策略通过所述应用实例将所述查询请求转发到所述Redis节点和/或所述数据库中获取查询结果。
上述模块,基于Redis集群实现了基于Redis缓存的读写分离的数据处理方法,Redis节点维护master_key,对主从节点的依赖关系解耦;本申请实施例的数据处理方法有效减少Redis集群配置复杂性、降低研发运维成本,可以轻松扩展应用实例和Redis节点。
在其中一些实施例中,所述数据写入模块进一步包括:
写入请求获取模块,用于获取所述客户端的写入请求并基于所述负载均衡策略将该写入请求转发到所述应用实例;
写入服务模块,用于所述应用实例向所述数据库发起请求,写入数据;
写入请求热点缓存模块,用于获取所述写入请求的写入key,通过一统计模块进行热点数据处理得到所述写入key的热点key并循环写入每一Redis节点的master_key,所述master_key不设置过期时间。
在其中一些实施例中,所述数据查询模块进一步包括:
查询请求获取模块,用于基于所述负载均衡策略将客户端的查询请求转发到所述应用实例;
查询请求转发模块,用于利用所述Redis注册中心将所述查询请求转发到Redis节点;
Redis缓存查询模块,用于通过依次读取所述master_key中的数据获取查询结果;
数据库查询模块,用于当所述master_key中无法获取查询结果时,将所述查询请求转发到数据库中获取查询结果;
查询请求热点缓存模块,用于获取所述数据库查询模块中的查询请求的查询key,利用所述统计模块对所述查询请求进行热点数据处理得到所述查询key的热点key并循环写入每一Redis节点的master_key。
在其中一些实施例中,该数据处理***还包括:
熔断处理模块,用于当所述Redis集群不可用时,直接将所述查询请求转发到数据库进行数据查询。
在其中一些实施例中,所述统计模块基于LRU算法利用LinkedHashMap进行热点数据处理,以实现热点key的分发与更新。LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。本申请实施例还可以通过配置统计模块的规则主动添加热点数据至所述Redis节点。
第三方面,本申请实施例提供了一种计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面所述的基于Redis缓存的数据处理方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述第一方面所述的基于Redis缓存的数据处理方法。
相比于相关技术,本申请实施例提供的高可用、可扩展且简化的基于Redis缓存的数据处理方法、装置、***、计算机设备和计算机可读存储介质,通过减少Redis集群配置的复杂性及减少Redis集群应用组件,降低使用复杂度,从而降低研发及运维成本;实现了读写分离,可以轻松扩展应用实例和Redis节点。本申请实施例还对主从节点的依赖关系解耦。
本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的基于Redis缓存的数据处理方法的流程图;
图2是根据本申请实施例的基于Redis缓存的数据处理方法的步骤S2的分步骤流程图;
图3是根据本申请实施例的基于Redis缓存的数据处理方法的步骤S3的分步骤流程图;
图4是根据本申请实施例的基于Redis缓存的数据处理方法的原理图;
图5是根据本申请优选实施例的基于Redis缓存的数据处理方法的步骤S2的分步骤流程原理图;
图6是根据本申请优选实施例的基于Redis缓存的数据处理方法的步骤S3的分步骤流程原理图;
图7是根据本申请实施例的基于Redis缓存的数据处理***的结构框图。
附图说明:
1、Redis集群搭建模块;2、数据写入模块;3、数据查询模块;
201、写入请求获取模块;202、写入服务模块;
203、写入请求热点缓存模块;301、查询请求获取模块;
302、查询请求转发模块;303、熔断处理模块;304、Redis缓存查询模块;
305、数据库查询模块;306、查询请求热点缓存模块。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
显而易见地,下面描述中的附图仅仅是本申请的一些示例或实施例,对于本领域的普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图将本申请应用于其他类似情景。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、***、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本申请所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
本实施例提供了一种基于Redis缓存的数据处理方法。图1-3是根据本申请实施例的基于Redis缓存的数据处理方法的流程图,图4是根据本申请优选实施例的基于Redis缓存的数据处理方法的原理图,如图1-3、4所示,该流程包括如下步骤:
Redis集群搭建步骤S1,用于搭建Redis集群,配置负载均衡策略并配置Redis注册中心;
数据写入步骤S2,用于获取一客户端的写入请求,将客户端的写入请求经至少一应用实例写入到数据库中,并将该写入请求的写入key进行热点数据处理后写入到所述Redis集群中每一Redis节点的master_key;
数据查询步骤S3,用于获取客户端的查询请求并基于负载均衡策略通过应用实例将查询请求转发到Redis节点和/或数据库中获取查询结果。
在其中一些实施例中,数据写入步骤S2进一步包括:
写入请求获取步骤S201,用于获取客户端的写入请求并基于负载均衡策略将该写入请求转发到应用实例;
写入服务步骤S202,用于应用实例向数据库发起请求,写入数据;
写入请求热点缓存步骤S203,用于获取写入请求的写入key,通过一统计模块进行热点数据处理得到写入key的热点key并循环写入每一Redis节点的master_key,master_key不设置过期时间。通过统计模块实现热点数据的计算和分发。
在其中一些实施例中,数据查询步骤S3进一步包括:
查询请求获取步骤S301,用于基于负载均衡策略将客户端的查询请求转发到应用实例;
查询请求转发步骤S302,用于利用Redis注册中心将查询请求转发到Redis节点;
熔断处理步骤S303,用于当Redis集群不可用时,直接将查询请求转发到数据库进行数据查询。
Redis缓存查询步骤S304,用于通过依次读取master_key中的数据获取查询结果;
数据库查询步骤S305,用于当master_key中无法获取查询结果时,将查询请求转发到数据库中获取查询结果,相应的,若master_key中直接查询到查询结果,则本步骤可跳过;
查询请求热点缓存步骤S306,用于获取进入数据库查询步骤的查询请求的查询key,利用统计模块对查询请求进行热点数据处理得到查询key的热点key并循环写入每一Redis节点的master_key。具体的,统计模块基于LRU算法利用LinkedHashMap进行热点数据处理,以实现热点key的分发与更新,实现热点key计算及淘汰策略。可选的,本申请实施例还可以通过配置该统计模块的规则主动添加热点数据至Redis节点。
基于上述步骤,本申请实施例基于Redis集群实现了基于Redis缓存的读写分离的数据处理方法,Redis节点维护master_key,对主从节点的依赖关系解耦;本申请实施例的数据处理方法有效减少Redis集群配置复杂性、降低研发运维成本,可以轻松扩展应用实例和Redis节点。
下面通过优选实施例对本申请实施例进行描述和说明。
图5是根据本申请优选实施例的基于Redis缓存的数据处理方法的步骤S2的分步骤流程原理图;如图5所示,本申请实施例的基于Redis缓存的数据处理方法的步骤S2包括如下步骤:
步骤S501,基于负载均衡策略将客户端的写入请求转发到具体的应用实例上;
步骤S502,应用实例根据该写入请求请求数据库DB写入数据;
步骤S503,完成数据写入后,该写入请求对应数据存在于数据库DB中,将该写入key利用LinkedHashMap进行热点数据处理并循环写入每一个Redis节点的master_key,这类热点数据不设置过期时间。
图6是根据本申请优选实施例的基于Redis缓存的数据处理方法的步骤S3的分步骤流程原理图,如图6所示,该基于Redis缓存的数据处理方法包括如下步骤:
步骤S601,根据配置的负载均衡策略将客户端的查询请求转发到具体的应用实例上;
步骤S602,利用Redis注册中心访问Redis节点,将查询请求转发到Redis节点上;
步骤S603,利用Redis注册中心访问Redis确认是否成功将查询请求转发到Redis节点上,若没有成功转发,则满足熔断处理条件,将查询请求直接转发到数据库DB进行数据查询;
步骤S604,若成功转发查询请求,则根据该查询请求的查询条件读取Redis节点的master_key上的数据,返回查询结果;
步骤S605,当master_key上的数据为空时,将查询请求转发到数据库DB进行查询;
步骤S606,将步骤S605的查询请求经过统计模块进行热点数据分析计算后循环写入每一个Redis节点的master_key,这类热点数据同样不设置过期时间。
需要说明的是,在上述流程中或者附图的流程图中示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本实施例还提供了一种基于Redis缓存的数据处理***,该***用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”、“单元”、“子单元”等可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图7是根据本申请实施例的基于Redis缓存的数据处理***的结构框图,参考图7所示,该***包括:
Redis集群搭建模块1,用于搭建Redis集群,配置负载均衡策略并配置Redis注册中心;
数据写入模块2,用于获取一客户端的写入请求,将客户端的写入请求经至少一应用实例写入到数据库中,并将该写入请求的写入key进行热点数据处理后写入到所述Redis集群中每一Redis节点的master_key;
数据查询模块3,用于获取客户端的查询请求并基于负载均衡策略通过应用实例将查询请求转发到Redis节点和/或数据库中获取查询结果。
其中,数据写入模块2进一步包括:写入请求获取模块201,用于获取客户端的写入请求并基于负载均衡策略将该写入请求转发到应用实例;写入服务模块202,用于应用实例向数据库发起请求,写入数据;写入请求热点缓存模块203,用于获取写入请求的写入key,通过一统计模块进行热点数据处理得到写入key的热点key并循环写入每一Redis节点的master_key,master_key不设置过期时间。
其中,数据查询模块3进一步包括:查询请求获取模块301,用于基于负载均衡策略将客户端的查询请求转发到应用实例;查询请求转发模块302,用于利用Redis注册中心将查询请求转发到Redis节点;熔断处理模块303,用于当Redis集群不可用时,直接将查询请求转发到数据库进行数据查询;Redis缓存查询模块304,用于通过依次读取master_key中的数据获取查询结果;数据库查询模块305,用于当master_key中无法获取查询结果时,将查询请求转发到数据库中获取查询结果,相应的,若master_key中直接查询到查询结果,则本模块不予执行。查询请求热点缓存模块306,用于获取数据库查询模块中的查询请求的查询key,利用统计模块对查询请求进行热点数据处理得到查询key的热点key并循环写入每一Redis节点的master_key。具体的,统计模块基于LRU算法利用LinkedHashMap进行热点数据处理,以实现热点key的分发与更新。可选的,本申请实施例还可以通过配置统计模块的规则主动添加热点数据至Redis节点。
基于上述模块,本申请基于Redis集群实现了基于Redis缓存的读写分离的数据处理方法,Redis节点维护master_key,对主从节点的依赖关系解耦;本申请实施例的数据处理方法有效减少Redis集群配置复杂性、降低研发运维成本,可以轻松扩展应用实例和Redis节点。
需要说明的是,上述各个模块可以是功能模块也可以是程序模块,既可以通过软件来实现,也可以通过硬件来实现。对于通过硬件来实现的模块而言,上述各个模块可以位于同一处理器中;或者上述各个模块还可以按照任意组合的形式分别位于不同的处理器中。
另外,结合图1描述的本申请实施例基于Redis缓存的数据处理方法可以由计算机设备来实现。计算机设备可以包括处理器以及存储有计算机程序指令的存储器。
具体地,上述处理器可以包括中央处理器(CPU),或者特定集成电路(ApplicationSpecific Integrated Circuit,简称为ASIC),或者可以被配置成实施本申请实施例的一个或多个集成电路。
其中,存储器可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器可包括硬盘驱动器(Hard Disk Drive,简称为HDD)、软盘驱动器、固态驱动器(SolidState Drive,简称为SSD)、闪存、光盘、磁光盘、磁带或通用串行总线(Universal SerialBus,简称为USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器可在数据处理装置的内部或外部。在特定实施例中,存储器是非易失性(Non-Volatile)存储器。在特定实施例中,存储器包括只读存储器(Read-Only Memory,简称为ROM)和随机存取存储器(Random AccessMemory,简称为RAM)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(Programmable Read-Only Memory,简称为PROM)、可擦除PROM(Erasable ProgrammableRead-Only Memory,简称为EPROM)、电可擦除PROM(Electrically Erasable ProgrammableRead-Only Memory,简称为EEPROM)、电可改写ROM(Electrically Alterable Read-OnlyMemory,简称为EAROM)或闪存(FLASH)或者两个或更多个以上这些的组合。在合适的情况下,该RAM可以是静态随机存取存储器(Static Random-Access Memory,简称为SRAM)或动态随机存取存储器(Dynamic Random Access Memory,简称为DRAM),其中,DRAM可以是快速页模式动态随机存取存储器(Fast Page Mode Dynamic Random Access Memory,简称为FPMDRAM)、扩展数据输出动态随机存取存储器(Extended Date Out Dynamic RandomAccess Memory,简称为EDODRAM)、同步动态随机存取内存(Synchronous Dynamic Random-Access Memory,简称SDRAM)等。
存储器可以用来存储或者缓存需要处理和/或通信使用的各种数据文件,以及处理器所执行的可能的计算机程序指令。
处理器通过读取并执行存储器中存储的计算机程序指令,以实现上述实施例中的任意一种基于Redis缓存的数据处理方法。
另外,结合上述实施例中的基于Redis缓存的数据处理方法,本申请实施例可提供一种计算机可读存储介质来实现。该计算机可读存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种基于Redis缓存的数据处理方法。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种基于Redis缓存的数据处理方法,其特征在于,包括:
Redis集群搭建步骤,用于搭建Redis集群,配置负载均衡策略并配置Redis注册中心;
数据写入步骤,用于获取一客户端的写入请求,将所述客户端的写入请求经至少一应用实例写入到数据库中,并将所述写入请求的写入key进行热点数据处理后写入到所述Redis集群中每一Redis节点的master_key;
数据查询步骤,用于获取所述客户端的查询请求并基于所述负载均衡策略通过所述应用实例将所述查询请求转发到所述Redis节点和/或所述数据库中获取查询结果。
2.根据权利要求1所述的基于Redis缓存的数据处理方法,其特征在于,所述数据写入步骤进一步包括:
写入请求获取步骤,用于获取所述客户端的写入请求并基于所述负载均衡策略将该写入请求转发到所述应用实例;
写入服务步骤,用于所述应用实例向所述数据库发起请求,写入数据;
写入请求热点缓存步骤,用于获取所述写入请求的写入key,通过一统计模块进行热点数据处理得到所述写入key的热点key并循环写入每一所述Redis节点的master_key,所述master_key不设置过期时间。
3.根据权利要求1所述的基于Redis缓存的数据处理方法,其特征在于,所述数据查询步骤进一步包括:
查询请求获取步骤,用于基于所述负载均衡策略将客户端的查询请求转发到所述应用实例;
查询请求转发步骤,用于利用所述Redis注册中心将所述查询请求转发到Redis节点;
Redis缓存查询步骤,用于通过依次读取所述master_key中的数据获取查询结果;
数据库查询步骤,用于当所述master_key中无法获取查询结果时,将所述查询请求转发到数据库中获取查询结果;
查询请求热点缓存步骤,用于获取进入所述数据库查询步骤的查询请求的查询key,利用所述统计模块对所述查询请求进行热点数据处理得到所述查询key的热点key并循环写入每一Redis节点的master_key。
4.根据权利要求1所述的基于Redis缓存的数据处理方法,其特征在于,还包括:
熔断处理步骤,用于当所述Redis集群不可用时,直接将所述查询请求转发到数据库进行数据查询。
5.根据权利要求2或3所述的基于Redis缓存的数据处理方法,其特征在于,所述统计模块基于LRU算法利用LinkedHashMap进行热点数据处理。
6.一种基于Redis缓存的数据处理***,其特征在于,包括:
Redis集群搭建模块,用于搭建Redis集群,配置负载均衡策略并配置Redis注册中心;
数据写入模块,用于获取一客户端的写入请求,将所述客户端的写入请求经至少一应用实例写入到数据库中,并将该写入请求的写入key进行热点数据处理后写入到所述Redis集群中每一Redis节点的master_key;
数据查询模块,用于获取所述客户端的查询请求并基于所述负载均衡策略通过所述应用实例将所述查询请求转发到所述Redis节点和/或所述数据库中获取查询结果。
7.根据权利要求6所述的基于Redis缓存的数据处理***,其特征在于,所述数据写入模块进一步包括:
写入请求获取模块,用于获取所述客户端的写入请求并基于所述负载均衡策略将该写入请求转发到所述应用实例;
写入服务模块,用于所述应用实例向所述数据库发起请求,写入数据;
写入请求热点缓存模块,用于获取所述写入请求的写入key,通过一统计模块进行热点数据处理得到所述写入key的热点key并循环写入每一Redis节点的master_key,所述master_key不设置过期时间。
8.根据权利要求6所述的基于Redis缓存的数据处理***,其特征在于,所述数据查询模块进一步包括:
查询请求获取模块,用于基于所述负载均衡策略将客户端的查询请求转发到所述应用实例;
查询请求转发模块,用于利用所述Redis注册中心将所述查询请求转发到Redis节点;
Redis缓存查询模块,用于通过依次读取所述master_key中的数据获取查询结果;
数据库查询模块,用于当所述master_key中无法获取查询结果时,将所述查询请求转发到数据库中获取查询结果;
查询请求热点缓存模块,用于获取所述数据库查询模块中的查询请求的查询key,利用所述统计模块对所述查询请求进行热点数据处理得到所述查询key的热点key并循环写入每一Redis节点的master_key。
9.根据权利要求6所述的基于Redis缓存的数据处理***,其特征在于,还包括:
熔断处理模块,用于当所述Redis集群不可用时,直接将所述查询请求转发到数据库进行数据查询。
10.根据权利要求7或8所述的基于Redis缓存的数据处理***,其特征在于,所述统计模块基于LRU算法利用LinkedHashMap进行热点数据处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011564956.6A CN112579650A (zh) | 2020-12-25 | 2020-12-25 | 基于Redis缓存的数据处理方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011564956.6A CN112579650A (zh) | 2020-12-25 | 2020-12-25 | 基于Redis缓存的数据处理方法及*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112579650A true CN112579650A (zh) | 2021-03-30 |
Family
ID=75140608
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011564956.6A Pending CN112579650A (zh) | 2020-12-25 | 2020-12-25 | 基于Redis缓存的数据处理方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112579650A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113377817A (zh) * | 2021-06-28 | 2021-09-10 | 深圳市华曦达科技股份有限公司 | 数据处理方法、***、设备及存储介质 |
CN117851456A (zh) * | 2024-01-05 | 2024-04-09 | 迪爱斯信息技术股份有限公司 | 一种集群中数据共享方法、***和服务端 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108183961A (zh) * | 2018-01-04 | 2018-06-19 | 中电福富信息科技有限公司 | 一种基于Redis的分布式缓存方法 |
US20180210834A1 (en) * | 2017-01-20 | 2018-07-26 | Mz Ip Holdings, Llc | Systems and methods for reconstructing cache loss |
CN108614847A (zh) * | 2016-12-30 | 2018-10-02 | 北京京东尚科信息技术有限公司 | 一种数据的缓存方法及*** |
CN109753244A (zh) * | 2018-12-29 | 2019-05-14 | 北京奥鹏远程教育中心有限公司 | 一种Redis集群的应用方法 |
CN110012098A (zh) * | 2019-04-04 | 2019-07-12 | 浙江工业大学 | 一种web高并发访问处理***及方法 |
CN110933139A (zh) * | 2019-11-05 | 2020-03-27 | 浙江工业大学 | 一种解决Web服务器高并发的***及方法 |
CN111212145A (zh) * | 2020-01-09 | 2020-05-29 | 国网福建省电力有限公司 | 一种用于供电服务指挥***的Redis集群 |
CN111324462A (zh) * | 2020-02-20 | 2020-06-23 | 杭州梦视网络科技有限公司 | 一种具有Web负载均衡技术的***及方法 |
-
2020
- 2020-12-25 CN CN202011564956.6A patent/CN112579650A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108614847A (zh) * | 2016-12-30 | 2018-10-02 | 北京京东尚科信息技术有限公司 | 一种数据的缓存方法及*** |
US20180210834A1 (en) * | 2017-01-20 | 2018-07-26 | Mz Ip Holdings, Llc | Systems and methods for reconstructing cache loss |
CN108183961A (zh) * | 2018-01-04 | 2018-06-19 | 中电福富信息科技有限公司 | 一种基于Redis的分布式缓存方法 |
CN109753244A (zh) * | 2018-12-29 | 2019-05-14 | 北京奥鹏远程教育中心有限公司 | 一种Redis集群的应用方法 |
CN110012098A (zh) * | 2019-04-04 | 2019-07-12 | 浙江工业大学 | 一种web高并发访问处理***及方法 |
CN110933139A (zh) * | 2019-11-05 | 2020-03-27 | 浙江工业大学 | 一种解决Web服务器高并发的***及方法 |
CN111212145A (zh) * | 2020-01-09 | 2020-05-29 | 国网福建省电力有限公司 | 一种用于供电服务指挥***的Redis集群 |
CN111324462A (zh) * | 2020-02-20 | 2020-06-23 | 杭州梦视网络科技有限公司 | 一种具有Web负载均衡技术的***及方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113377817A (zh) * | 2021-06-28 | 2021-09-10 | 深圳市华曦达科技股份有限公司 | 数据处理方法、***、设备及存储介质 |
CN117851456A (zh) * | 2024-01-05 | 2024-04-09 | 迪爱斯信息技术股份有限公司 | 一种集群中数据共享方法、***和服务端 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20160112516A1 (en) | Distributed storage system, cluster node and range management method thereof | |
US20190347167A1 (en) | Primary Node-Standby Node Data Transmission Method, Control Node, and Database System | |
CN104935654A (zh) | 一种服务器集群***中的缓存方法、写入点客户端和读客户端 | |
CN108829720B (zh) | 数据处理方法及装置 | |
US20200349113A1 (en) | File storage method, deletion method, server and storage medium | |
CN107241444B (zh) | 一种分布式缓存数据管理***、方法及装置 | |
US20210185142A1 (en) | Cache storage for streaming data | |
US9213501B2 (en) | Efficient storage of small random changes to data on disk | |
CN112579650A (zh) | 基于Redis缓存的数据处理方法及*** | |
CN114443364B (zh) | 一种分布式块存储数据处理方法、装置、设备及存储介质 | |
CN113010549A (zh) | 基于异地多活***的数据处理方法、相关设备及存储介质 | |
CN109165321B (zh) | 一种基于非易失内存的一致性哈希表构建方法和*** | |
CN107943615B (zh) | 基于分布式集群的数据处理方法与*** | |
CN112925828A (zh) | 一种分布式多节点查询方法和*** | |
CN114003662A (zh) | 基于缓存策略的区块链性能优化机制 | |
CN117473011A (zh) | 数据同步方法、装置以及混合缓存*** | |
CN111611223A (zh) | 非易失性数据的访问方法、***、电子设备和介质 | |
CN114785662B (zh) | 一种存储管理方法、装置、设备及机器可读存储介质 | |
CN112130747A (zh) | 分布式对象存储***及数据读写方法 | |
CN115794819A (zh) | 一种数据写入方法及电子设备 | |
CN114428681A (zh) | 数据库***的计算能力扩容方法及装置 | |
CN113867626A (zh) | 一种存储***性能优化方法、***、设备和存储介质 | |
CN109558205B (zh) | 磁盘访问方法及装置 | |
CN117539915B (zh) | 一种数据处理方法及相关装置 | |
CN113645261A (zh) | 一种会话数据处理方法、装置、存储介质和计算机设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |