一种Redis内存数据库刷新的方法技术

技术编号:13429962 阅读:630 留言:0更新日期:2016-07-30 00:36
本发明专利技术公开一种Redis内存数据库刷新的方法,属于数据管理领域;本发明专利技术中Oracle‑Redis作为系统写库和读库将增量数据写入Redis,Redis作为系统的读库,针对不同的数据读取查询场景进行数据同步,并进行自身的主从数据同步;本发明专利技术实现读写分离,Oracle数据库作为写入的数据库,Redis作为读取的数据库,有效提高数据的查询读取速度;解决Oracle‑Reids以及Redis自身的数据同步问题,减轻系统负载,提升数据的查询读取速度,降低对产品性能的影响,增强系统的高可用性。

【技术实现步骤摘要】


本专利技术公开一种Redis内存数据库刷新的方法,属于数据管理领域。

技术介绍

目前移动通信网管产品AcrossPM中使用Oracle数据库,Oracle是关系型数据库,可以进行高性能数据查询,但为满足报表查询和后台处理的需要,同时为了减少Oracle数据库压力,可以使用Redis内存数据库技术,作为缓存数据的存储数据库。Oracle是关系型数据库,Redis是K/V数据库,两者各有不同的应用领域几乎不能对比,Redis虽然性能比Oracle要高,但它同时牺牲了很多有用的功能,所以要完全用Redis替换关系型数据库是非常困难的,但两者可以共存使用互补不足。Oracle数据库作为写入的数据库,Redis作为读取的数据库,做到读写分离。这就涉及到数据同步的问题,而同步包括两个方面:Oracle-Reids的数据同步和Redis的主从数据同步,当前Redis内存数据库跟Oracle数据库的同步方式为全量同步,然而全量同步数据的读取查询速度较慢,影响产品性能的发挥。本专利技术提供一种Redis内存数据库刷新的方法,实现读写分离,Oracle数据库作为写入的数据库,Redis作为读取的数据库,有效提高数据的查询读取速度;解决Oracle-Reids以及Redis自身的数据同步问题,减轻系统负载,提升数据的查询读取速度,降低对产品性能的影响,增强系统的高可用性。
Redis使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、key-value数据库,并提供多种预研的API。Redis可以每间隔一定时间将内存中数据写入到磁盘以防止数据丢失。Redis目前支持两种持久化方式:Snapshotting(快照)也是默认方式,可以通过配置设置自动做快照持久化的方式;Append-onlyfile,缩写为aof的方式,aof比快照方式有更好的持久化性,在使用aof持久化方式时,Redis将每一个收到的写命令都通过write函数追加到文件中。当Redis重启时会通过重新执行文件中保存的写命令来在内存中重建整个数据库的内容。

技术实现思路

