基于Redis的数据调用方法及其系统与流程

文档序号:17502422发布日期:2019-04-23 23:48阅读:358来源:国知局
基于Redis的数据调用方法及其系统与流程

本发明涉及数据处理领域,具体涉及基于Redis的数据调用方法及其系统。



背景技术:

WEB站点的缓存技术基本都是采用:业务逻辑层+Memcache缓存层+数据层,其中Memcache缓存层为临时缓存,服务器会周期性的清空Memcache缓存层内的数据,或者重新启动系统时Memcache缓存层内的数据也会清空。对于数据请求量大的情况,一旦Memcache缓存层失效就需要各个业务逻辑层直接去数据层查询数据,这就直接导致数据库服务器压力非常大,甚至会产生响应慢和锁死的情况。另外Memcache缓存层失效,就会产生更多的请求去调用数据库服务器,造成数据库服务器的各组服务器压力增大,产生响应慢的情况。



技术实现要素:

本发明的目的是提供一种基于Redis的数据调用方法及其系统,缩短调取数据库的数据响应时间,缓解数据库服务器与数据库的压力,从而增加系统的数据调用速度。

本发明的目的是通过以下技术方案来实现:

一种基于Redis的数据调用方法包括:

业务层触发数据查询指令或者数据修改指令;

若业务层触发数据查询指令,则业务层访问Redis服务器,并查询相关数据;

若业务层触发数据修改指令,则业务层访问Java服务器,所述Java服务器分别对服务器数据库与Redis服务器进行相同的数据变更;

所述若业务层触发数据修改指令,则业务层访问Java服务器包括:所述业务层触发客户端发来的指令为数据增加指令、数据删除指令或数据变更指令,对相关的数据进行增加、删除或变更,则业务层访问Java服务器进行相关操作;

若业务层触发数据增加指令,则业务层访问Java服务器,所述Java服务器分别对服务器数据库与Redis服务器进行相同的数据增加,将新建的数据或者补充的数据增加的到服务器数据库与Redis服务器中进行储存。

若业务层触发数据删除指令,则业务层访问Java服务器,所述Java服务器分别对服务器数据库与Redis服务器进行相同的数据删除,将服务器数据库与Redis服务器中删除相同的数据。

若业务层触发数据变更指令,则业务层访问Java服务器,所述Java服务器分别对服务器数据库与Redis服务器进行相同的数据变更,将服务器数据库与Redis服务器中替换或修改相同的数据。

进一步的,所述业务层触发数据查询指令或者数据修改指令包括:所述业务层接收客户端的指令后,触发数据查询指令或者数据修改指令。

进一步的,所述若业务层触发数据查询指令,则业务层访问Redis服务器,并查询相关数据包括:所述业务层触发客户端发来的指令为数据查询指令,则业务层访问Redis服务器,查询所述Redis服务器内的相关数据。

进一步的,所述业务层访问Java服务器进行相关操作包括:

触发数据增加指令,业务层访问Java服务器,所述Java服务器分别对服务器数据库与Redis服务器进行相同数据的增加储存;

触发数据删除指令,业务层访问Java服务器,所述Java服务器分别对服务器数据库与Redis服务器进行相同数据的删除;

触发数据变更指令,业务层访问Java服务器,所述Java服务器分别对服务器数据库与Redis服务器进行相同数据的覆盖变更。

一种基于Redis的数据调用系统,用于执行如上所述的数据调用方法,包括:

业务层服务器,用于发布数据查询指令或数据修改指令;

服务器数据库,用于存储数据;

Redis服务器,与所述服务器数据库储存相同的数据,用于接收所述数据查询指令并做出相应的反应;

Java服务器,接收所述数据修改指令,并对服务器数据库与Redis服务器进行相同的数据变更。

进一步的,所述业务层服务器包括PHP业务服务器和/或.NET业务服务器。

进一步的,所述Java服务器包括以下模块:

数据增加模块,接收所述数据修改指令,向服务器数据库与Redis服务器中增加相对应的数据;

数据变更模块,接收所述数据修改指令,向服务器数据库与Redis服务器中变更相对应的数据;

数据删除模块,接收所述数据修改指令,向服务器数据库与Redis服务器中删除相对应的数据。

