基于多级缓存的数据读取和写入方法、系统、设备和介质技术方案

技术编号:26259271 阅读:20 留言:0更新日期:2020-11-06 17:53
本发明专利技术涉及分布式计算机服务器技术领域,特别涉及基于多级缓存的数据读取和写入方法、系统、设备和介质。在本地设置有一级缓存和二级缓存,一级缓存仅对本地用户可见,二级缓存对任意用户可见,在远程设置有三级缓存和数据库,基于多级缓存的数据读取方法包括:接收用户的数据读取请求;响应于用户的数据读取请求,判断用户是否为本地用户;如果用户是本地用户,则依次从一级缓存、二级缓存、三级缓存、数据库读取本地用户的用户数据;如果用户不是本地用户,则依次从二级缓存、三级缓存、数据库读取本地用户的用户数据。本发明专利技术解决在现有技术中访问用户数据的访问效率不高的问题,在有限的内存空间中高效、实时地满足多种业务对用户数据的访问。

【技术实现步骤摘要】
基于多级缓存的数据读取和写入方法、系统、设备和介质
本专利技术涉及分布式计算机服务器
,特别涉及基于多级缓存的数据读取和写入方法、系统、设备和介质。
技术介绍
在全球服架构和统一部署的集群的背景下,用户数据(例如,玩家数据)会被多个系统高频地读写访问。对于用户数据的访问,通常用到缓存中间件加后端数据库的结构。其中,中间件一般都是与其他业务分离、单独运行在一台机器或者一个集群上的,这样每次访问用户数据都需要一次网络连接。而且,中间件的数据格式一般与应用(例如,游戏应用)的数据格式不同,这样每次经过中间件来访问用户数据都需要一次数据格式的转换,也就是异构消息重组。这就是说,每次访问用户数据都至少需要一次网络连接和一次异构消息重组,所以使用上述方法来访问用户数据的访问效率不高。特别在高频访问中,由于处理器的处理速度是有限的,例如1秒只能处理1000次访问请求,因此会造成访问请求排队,访问效率就进一步降低。
技术实现思路
本专利技术的目的在于提供基于多级缓存的数据读取和写入方法、系统、设备和介质,解决在现有技术中访问用户数据的访问效率不高的问题,在有限的内存空间中高效、实时地满足多种业务对用户数据的访问。本专利技术的实施方式公开了一种基于多级缓存的数据读取方法,在本地设置有一级缓存和二级缓存,所述一级缓存仅对本地用户可见,所述二级缓存对任意用户可见,在远程设置有三级缓存和数据库,所述方法包括:接收用户的数据读取请求;响应于所述用户的所述数据读取请求,判断所述用户是否为本地用户;如果所述用户是本地用户,则从所述一级缓存读取本地用户的用户数据,如果所述一级缓存中不存在本地用户的用户数据,则从所述二级缓存读取本地用户的用户数据,如果所述二级缓存中不存在本地用户的用户数据,则从所述三级缓存读取本地用户的用户数据,以及如果所述三级缓存中不存在本地用户的用户数据,则从所述数据库读取本地用户的用户数据;如果所述用户不是本地用户,则从所述二级缓存读取本地用户的用户数据,如果所述二级缓存中不存在本地用户的用户数据,则从所述三级缓存读取本地用户的用户数据,以及如果所述三级缓存中不存在本地用户的用户数据,则从所述数据库读取本地用户的用户数据。可选地,所述一级缓存和所述二级缓存用于缓存本地用户的用户数据,所述三级缓存用于缓存任意用户的用户数据,所述数据库用于持久化存储所有用户的用户数据。可选地,在本地设置有与本地用户对应的服务进程,所述服务进程包括Erlang进程字典作为所述一级缓存。可选地,在本地设置有与本地用户对应的Erlang公共存储作为所述二级缓存。可选地,采用公共缓存集群作为所述三级缓存,所述公共缓存集群包含多个缓存节点。可选地,所述方法还包括:在所述三级缓存运行期间,判断所述三级缓存中存储的用户数据是否是活跃用户的用户数据;如果所述三级缓存中存储的用户数据是活跃用户的用户数据,则将该用户的用户标识符添加到活跃用户列表中,否则不将该用户的用户标识符添加到活跃用户列表中。可选地,所述方法还包括:在所述三级缓存重启之后,对于活跃用户列表中的用户标识符对应的每个用户,从所述数据库向所述三级缓存加载该用户的用户数据。可选地,所述方法还包括:如果所述三级缓存中存储的用户数据是活跃用户的用户数据,则保留该用户的用户数据,否则删除该用户的用户数据。本专利技术的实施方式公开了一种基于多级缓存的数据写入方法,在本地设置有一级缓存和二级缓存,所述一级缓存仅对本地用户可见,所述二级缓存对任意用户可见,在远程设置有三级缓存和数据库,所述方法包括:接收用户的数据写入请求;响应于所述用户的所述数据写入请求,依次将所述用户的用户数据写入与所述用户对应的所述一级缓存、与所述用户对应的所述二级缓存、所述三级缓存和所述数据库中。本专利技术的实施方式公开了一种基于多级缓存的数据读取系统,在本地设置有一级缓存和二级缓存,所述一级缓存仅对本地用户可见,所述二级缓存对任意用户可见,在远程设置有三级缓存和数据库,所述系统包括接收模块、判断模块、读取模块;所述接收模块接收用户的数据读取请求;所述判断模块响应于所述用户的所述数据读取请求,判断所述用户是否为本地用户;如果所述判断模块判断所述用户是本地用户,则所述读取模块从所述一级缓存读取本地用户的用户数据,如果所述一级缓存中不存在本地用户的用户数据,则从所述二级缓存读取本地用户的用户数据,如果所述二级缓存中不存在本地用户的用户数据,则从所述三级缓存读取本地用户的用户数据,以及如果所述三级缓存中不存在本地用户的用户数据,则从所述数据库读取本地用户的用户数据;如果所述判断模块判断所述用户不是本地用户,则所述读取模块从所述二级缓存读取本地用户的用户数据,如果所述二级缓存中不存在本地用户的用户数据,则从所述三级缓存读取本地用户的用户数据,以及如果所述三级缓存中不存在本地用户的用户数据,则从所述数据库读取本地用户的用户数据。本专利技术的实施方式公开了一种基于多级缓存的数据写入系统,在本地设置有一级缓存和二级缓存,所述一级缓存仅对本地用户可见,所述二级缓存对任意用户可见,在远程设置有三级缓存和数据库,所述系统包括接收模块和写入模块;所述接收模块接收用户的数据写入请求;所述写入模块响应于所述用户的所述数据写入请求,依次将所述用户的用户数据写入与所述用户对应的所述一级缓存、与所述用户对应的所述二级缓存、所述三级缓存和所述数据库中。本专利技术的实施方式公开了一种基于多级缓存的数据读取设备,所述设备包括存储有计算机可执行指令的存储器和处理器,所述处理器被配置为执行所述指令以实施基于多级缓存的数据读取方法。本专利技术的实施方式公开了一种基于多级缓存的数据写入设备,所述设备包括存储有计算机可执行指令的存储器和处理器,所述处理器被配置为执行所述指令以实施基于多级缓存的数据写入方法。本专利技术的实施方式公开了一种使用计算机程序编码的计算机存储介质,所述计算机程序包括指令,所述指令被一个以上的计算机执行以实施基于多级缓存的数据读取方法。本专利技术的实施方式公开了一种使用计算机程序编码的计算机存储介质,所述计算机程序包括指令,所述指令被一个以上的计算机执行以实施基于多级缓存的数据写入方法。本专利技术实施方式与现有技术相比,主要区别及其效果在于:在本专利技术中,在本地设置有一级缓存和二级缓存,在远程设置有三级缓存和数据库,基于多级缓存来实现数据读取和写入,可以高效利用多地内存资源,并且减小数据库的压力。在本专利技术中,如果用户是本地用户,则从一级缓存读取本地用户的用户数据,如果用户不是本地用户,则从二级缓存读取本地用户的用户数据,根据优先级来实现本地用户的用户数据的读取,可以基于不同的用户限定不同的访问速度。在本专利技术中,从本地缓存读取本地用户的用户数据,如果本地缓存中不存在本地用户的用户数据,则从远程缓存读取本地用户的用户数据,如果远程缓本文档来自技高网...