本专利技术提供一种Redis内存数据库刷新的方法,实现读写分离,Oracle数据库作为写入的数据库,Redis作为读取的数据库,有效提高数据的查询读取速度,增强系统的可用性。
本专利技术提出的具体方案是:
一种Redis内存数据库刷新的方法,Oracle-Redis作为系统写库和读库将增量数据写入Redis,Redis作为系统的读库,针对不同的数据读取查询场景进行数据同步,并进行自身的主从数据同步:
Oracle-Redis利用Pub/Sub功能复制增量数据到多个Redis,而Redis读库利用Master端写入数据时,启动Slave端进程,其向Master发送一个SYNCCommand,请求同步连接,Master将数据快照保存到数据文件中,同时Master记录所有修改数据的命令并缓存在数据文件中,完成缓存后,Master发送数据文件给Slave端,Slave执行相同的操作确保数据一致,实现主从数据同步。
Redis作为系统的读库,针对数据读取查询常见应用场景,先在Redis中判断数据是否存在,如果存在,直接返回缓存好的数据;否则去数据库中,读取数据,并把数据缓存到Redis中。
所述Redis作为系统的读库,针对数据读取查询大数据频繁变动场景,先在Redis中判断数据是否存在,如果存在,直接更新对应的数据并把更新后的数据返回;否则先更新数据库中内容,然后把数据保存一份到Redis中。
所述Redis读库利用Master端写入数据时,同一个Master对应多个Slaves发送的SYNCCommand,请求同步连接,Master启动一个进程保存数据文件,然后将其发送给所有的Slave。
所述多个Slave提供只读查询与数据的冗余,Master端专门提供写操作。
Master下的Slave接受同一架构中其它Slave的链接与同步请求,进行数据的级联复制。
本专利技术的有益之处是:
本专利技术中Oracle-Redis作为系统写库和读库将增量数据写入Redis,Redis作为系统的读库,针对不同的数据读取查询场景进行数据同步,并进行自身的主从数据同步:Oracle-Redis利用Pub/Sub功能复制增量数据到多个Redis,而Redis读库利用Master端写入数据时,启动Slave端进程,其向Master发送一个SYNCCommand,请求同步连接,Master将数据快照保存到数据文件中,同时Master记录所有修改数据的命令并缓存在数据文件中,完成缓存后,Master发送数据文件给Slave端,Slave执行相同的操作确保数据一致,实现主从数据同步实现读写分离,Oracle数据库作为写入的数据库,Redis作为读取的数据库,有效提高数据的查询读取速度;解决Oracle-Reids以及Redis自身的数据同步问题,减轻系统负载,提升数据的查询读取速度,降低对产品性能的影响,增强系统的高可用性。
附图说明
图1本专利技术Oracle-Redis数据库应用层同步示意图;
图2本专利技术Redis内存数据库应用场景一示意图;
图3本专利技术Redis内存数据库应用场景二示意图;
图4本专利技术Redis读写分离过程示意图。
具体实施方式
结合附图,对本专利技术做进一步说明。
一种Redis内存数据库刷新的方法,Oracle-Redis作为系统写库和读库将增量数据写入Redis,Redis作为系统的读库,针对不同的数据读取查询场景进行数据同步,并进行自身的主从数据同步:
Oracle-Redis利用Pub/Sub功能复制增量数据到多个Redis,而Redis读库利用Master端写入数据时,启动Slave端进程,其向Master发送一个SYNCCommand,请求同步连接,Master将数据快照保存到数据文件中,同时Master记录所有修改数据的命令并缓存在数据文件中,完成缓存后,Master发送数据文件给Slave端,Slave端可以将数据文件保存到硬盘上,然后将其在加载到内存中,Slave会执行相同的操作确保数据一致,实现主从数据同步。
上述数据读取查询场景中,针对数据读取查询常见应用场景时,适用数据量比较大,但不是经常更新的情况,先判断key是否存在,即先在Redis中判断数据是否存在,如果存在,直接返回缓存好的数据;否则去数据库中,读取数据,并把数据缓存到Redis中;
针对数据读取查询大数据频繁变动场景,适用经常更新的情况,先判断key是否存在,即先在Redis中判断数据是否存在,如果存在,直接更新对应的数据并把更新后的数据返回,比如把对应更新过的key记录下来,保存到redis中,方便同步时检索信息,key可以为save_update_keys,并把更新后的数据返回;否则先更新数据库中内容,然后把数据保存一份到Redis中,后台把Redis中的save_update_keys存储的key,分别读取出来,找到对应的数据,更新到数据库中。
其中Redis读库利用Master端写入数据,同一个Master可以对应多个Slaves发送的SYNCC本文档来自技高网
...

【技术保护点】
一种Redis内存数据库刷新的方法,其特征是Oracle‑Redis作为系统写库和读库将增量数据写入Redis,Redis作为系统的读库,针对不同的数据读取查询场景进行数据同步,并进行自身的主从数据同步:Oracle‑Redis利用Pub/Sub功能复制增量数据到多个Redis,而Redis读库利用Master端写入数据时,启动Slave端进程,其向Master发送一个SYNC Command,请求同步连接,Master将数据快照保存到数据文件中,同时Master记录所有修改数据的命令并缓存在数据文件中,完成缓存后,Master发送数据文件给Slave端,Slave执行相同的操作确保数据一致,实现主从数据同步。

【技术特征摘要】
1.一种Redis内存数据库刷新的方法,其特征是Oracle-Redis作为系统写库和读库将增量数据写入Redis,Redis作为系统的读库,针对不同的数据读取查询场景进行数据同步,并进行自身的主从数据同步:
Oracle-Redis利用Pub/Sub功能复制增量数据到多个Redis,而Redis读库利用Master端写入数据时,启动Slave端进程,其向Master发送一个SYNCCommand,请求同步连接,Master将数据快照保存到数据文件中,同时Master记录所有修改数据的命令并缓存在数据文件中,完成缓存后,Master发送数据文件给Slave端,Slave执行相同的操作确保数据一致,实现主从数据同步。
2.根据权利要求1所述的方法,其特征是Redis作为系统的读库,针对数据读取查询常见应用场景,先在Redis中判断数据是否存在,如果存在,直接返回缓存好的数据;否则去数据库中,读取...

【专利技术属性】
技术研发人员:孙学志李建明
申请(专利权)人:浪潮通信信息系统有限公司
类型:发明
国别省市:山东;37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1