本发明的有益效果为:数据库服务器的各个业务层查询用户数据请求,只需要从Redis服务器中读取数据,从而降低了数据库的压力,缩短调取数据库的数据响应时间,增加系统的数据调用速度。需要新增、修改和删除数据的时候会对Redis服务器和数据库进行双写操作,通过将Redis服务器用作替代缓存的前置数据库,它和Sqlserve,Mysql数据库是并存的,并且数据是一致的。如果Redis服务器出现故障导致数据丢失,这时需要把数据库中的全部数据或者部分数据读取出来重新写入到Redis服务器,实现Redis和数据库的数据一致性。

附图说明

下面根据附图对本发明作进一步详细说明。

图1是本发明实施例所述基于Redis的数据调用系统的结构框图,图中的实线箭头为可实现写入数据操作,图中的虚线箭头为可实现读取数据操作。

具体实施方式

本发明实施例所述的一种基于Redis的数据调用方法包括:

所述业务层接收客户端的指令后,触发数据查询指令或者数据修改指令,业务层包括PHP业务层与.NET业务层,网站项目并不局限于一种开发语言和架构环境,因此在一个大项目中会有多种开发语言的业务层并存,但是这些业务层访问的数据源是一致的,PHP业务层与.NET业务层的功能相同,都有新增、删除、修改、查询的操作。

用户登录平台发布指令,业务层接收指令并选择触发数据查询指令或数据修改指令,其中数据修改指令包括数据增加指令、数据删除指令或数据变更指令。

若业务层触发数据查询指令,则业务层访问Redis服务器,并查询Redis服务器内需要查询的数据。

若业务层触发数据增加指令,则业务层访问Java服务器,所述Java服务器分别对服务器数据库与Redis服务器进行相同的数据增加,将新建的数据或者补充的数据增加的到服务器数据库与Redis服务器中进行储存。

若业务层触发数据删除指令,则业务层访问Java服务器,所述Java服务器分别对服务器数据库与Redis服务器进行相同的数据删除,将服务器数据库与Redis服务器中删除相同的数据。

若业务层触发数据删除指令,则业务层访问Java服务器,所述Java服务器分别对服务器数据库与Redis服务器进行相同的数据变更,将服务器数据库与Redis服务器中替换或修改相同的数据。

如图1所示,一种基于Redis的数据调用系统包括:

业务层服务器1,所述业务层服务器1包括PHP业务服务器和/或.NET业务服务器,用于发布数据查询指令或数据变更指令;

服务器数据库4,用于存储数据;

Redis服务器2,与所述服务器数据库4储存相同的数据,用于接收所述数据查询指令并做出相应的反应;

Java服务器3,接收所述数据修改指令,并对服务器数据库4与Redis服务器2进行相同的数据变更。

所述Java服务器3包括以下模块:

数据增加模块,接收业务层服务器发来的数据增加指令,向服务器数据库4与Redis服务器2中新建增加或补充相同的数据;

数据变更模块,接收业务层服务器发来的数据增加指令,向服务器数据库4与Redis服务器2中修改或替换相同的数据;

数据删除模块,接收业务层服务器发来的数据增加指令,向服务器数据库4与Redis服务器2中删除相同的数据。

工作中,业务层大部分触发的指令为数据查询指令,各个业务层(.net业务层或php业务层)查询用户数据请求只从Redis服务器中查询数据,由于Redis服务器与服务器数据库的数据统一同步,因此不会直接从数据库查询数据,并且不会通过java服务器获取数据,从而缓解数据库压力以及Java服务器压力。只有当业务层触发的指令为数据修改指令后,需要进行新增、修改和删除数据时,java服务器才会对Redis服务器和服务器数据库进行双写操作,这个双写操作过程在Java服务器完成,从而实现Redis服务器和服务器数据库的数据一致性,在整个过程中Redis服务器可以被看作是替代缓存的跟服务器数据库保持数据同步一致的前置数据库。本发明使Java服务器内的Member应用组由原来的9台服务器缩减至4台服务器,每台服务器由原来的同一时间占用平均连接数16000次降至3800次。数据库的高峰时段cpu使用率也由之前的60%-90%降到10%-40%。

本发明不局限于上述最佳实施方式,任何人在本发明的启示下都可得出其他各种形式的产品,但不论在其形状或结构上作任何变化,凡是具有与本申请相同或相近似的技术方案,均落在本发明的保护范围之内。

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