【技术保护点】
1.一种基于多级缓存的数据读取方法,其特征在于,在本地设置有一级缓存和二级缓存,所述一级缓存仅对本地用户可见,所述二级缓存对任意用户可见,在远程设置有三级缓存和数据库,所述方法包括:/n接收用户的数据读取请求;/n响应于所述用户的所述数据读取请求,判断所述用户是否为本地用户;/n如果所述用户是本地用户,则从所述一级缓存读取本地用户的用户数据,如果所述一级缓存中不存在本地用户的用户数据,则从所述二级缓存读取本地用户的用户数据,如果所述二级缓存中不存在本地用户的用户数据,则从所述三级缓存读取本地用户的用户数据,以及如果所述三级缓存中不存在本地用户的用户数据,则从所述数据库读取本地用户的用户数据;/n如果所述用户不是本地用户,则从所述二级缓存读取本地用户的用户数据,如果所述二级缓存中不存在本地用户的用户数据,则从所述三级缓存读取本地用户的用户数据,以及如果所述三级缓存中不存在本地用户的用户数据,则从所述数据库读取本地用户的用户数据。/n

【技术特征摘要】
1.一种基于多级缓存的数据读取方法,其特征在于,在本地设置有一级缓存和二级缓存,所述一级缓存仅对本地用户可见,所述二级缓存对任意用户可见,在远程设置有三级缓存和数据库,所述方法包括:
接收用户的数据读取请求;
响应于所述用户的所述数据读取请求,判断所述用户是否为本地用户;
如果所述用户是本地用户,则从所述一级缓存读取本地用户的用户数据,如果所述一级缓存中不存在本地用户的用户数据,则从所述二级缓存读取本地用户的用户数据,如果所述二级缓存中不存在本地用户的用户数据,则从所述三级缓存读取本地用户的用户数据,以及如果所述三级缓存中不存在本地用户的用户数据,则从所述数据库读取本地用户的用户数据;
如果所述用户不是本地用户,则从所述二级缓存读取本地用户的用户数据,如果所述二级缓存中不存在本地用户的用户数据,则从所述三级缓存读取本地用户的用户数据,以及如果所述三级缓存中不存在本地用户的用户数据,则从所述数据库读取本地用户的用户数据。


