一种数据读取方法及装置与流程

专利检索2026-07-15  11


本申请涉及数据库领域,特别是指一种数据读取方法及装置。


背景技术:

1、当前已迈入了互联网时代,随着用户数量的增长,数据的访问量和存储量也呈指数倍增长。高并发指在同一个时间点,有许多用户同时访问统一资源定位符(uniformresource locator,url)地址,高并发会导致站点服务器和数据库服务器资源被占满崩溃,导致数据无法进行正常存储和更新。当并发访问量超过一定阈值的时候,后端的数据访问骤增,而传统的关系数据库管理系统(relational database management system,rdbms)处理海量数据乏力,因此难以处理高并发的读操作和写操作。

2、目前,可以采用对数据库增加缓存的方式,利用缓存分担数据库的高访问量,然而缓存与数据库之间会存在数据同步不及时的问题。


技术实现思路

1、有鉴于此,本申请提供了一种数据读取方法及装置,从而达到能够在高并发场景下,有效缓解数据库的压力,并实现缓存与数据库之间数据一致性的目的。

2、本申请提供的一种数据读取方法是这样实现的:

3、接收应用程序发送的读取请求,读取请求用于读取目标数据库中的目标数据;

4、根据读取请求查询redis缓存,redis缓存用于同步目标数据库中的数据;若在redis缓存中查询到目标数据,则向应用程序返回目标数据;若在redis缓存中没有查询到目标数据,则查询多个消息队列,多个消息队列用于存放针对目标数据库的更新请求;redis缓存用于根据更新请求删除数据,目标数据库用于根据更新请求更新数据;

5、若在多个消息队列中没有查询到目标数据,则查询目标数据库的从库,从库用于实时同步目标数据库中的数据;若在多个消息队列中查询到目标数据,则在第一预设时间内多次查询多个消息队列,直至在多个消息队列无法查询到目标数据,则查询从库;

6、基于从库,读取并向应用程序返回目标数据。

7、可选地,方法还包括:

8、接收应用程序发送的更新请求,更新请求包括:增加、删除或修改数据;

9、利用哈希算法,对更新请求的编号进行哈希取余,得到余数,并根据余数从多个消息队列中确定目标队列;

10、将更新请求写入目标队列,并利用redis缓存从目标队列中读取更新请求;

11、删除redis缓存中更新请求对应的数据,并根据更新请求对目标数据库进行数据更新;

12、根据数据更新后的目标数据库,异步对redis缓存以及从库进行数据同步。

13、可选地,方法还包括:

14、若redis缓存宕机,则利用目标数据库从多个消息队列中读取更新请求,并根据更新请求对目标数据库进行数据更新。

15、可选地,查询多个消息队列之前,还包括:

16、延时第二预设时间后,重新查询redis缓存,并确定在redis缓存中没有查询到目标数据。

17、可选地,方法还包括:

18、重新查询redis缓存时,在redis缓存中查询到目标数据,则向应用程序返回目标数据。

19、可选地,在多个消息队列中查询到目标数据之后,还包括:

20、若在第一预设时间之后,仍在多个消息队列中查询到目标数据,则发送异常提示信息。

21、可选地,方法还包括:

22、在第三预设时间内,若接收更新请求的次数大于请求次数阈值,则采用数据库集群的方式重新部署目标数据库,数据库集群中的各个数据库对应的数据不存在重复。

23、可选地,方法还包括:

24、在第四预设时间内,若接收读取请求的次数大于读取次数阈值,则采用redis集群的方式重新部署redis缓存,redis集群中的各个redis所存储的数据不存在重复。

25、本申请还提供了一种数据读取装置,包括:

26、接收模块,用于接收应用程序发送的读取请求,读取请求用于读取目标数据库中的目标数据;

27、查询模块,用于根据读取请求查询redis缓存,redis缓存用于同步目标数据库中的数据;若在redis缓存中查询到目标数据,则向应用程序返回目标数据;若在redis缓存中没有查询到目标数据,则查询多个消息队列,多个消息队列用于存放针对目标数据库的更新请求;redis缓存用于根据更新请求删除数据,目标数据库用于根据更新请求更新数据;

28、查询模块,还用于若在多个消息队列中没有查询到目标数据,则查询目标数据库的从库,从库用于实时同步目标数据库中的数据;若在多个消息队列中查询到目标数据,则在第一预设时间内多次查询多个消息队列,直至在多个消息队列无法查询到目标数据,则查询从库;

29、读取模块,用于基于从库,读取并向应用程序返回目标数据。

30、本申请还提供了一种计算机设备,包括:处理器,处理器与存储器耦合,存储器中存储有至少一条计算机程序指令,至少一条计算机程序指令由处理器加载并执行,以使计算机设备实现上述数据读取方法。

31、因此,本申请的有益效果是:通过设置redis缓存、消息队列以及目标数据库的从库,由于redis缓存和从库均用于同步目标数据库中的数据,当面临高并发的数据读取时,可以优先查询redis缓存,从而可以减轻目标数据库的压力,而在redis缓存没有查询到目标数据时可以认为redis缓存已根据消息队列中的更新请求进行数据删除,此时为了避免目标数据库还未进行数据更新,或者redis缓存与目标数据库中的数据无法及时同步的情况,因此需要在消息队列中查询不到待查询的内容时再对从库进行查询,此时查询到的内容均与更新后的目标数据库中的数据一致,可以解决数据同步不及时的问题。此外,通过设置从库,目标数据库仅需进行数据更新,而数据读取的任务均由redis缓存和从库进行,可以进一步缓解目标数据库的压力。



技术特征:

1.一种数据读取方法,其特征在于,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:

3.根据权利要求2所述的方法,其特征在于,所述方法还包括:

4.根据权利要求1所述的方法,其特征在于,所述查询多个消息队列之前,还包括:

5.根据权利要求4所述的方法,其特征在于,所述方法还包括:

6.根据权利要求1所述的方法,其特征在于,所述在所述多个消息队列中查询到所述目标数据之后,还包括:

7.根据权利要求2所述的方法,其特征在于,所述方法还包括:

8.根据权利要求1所述的方法,其特征在于,所述方法还包括:

9.一种数据读取装置,其特征在于,所述装置包括:

10.一种计算机设备,其特征在于,所述计算机设备包括:处理器,所述处理器与存储器耦合,所述存储器中存储有至少一条计算机程序指令,所述至少一条计算机程序指令由所述处理器加载并执行,以使所述计算机设备实现权利要求1-8中任一项所述的方法。


技术总结
本申请公开了一种数据读取方法及装置,涉及数据库领域。当数据读取时,优先查询redis缓存,而在redis缓存没有查询到目标数据时可以认为redis缓存已根据消息队列中的更新请求进行数据删除,此时为了避免目标数据库还未进行数据更新,或者redis缓存与目标数据库中的数据无法及时同步的情况,因此需要在消息队列中查询不到待查询的内容时再对从库进行查询,此时查询到的内容均与更新后的目标数据库中的数据一致,可以解决数据同步不及时的问题。此外,通过设置从库,目标数据库仅需进行数据更新,而数据读取的任务均由redis缓存和从库进行,从而可以缓解目标数据库的压力。

技术研发人员:王立昆
受保护的技术使用者:中国农业银行股份有限公司
技术研发日:
技术公布日:2024/5/29
转载请注明原文地址:https://win.8miu.com/read-1165246.html

最新回复(0)