一种数据库变更数据同步刷新本地缓存的系统及方法技术方案

技术编号:34091983 阅读:74 留言:0更新日期:2022-07-11 21:24
本发明专利技术公开了一种数据库变更数据同步刷新本地缓存的系统及方法,包括:依次相连的数据库、服务端、客户端和本地缓存;其中,客户端向服务端发送版本号比较请求;服务端获取请求中的客户端的版本号并与服务端的最新版本号进行比较;若版本号发生变更,则将最新版本号以及需要失效的CacheKey返回至客户端;客户端使用服务端返回的最新版本号替换当前存储的版本号,并通过回调函数调用本地缓存的API,将服务端返回的需要失效的CacheKey失效掉;本地缓存通过懒加载的方式触发缓存数据重新加载。本发明专利技术使得本地缓存能用于数据库中的动态数据,通过检查数据库中数据的变化来主动刷新缓存,能够更准确灵敏的对缓存进行靶向刷新。能够更准确灵敏的对缓存进行靶向刷新。能够更准确灵敏的对缓存进行靶向刷新。

【技术实现步骤摘要】
一种数据库变更数据同步刷新本地缓存的系统及方法


[0001]本专利技术涉及缓存数据刷新
,具体涉及一种数据库变更数据同步刷新本地缓存的系统及方法。

技术介绍

[0002]缓存技术在现代应用中有着广泛的应用,借助缓存技术,应用能够将数据库的数据存放在本地缓存中,减少应用与数据库的交互,极大的提高应用的访问性能。
[0003]本地缓存的实现技术也是多种多样,可以是一个简单的HashMap,也可以使用功能更丰富的EhCache,Caffeine,Guava Cache等缓存。不论使用哪种缓存技术,一般都是推荐仅缓存数据库中的静态数据(例如应用的配置数据),而不能缓存数据库中的动态数据。主要原因是在缓存动态数据后,若数据库中的动态数据发生了变化,则缓存中的数据就变成了无效的脏数据;此时如果客户端从缓存中读取数据,就会读取到错误的数据。
[0004]在一些必须缓存动态数据的场景中,一般会为缓存的Key设置一个Expire时间(失效时间),这样缓存数据可以在Expire时间后失效,然后通过懒加载或主动加载的方式从数据库中重新加载动态数本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种数据库变更数据同步刷新本地缓存的系统,其特征在于,包括:依次相连的数据库、服务端、客户端和本地缓存;其中,所述服务端,用于:扫描所述数据库中的数据是否有变更,若有变更,则将变更的时间戳作为版本号、将变更数据作为CacheKey,将版本号和CacheKey构成的元素存入版本变更队列中且按时间先后进行元素排序;接收所述客户端发送的版本号比较请求,当版本号发生变更,则将最新版本号以及需要失效的CacheKey发送至所述客户端;所述客户端,用于:基于已存储的版本号,向所述服务端发送版本号比较请求;当版本号发生变更,则接收并替换存储所述服务端发送的最新版本号以及接收需要失效的CacheKey;基于需要失效的CacheKey,回调本地缓存失效旧的CacheKey,后续本地缓存通过懒加载方式重新加载缓存数据。2.如权利要求1所述的系统,其特征在于,所述客户端被集成到业务系统应用中,所述客户端通过LongPolling方式与服务端交互。3.如权利要求1或2所述的系统,其特征在于,所述服务端,包括:扫描模块,用于在服务端启动时,定时扫描数据库表数据变更状态;生成模块,用于在数据库表数据变更状态发生状态后,将最新一次的数据变更时间作为Version元素的版本号插入到版本变更队列的头部;将数据库关系表的数据格式通过EL表达式转换为缓存中的Key的数据格式,存储到对应的Version元素上,表示在该版本上发生了变更的CacheKey;比较模块,用于提取请求中客户端的版本号,并将客户端的版本号与服务端的最新版本号进行比较,若客户端的版本号小于服务端的版本号,则从服务端的版本变更队列中找到匹配该版本号的位置,并且合并该位置到队列头部的所有CacheKey数据,立即为客户端返回最新的版本号与所有需要失效的CacheKey数据。4.如权利要求3所述的系统,其特征在于,在所述比较模块中,若客户端的版本号等于服务端的版本号,则服务端按照LongPolling的方式持有客户端调用句柄预设时间后返回数据无变化的标识;若在LongPolling持有客户端调用句柄期间内,服务端版本变更队列发生了变化,则立即触发版本比较与CacheKey合并操作,并立即为客户端返回最新的timestamp版本号与需要失效的CacheKey数据;若客户端的版本号大于服务端的版本号,则强制读取一次数据库,根据数据库的变更数据为版本变更队列插入最新Version元素,然后再次比较timestamp版本号后按以上描述流程为客户端返回...

【专利技术属性】
技术研发人员:张少峰
申请(专利权)人:北京思特奇信息技术股份有限公司
类型:发明
国别省市:

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

1