2.根据权利要求1所述的方法,其特征在于,所述一级缓存和所述二级缓存用于缓存本地用户的用户数据,所述三级缓存用于缓存任意用户的用户数据,所述数据库用于持久化存储所有用户的用户数据。


3.根据权利要求1所述的方法,其特征在于,在本地设置有与本地用户对应的服务进程,所述服务进程包括Erlang进程字典作为所述一级缓存。


4.根据权利要求1所述的方法,其特征在于,在本地设置有与本地用户对应的Erlang公共存储作为所述二级缓存。


5.根据权利要求1所述的方法,其特征在于,采用公共缓存集群作为所述三级缓存,所述公共缓存集群包含多个缓存节点。


6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述三级缓存运行期间,判断所述三级缓存中存储的用户数据是否是活跃用户的用户数据;
如果所述三级缓存中存储的用户数据是活跃用户的用户数据,则将该用户的用户标识符添加到活跃用户列表中,否则不将该用户的用户标识符添加到活跃用户列表中。


7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
在所述三级缓存重启之后,对于活跃用户列表中的用户标识符对应的每个用户,从所述数据库向所述三级缓存加载该用户的用户数据。


8.根据权利要求6所述的方法,其特征在于,所述方法还包括:
如果所述三级缓存中存储的用户数据是活跃用户的用户数据,则保留该用户的用户数据,否则删除该用户的用户数据。


9.一种基于多级缓存的数据写入方法,其特征在于,在本地设置有一级缓存和二级缓存,所述一级缓存仅对本地用户可见,所述二级缓存对任意用户可见,在远程设置有三级缓存和数据库,所述方法包括:
接收...

【专利技术属性】
技术研发人员:郭小林
申请(专利权)人:上海莉莉丝科技股份有限公司
类型:发明
国别省市:上海;31

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

1