CN111897847A - 基于多级缓存的数据读取和写入方法、系统、设备和介质 - Google Patents
基于多级缓存的数据读取和写入方法、系统、设备和介质 Download PDFInfo
- Publication number
- CN111897847A CN111897847A CN202010787786.1A CN202010787786A CN111897847A CN 111897847 A CN111897847 A CN 111897847A CN 202010787786 A CN202010787786 A CN 202010787786A CN 111897847 A CN111897847 A CN 111897847A
- Authority
- CN
- China
- Prior art keywords
- user
- level cache
- data
- local
- cache
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及分布式计算机服务器技术领域,特别涉及基于多级缓存的数据读取和写入方法、系统、设备和介质。在本地设置有一级缓存和二级缓存,一级缓存仅对本地用户可见,二级缓存对任意用户可见,在远程设置有三级缓存和数据库,基于多级缓存的数据读取方法包括:接收用户的数据读取请求;响应于用户的数据读取请求,判断用户是否为本地用户;如果用户是本地用户,则依次从一级缓存、二级缓存、三级缓存、数据库读取本地用户的用户数据;如果用户不是本地用户,则依次从二级缓存、三级缓存、数据库读取本地用户的用户数据。本发明解决在现有技术中访问用户数据的访问效率不高的问题,在有限的内存空间中高效、实时地满足多种业务对用户数据的访问。
Description
技术领域
本发明涉及分布式计算机服务器技术领域,特别涉及基于多级缓存的数据读取和写入方法、系统、设备和介质。
背景技术
在全球服架构和统一部署的集群的背景下,用户数据(例如,玩家数据)会被多个系统高频地读写访问。对于用户数据的访问,通常用到缓存中间件加后端数据库的结构。其中,中间件一般都是与其他业务分离、单独运行在一台机器或者一个集群上的,这样每次访问用户数据都需要一次网络连接。而且,中间件的数据格式一般与应用(例如,游戏应用)的数据格式不同,这样每次经过中间件来访问用户数据都需要一次数据格式的转换,也就是异构消息重组。这就是说,每次访问用户数据都至少需要一次网络连接和一次异构消息重组,所以使用上述方法来访问用户数据的访问效率不高。特别在高频访问中,由于处理器的处理速度是有限的,例如1秒只能处理1000次访问请求,因此会造成访问请求排队,访问效率就进一步降低。
发明内容
本发明的目的在于提供基于多级缓存的数据读取和写入方法、系统、设备和介质,解决在现有技术中访问用户数据的访问效率不高的问题,在有限的内存空间中高效、实时地满足多种业务对用户数据的访问。
本发明的实施方式公开了一种基于多级缓存的数据读取方法,在本地设置有一级缓存和二级缓存,所述一级缓存仅对本地用户可见,所述二级缓存对任意用户可见,在远程设置有三级缓存和数据库,所述方法包括:
接收用户的数据读取请求;
响应于所述用户的所述数据读取请求,判断所述用户是否为本地用户;
如果所述用户是本地用户,则从所述一级缓存读取本地用户的用户数据,如果所述一级缓存中不存在本地用户的用户数据,则从所述二级缓存读取本地用户的用户数据,如果所述二级缓存中不存在本地用户的用户数据,则从所述三级缓存读取本地用户的用户数据,以及如果所述三级缓存中不存在本地用户的用户数据,则从所述数据库读取本地用户的用户数据;
如果所述用户不是本地用户,则从所述二级缓存读取本地用户的用户数据,如果所述二级缓存中不存在本地用户的用户数据,则从所述三级缓存读取本地用户的用户数据,以及如果所述三级缓存中不存在本地用户的用户数据,则从所述数据库读取本地用户的用户数据。
可选地,所述一级缓存和所述二级缓存用于缓存本地用户的用户数据,
所述三级缓存用于缓存任意用户的用户数据,
所述数据库用于持久化存储所有用户的用户数据。
可选地,在本地设置有与本地用户对应的服务进程,所述服务进程包括Erlang进程字典作为所述一级缓存。
可选地,在本地设置有与本地用户对应的Erlang公共存储作为所述二级缓存。
可选地,采用公共缓存集群作为所述三级缓存,所述公共缓存集群包含多个缓存节点。
可选地,所述方法还包括:
在所述三级缓存运行期间,判断所述三级缓存中存储的用户数据是否是活跃用户的用户数据;
如果所述三级缓存中存储的用户数据是活跃用户的用户数据,则将该用户的用户标识符添加到活跃用户列表中,否则不将该用户的用户标识符添加到活跃用户列表中。
可选地,所述方法还包括:
在所述三级缓存重启之后,对于活跃用户列表中的用户标识符对应的每个用户,从所述数据库向所述三级缓存加载该用户的用户数据。
可选地,所述方法还包括:
如果所述三级缓存中存储的用户数据是活跃用户的用户数据,则保留该用户的用户数据,否则删除该用户的用户数据。
本发明的实施方式公开了一种基于多级缓存的数据写入方法,在本地设置有一级缓存和二级缓存,所述一级缓存仅对本地用户可见,所述二级缓存对任意用户可见,在远程设置有三级缓存和数据库,所述方法包括:
接收用户的数据写入请求;
响应于所述用户的所述数据写入请求,依次将所述用户的用户数据写入与所述用户对应的所述一级缓存、与所述用户对应的所述二级缓存、所述三级缓存和所述数据库中。
本发明的实施方式公开了一种基于多级缓存的数据读取系统,在本地设置有一级缓存和二级缓存,所述一级缓存仅对本地用户可见,所述二级缓存对任意用户可见,在远程设置有三级缓存和数据库,所述系统包括接收模块、判断模块、读取模块;
所述接收模块接收用户的数据读取请求;
所述判断模块响应于所述用户的所述数据读取请求,判断所述用户是否为本地用户;
如果所述判断模块判断所述用户是本地用户,则所述读取模块从所述一级缓存读取本地用户的用户数据,如果所述一级缓存中不存在本地用户的用户数据,则从所述二级缓存读取本地用户的用户数据,如果所述二级缓存中不存在本地用户的用户数据,则从所述三级缓存读取本地用户的用户数据,以及如果所述三级缓存中不存在本地用户的用户数据,则从所述数据库读取本地用户的用户数据;
如果所述判断模块判断所述用户不是本地用户,则所述读取模块从所述二级缓存读取本地用户的用户数据,如果所述二级缓存中不存在本地用户的用户数据,则从所述三级缓存读取本地用户的用户数据,以及如果所述三级缓存中不存在本地用户的用户数据,则从所述数据库读取本地用户的用户数据。
本发明的实施方式公开了一种基于多级缓存的数据写入系统,在本地设置有一级缓存和二级缓存,所述一级缓存仅对本地用户可见,所述二级缓存对任意用户可见,在远程设置有三级缓存和数据库,所述系统包括接收模块和写入模块;
所述接收模块接收用户的数据写入请求;
所述写入模块响应于所述用户的所述数据写入请求,依次将所述用户的用户数据写入与所述用户对应的所述一级缓存、与所述用户对应的所述二级缓存、所述三级缓存和所述数据库中。
本发明的实施方式公开了一种基于多级缓存的数据读取设备,所述设备包括存储有计算机可执行指令的存储器和处理器,所述处理器被配置为执行所述指令以实施基于多级缓存的数据读取方法。
本发明的实施方式公开了一种基于多级缓存的数据写入设备,所述设备包括存储有计算机可执行指令的存储器和处理器,所述处理器被配置为执行所述指令以实施基于多级缓存的数据写入方法。
本发明的实施方式公开了一种使用计算机程序编码的计算机存储介质,所述计算机程序包括指令,所述指令被一个以上的计算机执行以实施基于多级缓存的数据读取方法。
本发明的实施方式公开了一种使用计算机程序编码的计算机存储介质,所述计算机程序包括指令,所述指令被一个以上的计算机执行以实施基于多级缓存的数据写入方法。
本发明实施方式与现有技术相比,主要区别及其效果在于:
在本发明中,在本地设置有一级缓存和二级缓存,在远程设置有三级缓存和数据库,基于多级缓存来实现数据读取和写入,可以高效利用多地内存资源,并且减小数据库的压力。
在本发明中,如果用户是本地用户,则从一级缓存读取本地用户的用户数据,如果用户不是本地用户,则从二级缓存读取本地用户的用户数据,根据优先级来实现本地用户的用户数据的读取,可以基于不同的用户限定不同的访问速度。
在本发明中,从本地缓存读取本地用户的用户数据,如果本地缓存中不存在本地用户的用户数据,则从远程缓存读取本地用户的用户数据,如果远程缓存中不存在本地用户的用户数据,则从远程数据库读取本地用户的用户数据,可以进一步高效利用多地内存资源,并且减小数据库的压力。
在本发明中,在三级缓存运行期间,判断三级缓存中存储的用户数据是否是活跃用户的用户数据,可以动态淘汰不活跃用户的用户数据,提高缓存的利用率,并且在三级缓存重启之后,对于活跃用户列表中的用户标识符对应的每个用户,从数据库向三级缓存加载该用户的用户数据,大部分活跃用户的用户数据都可以直接从三级缓存获得,不需要再访问数据库,降低数据库的访问负荷。
在本发明中,响应于用户的数据写入请求,依次将该用户的用户数据写入与该用户对应的一级缓存、与该用户对应的二级缓存、三级缓存和数据库中,可以实现有序的数据写入。
附图说明
图1示出根据本发明的实施例的多级缓存和数据库的示意图。
图2示出根据本发明的实施例的基于多级缓存的数据读取方法的示意图。
图3示出根据本发明的实施例的基于多级缓存的数据写入方法的示意图。
图4示出根据本发明的实施例的基于多级缓存的数据读取系统。
图5示出根据本发明的实施例的基于多级缓存的数据写入系统。
具体实施方式
下面结合具体实施例和附图对本申请做进一步说明。可以理解的是,此处描述的具体实施例仅仅是为了解释本申请,而非对本申请的限定。此外,为了便于描述,附图中仅示出了与本申请相关的部分而非全部的结构或过程。应注意的是,在本说明书中,相似的标号和字母在下面的附图中表示类似项。
应当理解的是,虽然在本文中可能使用了术语“第一”、“第二”等等来描述各个特征,但是这些特征不应当受这些术语限制。使用这些术语仅仅是为了进行区分,而不能理解为指示或暗示相对重要性。举例来说,在不背离示例性实施例的范围的情况下,第一特征可以被称为第二特征,并且类似地第二特征可以被称为第一特征。
在本申请的描述中,还需要说明的是,除非另有明确的规定和限定,术语“设置”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本实施例中的具体含义。
本申请的说明性实施例包括但不限于基于多级缓存的数据读取和写入方法、系统、设备和介质等。
将使用本领域技术人员通常采用的术语来描述说明性实施例的各个方面,以将他们工作的实质传达给本领域其他技术人员。然而,对于本领域技术人员来说,使用部分所描述的特征来施行一些替代性实施例是显而易见的。出于解释的目的,阐述了具体的数字和配置,以便对说明性实施例进行更加透彻的理解。然而,对于本领域技术人员来说显而易见的是,可以在没有具体细节的情况下实施替代实施例。在一些其他情况下,本文省略或简化了一些众所周知的特征,以避免使本申请的说明性实施例模糊不清。
此外,各种操作将以最有助于理解说明性实施例的方式被描述为多个彼此分离的操作;然而,描述的顺序不应被解释为暗示这些操作必须依赖描述的顺序,其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序也可以被重新安排。当所描述的操作完成时,所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
说明书中对“一个实施例”、“实施例”、“说明性实施例”等的引用表示所描述的实施例可以包括特定特征、结构或性质,但是每个实施例也可能或不是必需包括特定的特征、结构或性质。而且,这些短语不一定是针对同一实施例。此外,当结合具体实施例描述特定特征,本领域技术人员的知识能够影响到这些特征与其他实施例的结合,无论这些实施例是否被明确描述。
除非上下文另有规定,否则术语“包含”、“具有”和“包括”是同义词。短语“A和/或B”表示“(A)、(B)或(A和B)”。
如本文所使用的,术语“模块”可以指代,作为其中的一部分,或者包括:用于运行一个或多个软件或固件程序的存储器(共享、专用或组)、专用集成电路(ASIC)、电子电路和/或处理器(共享、专用或组)、组合逻辑电路、和/或提供所述功能的其他合适组件。
在附图中,可能以特定布置和/或顺序示出了一些结构或方法特征。然而,应当理解的是,这样的特定布置和/或排序不是必需的。而是,在一些实施例中,这些特征可以以不同于说明性附图中所示的方式和/或顺序来进行说明。另外,特定附图中所包含得结构或方法特征并不意味着所有实施例都需要包含这样的特征,在一些实施例中,可以不包含这些特征或者可以与将这些特征与其他特征进行组合。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请的实施方式作进一步地详细描述。
图1示出根据本发明的实施例的多级缓存和数据库的示意图。
如图1所示,在本地设置有一级缓存104和二级缓存106,一级缓存104仅对本地用户可见,二级缓存106对任意用户可见,在远程设置有三级缓存108和数据库110。
本发明基于多级缓存来实现数据读取和写入,可以高效利用多地内存资源,并且减小数据库的压力。
根据本申请的一些实施例,一级缓存和二级缓存用于缓存本地用户的用户数据,三级缓存用于缓存任意用户的用户数据,数据库用于持久化存储所有用户的用户数据。
根据本申请的一些实施例,在本地设置有与本地用户对应的服务进程,服务进程包括Erlang进程字典作为一级缓存。
结合图1,例如用户(例如,玩家)向远程服务器发出连接请求;响应于该连接请求,在本地(也就是该用户直接连接或控制的设备上)创建与该用户对应的服务进程102,该服务进程102包括Erlang进程字典作为一级缓存104;Erlang进程字典保存在其所属进程的独立内存中,只对其所属进程(即,本地用户)可见,只能在其所属进程中读写。
根据本申请的一些实施例,在本地设置有与本地用户对应的Erlang公共存储作为二级缓存。
结合图1,例如在本地创建ETS(Erlang Term Storage),也就是Erlang公共存储,作为二级缓存106;ETS保存在本地的共享堆内存中,ETS对所有进程(即,任意用户)可见。
根据本申请的一些实施例,采用公共缓存集群作为三级缓存,公共缓存集群包含多个缓存节点。
结合图1,例如在远程服务器所在机房创建公共缓存集群作为三级缓存108,公共缓存集群包含缓存节点1-N;公共缓存集群保存在远程的高速内存中,公共缓存集群对所有进程(即,任意用户)可见。
另外,结合图1,例如在远程服务器设置有数据库110,数据库110对所有进程(即,任意用户)可见。
可以进一步说明的是,一级缓存104和二级缓存106都是可以高速读写的高性能缓存,虽然它们在同一台设备上,但是访问速度也不同,这是因为:一级缓存104是Erlang进程字典,是其所属的进程私有的,访问级别较低,且Erlang进程字典无锁,隔离级别较低,加上其它的自身特性,通常用于进程内的高性能读写,所以访问速度很快;而二级缓存106是ETS,其数据对其所在节点的所有进程共享,访问级别较高,且ETS有读写锁,隔离级别较高,加上其它的自身特性,所以相比于Erlang进程字典,它的访问速度较慢。
可以理解的是,本领域技术人员也可以根据实际需要,采用其他技术来实施一级缓存104、二级缓存106和三级缓存108,以基于多级缓存来实现数据读取和写入。
图2示出根据本发明的实施例的基于多级缓存的数据读取方法的示意图。
如图2所示,方法200包括:
步骤202,接收用户的数据读取请求;
步骤204,响应于用户的数据读取请求,判断用户是否为本地用户;
如果用户是本地用户,则通过步骤206,从一级缓存读取本地用户的用户数据,通过步骤208判断,如果一级缓存中不存在本地用户的用户数据,则通过步骤210,从二级缓存读取本地用户的用户数据,通过步骤212判断,如果二级缓存中不存在本地用户的用户数据,则通过步骤214,从三级缓存读取本地用户的用户数据,以及通过步骤216,如果三级缓存中不存在本地用户的用户数据,则通过步骤218,从数据库读取本地用户的用户数据;
如果用户不是本地用户,则通过步骤210,从二级缓存读取本地用户的用户数据,通过步骤212判断,如果二级缓存中不存在本地用户的用户数据,则通过步骤214,从三级缓存读取本地用户的用户数据,以及通过步骤216,如果三级缓存中不存在本地用户的用户数据,则通过步骤218,从数据库读取本地用户的用户数据。
结合图1,以多级缓存104,106,108和数据库110为环境,例如玩家在进行游戏时,玩家在本地拥有服务进程102;当玩家需要读取自己的玩家数据时(也就是说,判断用户是本地用户),优先通过服务进程102访问该进程的进程字典(即,一级缓存104)以读取其中的玩家数据,如果在进程字典中读取不到,就访问本地的ETS(即,二级缓存106)以读取其中的玩家数据,如果在ETS中也读取不到,就访问在远程的公共缓存集群(即,三级缓存108)以读取其中的玩家数据,如果在公共缓存集群中还是读取不到,就访问数据库110以读取其中的玩家数据。当一个玩家拥有的服务进程之外的业务要读取该玩家的玩家数据的时候(也就是说,判断用户不是本地用户),优先访问该玩家本地的ETS(即,二级缓存106)以读取其中的玩家数据,如果在ETS中也读取不到,就访问在远程的公共缓存集群(即,三级缓存108)以读取其中的玩家数据,如果在公共缓存集群中还是读取不到,就访问数据库110以读取其中的玩家数据。
本发明根据优先级来实现本地用户的用户数据的读取,可以基于不同的用户限定不同的访问速度,例如本地用户可以以纳秒级别访问本地用户的用户数据,而非本地用户可以以毫秒级别访问本地用户的用户数据。
在本发明中,从本地缓存读取本地用户的用户数据,如果本地缓存中不存在本地用户的用户数据,则从远程缓存读取本地用户的用户数据,如果远程缓存中不存在本地用户的用户数据,则从远程数据库读取本地用户的用户数据,可以进一步高效利用多地内存资源,并且减小数据库的压力。
根据本申请的一些实施例,方法还包括:
在三级缓存运行期间,判断三级缓存中存储的用户数据是否是活跃用户的用户数据;
如果三级缓存中存储的用户数据是活跃用户的用户数据,则将该用户的用户标识符添加到活跃用户列表中,否则不将该用户的用户标识符添加到活跃用户列表中。
结合图1,以多级缓存104,106,108和数据库110为环境,例如在公共缓存集群(即,三级缓存108)运行期间,服务器定时地使用例如LRU(Least Recently Used)算法对公共缓存集群中的玩家数据进行判断;如果玩家数据被判断为属于活跃玩家的玩家数据,则将该玩家数据对应的玩家的标识符(例如,UID)存入活跃玩家列表,否则不将该玩家数据对应的玩家的标识符存入活跃玩家列表。
根据本申请的一些实施例,方法还包括:
在三级缓存重启之后,对于活跃用户列表中的用户标识符对应的每个用户,从数据库向三级缓存加载该用户的用户数据。
结合图1,以多级缓存104,106,108和数据库100为环境,例如在公共缓存集群(即,三级缓存108)重启之后,对于活跃玩家列表中的标识符(例如,UID)对应的每个玩家,从数据库向三级缓存加载该玩家的玩家数据。
根据本申请的一些实施例,方法还包括:
如果三级缓存中存储的用户数据是活跃用户的用户数据,则保留该用户的用户数据,否则删除该用户的用户数据。
结合图1,以多级缓存104,106,108和数据库100为环境,例如在公共缓存集群(即,三级缓存108)运行期间,服务器定时地使用例如LRU(Least Recently Used)算法对公共缓存集群中的玩家数据进行判断;如果玩家数据被判断为属于活跃玩家的玩家数据,则保留该玩家的玩家数据,否则删除该玩家的玩家数据。
在本发明中,在三级缓存运行期间,判断三级缓存中存储的用户数据是否是活跃用户的用户数据,可以动态淘汰不活跃用户的用户数据,提高缓存的利用率,并且在三级缓存重启之后,对于活跃用户列表中的用户标识符对应的每个用户,从数据库向三级缓存加载该用户的用户数据,大部分活跃用户的用户数据都可以直接从三级缓存获得,不需要再访问数据库,降低数据库的访问负荷。
图3示出根据本发明的实施例的基于多级缓存的数据写入方法的示意图。
如图3所示,方法300包括:
步骤302,接收用户的数据写入请求;
响应于用户的数据写入请求,依次通过步骤304将该用户的用户数据写入与该用户对应的一级缓存、通过步骤306将该用户的用户数据写入与该用户对应的二级缓存、通过步骤308将该用户的用户数据写入三级缓存和通过步骤310将该用户的用户数据写入数据库中。
结合图1,以多级缓存104,106,108和数据库110为环境,例如玩家在进行游戏时,玩家在本地拥有服务进程102;当玩家需要写入自己的玩家数据时,先通过服务进程102将玩家数据写入进程字典(即,一级缓存104),然后将玩家数据写入ETS(即,二级缓存106),然后将玩家数据写入公共缓存集群(即,三级缓存108),最后将玩家数据写入数据库110。
在本发明中,响应于用户的数据写入请求,依次将该用户的用户数据写入与该用户对应的一级缓存、与该用户对应的二级缓存、三级缓存和数据库中,可以实现有序的数据写入。
图4示出根据本发明的实施例的基于多级缓存的数据读取系统。
如图4所示,系统400包括接收模块402、判断模块404、读取模块406;
接收模块402接收用户的数据读取请求;
判断模块404响应于用户的数据读取请求,判断用户是否为本地用户;
如果判断模块404判断用户是本地用户,则读取模块406从一级缓存读取本地用户的用户数据,如果一级缓存中不存在本地用户的用户数据,则从二级缓存读取本地用户的用户数据,如果二级缓存中不存在本地用户的用户数据,则从三级缓存读取本地用户的用户数据,以及如果三级缓存中不存在本地用户的用户数据,则从数据库读取本地用户的用户数据;
如果判断模块404判断用户不是本地用户,则读取模块406从二级缓存读取本地用户的用户数据,如果二级缓存中不存在本地用户的用户数据,则从三级缓存读取本地用户的用户数据,以及如果三级缓存中不存在本地用户的用户数据,则从数据库读取本地用户的用户数据。
第一实施方式是与本实施方式相对应的方法实施方式,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。
图5示出根据本发明的实施例的基于多级缓存的数据写入系统。
如图5所示,系统500包括接收模块502、写入模块504;
接收模块502接收用户的数据写入请求;
写入模块504响应于用户的数据写入请求,依次将用户的用户数据写入与用户对应的一级缓存、与用户对应的二级缓存、三级缓存和数据库中。
第二实施方式是与本实施方式相对应的方法实施方式,本实施方式可与第二实施方式互相配合实施。第二实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第二实施方式中。
根据本申请的一些实施例,公开了一种基于多级缓存的数据读取设备,设备包括存储有计算机可执行指令的存储器和处理器,处理器被配置为执行指令以实施基于多级缓存的数据读取方法。
第一实施方式是与本实施方式相对应的方法实施方式,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。
根据本申请的一些实施例,公开了一种基于多级缓存的数据写入设备,设备包括存储有计算机可执行指令的存储器和处理器,处理器被配置为执行指令以实施基于多级缓存的数据写入方法。
第二实施方式是与本实施方式相对应的方法实施方式,本实施方式可与第二实施方式互相配合实施。第二实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第二实施方式中。
根据本申请的一些实施例,公开了一种使用计算机程序编码的计算机存储介质,计算机程序包括指令,指令被一个以上的计算机执行以实施基于多级缓存的数据读取方法。
第一实施方式是与本实施方式相对应的方法实施方式,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。
根据本申请的一些实施例,公开了一种使用计算机程序编码的计算机存储介质,计算机程序包括指令,指令被一个以上的计算机执行以实施基于多级缓存的数据写入方法。
第二实施方式是与本实施方式相对应的方法实施方式,本实施方式可与第二实施方式互相配合实施。第二实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第二实施方式中。
在一些情况下,所公开的实施例可以以硬件、固件、软件或其任何组合形式来实现。所公开的实施例还可以以承载或储存在一个或多个瞬态或非瞬态的机器可读(例如,计算机可读)存储介质上的指令或程序形式实现,其可以由一个或多个处理器等读取和执行。当指令或程序被机器运行时,机器可以执行前述的各种方法。例如,指令可以通过网络或其他计算机可读介质分发。因此,机器可读介质可以包括但不限于,用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制,例如,软盘,光盘,光盘只读存储器(CD-ROMs),磁光盘,只读存储器(ROM),随机存取存储器(RAM),可擦除可编程只读存储器(EPROM),电子式可清除程序化只读存储器(EEPROM),磁卡或光卡,或者用于通过电、光、声或其他形式信号(例如,载波、红外信号、数字信号等)传输网络信息的闪存或有形的机器可读存储器。因此,机器可读介质包括任何形式的适合于存储或传输电子指令或机器(例如,计算机)可读信息的机器可读介质。
上面结合附图对本申请的实施例做了详细说明,但本申请技术方案的使用不仅仅局限于本专利实施例中提及的各种应用,各种结构和变型都可以参考本申请技术方案轻易地实施,以达到本文中提及的各种有益效果。在本领域普通技术人员所具备的知识范围内,在不脱离本申请宗旨的前提下做出的各种变化,均应归属于本申请专利涵盖范围。
Claims (15)
1.一种基于多级缓存的数据读取方法,其特征在于,在本地设置有一级缓存和二级缓存,所述一级缓存仅对本地用户可见,所述二级缓存对任意用户可见,在远程设置有三级缓存和数据库,所述方法包括:
接收用户的数据读取请求;
响应于所述用户的所述数据读取请求,判断所述用户是否为本地用户;
如果所述用户是本地用户,则从所述一级缓存读取本地用户的用户数据,如果所述一级缓存中不存在本地用户的用户数据,则从所述二级缓存读取本地用户的用户数据,如果所述二级缓存中不存在本地用户的用户数据,则从所述三级缓存读取本地用户的用户数据,以及如果所述三级缓存中不存在本地用户的用户数据,则从所述数据库读取本地用户的用户数据;
如果所述用户不是本地用户,则从所述二级缓存读取本地用户的用户数据,如果所述二级缓存中不存在本地用户的用户数据,则从所述三级缓存读取本地用户的用户数据,以及如果所述三级缓存中不存在本地用户的用户数据,则从所述数据库读取本地用户的用户数据。
2.根据权利要求1所述的方法,其特征在于,所述一级缓存和所述二级缓存用于缓存本地用户的用户数据,所述三级缓存用于缓存任意用户的用户数据,所述数据库用于持久化存储所有用户的用户数据。
3.根据权利要求1所述的方法,其特征在于,在本地设置有与本地用户对应的服务进程,所述服务进程包括Erlang进程字典作为所述一级缓存。
4.根据权利要求1所述的方法,其特征在于,在本地设置有与本地用户对应的Erlang公共存储作为所述二级缓存。
5.根据权利要求1所述的方法,其特征在于,采用公共缓存集群作为所述三级缓存,所述公共缓存集群包含多个缓存节点。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述三级缓存运行期间,判断所述三级缓存中存储的用户数据是否是活跃用户的用户数据;
如果所述三级缓存中存储的用户数据是活跃用户的用户数据,则将该用户的用户标识符添加到活跃用户列表中,否则不将该用户的用户标识符添加到活跃用户列表中。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
在所述三级缓存重启之后,对于活跃用户列表中的用户标识符对应的每个用户,从所述数据库向所述三级缓存加载该用户的用户数据。
8.根据权利要求6所述的方法,其特征在于,所述方法还包括:
如果所述三级缓存中存储的用户数据是活跃用户的用户数据,则保留该用户的用户数据,否则删除该用户的用户数据。
9.一种基于多级缓存的数据写入方法,其特征在于,在本地设置有一级缓存和二级缓存,所述一级缓存仅对本地用户可见,所述二级缓存对任意用户可见,在远程设置有三级缓存和数据库,所述方法包括:
接收用户的数据写入请求;
响应于所述用户的所述数据写入请求,依次将所述用户的用户数据写入与所述用户对应的所述一级缓存、与所述用户对应的所述二级缓存、所述三级缓存和所述数据库中。
10.一种基于多级缓存的数据读取系统,其特征在于,在本地设置有一级缓存和二级缓存,所述一级缓存仅对本地用户可见,所述二级缓存对任意用户可见,在远程设置有三级缓存和数据库,所述系统包括接收模块、判断模块、读取模块;
所述接收模块接收用户的数据读取请求;
所述判断模块响应于所述用户的所述数据读取请求,判断所述用户是否为本地用户;
如果所述判断模块判断所述用户是本地用户,则所述读取模块从所述一级缓存读取本地用户的用户数据,如果所述一级缓存中不存在本地用户的用户数据,则从所述二级缓存读取本地用户的用户数据,如果所述二级缓存中不存在本地用户的用户数据,则从所述三级缓存读取本地用户的用户数据,以及如果所述三级缓存中不存在本地用户的用户数据,则从所述数据库读取本地用户的用户数据;
如果所述判断模块判断所述用户不是本地用户,则所述读取模块从所述二级缓存读取本地用户的用户数据,如果所述二级缓存中不存在本地用户的用户数据,则从所述三级缓存读取本地用户的用户数据,以及如果所述三级缓存中不存在本地用户的用户数据,则从所述数据库读取本地用户的用户数据。
11.一种基于多级缓存的数据写入系统,其特征在于,在本地设置有一级缓存和二级缓存,所述一级缓存仅对本地用户可见,所述二级缓存对任意用户可见,在远程设置有三级缓存和数据库,所述系统包括接收模块和写入模块;
所述接收模块接收用户的数据写入请求;
所述写入模块响应于所述用户的所述数据写入请求,依次将所述用户的用户数据写入与所述用户对应的所述一级缓存、与所述用户对应的所述二级缓存、所述三级缓存和所述数据库中。
12.一种基于多级缓存的数据读取设备,其特征在于,所述设备包括存储有计算机可执行指令的存储器和处理器,所述处理器被配置为执行所述指令以实施根据权利要求1-8中任一项所述的基于多级缓存的数据读取方法。
13.一种基于多级缓存的数据写入设备,其特征在于,所述设备包括存储有计算机可执行指令的存储器和处理器,所述处理器被配置为执行所述指令以实施根据权利要求9所述的基于多级缓存的数据写入方法。
14.一种使用计算机程序编码的计算机存储介质,其特征在于,所述计算机程序包括指令,所述指令被一个以上的计算机执行以实施根据权利要求1-8中任一项所述的基于多级缓存的数据读取方法。
15.一种使用计算机程序编码的计算机存储介质,其特征在于,所述计算机程序包括指令,所述指令被一个以上的计算机执行以实施根据权利要求9所述的基于多级缓存的数据写入方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010787786.1A CN111897847A (zh) | 2020-08-07 | 2020-08-07 | 基于多级缓存的数据读取和写入方法、系统、设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010787786.1A CN111897847A (zh) | 2020-08-07 | 2020-08-07 | 基于多级缓存的数据读取和写入方法、系统、设备和介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111897847A true CN111897847A (zh) | 2020-11-06 |
Family
ID=73246073
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010787786.1A Pending CN111897847A (zh) | 2020-08-07 | 2020-08-07 | 基于多级缓存的数据读取和写入方法、系统、设备和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111897847A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112699154A (zh) * | 2021-03-25 | 2021-04-23 | 上海洋漪信息技术有限公司 | 应对大流量数据的多级缓存方法 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102945207A (zh) * | 2012-10-26 | 2013-02-27 | 浪潮(北京)电子信息产业有限公司 | 一种块级数据的缓存管理方法及系统 |
CN103118093A (zh) * | 2013-01-24 | 2013-05-22 | 广州南方宜信信息科技有限公司 | 基于多级缓存的大规模分布式网络考试方法 |
CN103701957A (zh) * | 2014-01-14 | 2014-04-02 | 互联网域名系统北京市工程研究中心有限公司 | Dns递归方法及其系统 |
CN104298670A (zh) * | 2013-07-16 | 2015-01-21 | 腾讯科技(北京)有限公司 | 进行层级式数据读取的方法及装置 |
CN106933750A (zh) * | 2015-12-31 | 2017-07-07 | 北京国睿中数科技股份有限公司 | 用于多级缓存中数据及状态的验证方法及装置 |
CN107231395A (zh) * | 2016-03-25 | 2017-10-03 | 阿里巴巴集团控股有限公司 | 数据存储方法、装置和系统 |
CN107870871A (zh) * | 2016-09-23 | 2018-04-03 | 华为技术有限公司 | 分配缓存的方法和装置 |
CN108132958A (zh) * | 2016-12-01 | 2018-06-08 | 阿里巴巴集团控股有限公司 | 一种多级缓存数据存储、查询、调度以及处理方法及装置 |
CN109376125A (zh) * | 2018-09-25 | 2019-02-22 | 郑州云海信息技术有限公司 | 一种元数据存储方法、装置、设备及计算机可读存储介质 |
CN110597739A (zh) * | 2019-06-03 | 2019-12-20 | 上海云盾信息技术有限公司 | 一种配置的管理方法、系统及设备 |
-
2020
- 2020-08-07 CN CN202010787786.1A patent/CN111897847A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102945207A (zh) * | 2012-10-26 | 2013-02-27 | 浪潮(北京)电子信息产业有限公司 | 一种块级数据的缓存管理方法及系统 |
CN103118093A (zh) * | 2013-01-24 | 2013-05-22 | 广州南方宜信信息科技有限公司 | 基于多级缓存的大规模分布式网络考试方法 |
CN104298670A (zh) * | 2013-07-16 | 2015-01-21 | 腾讯科技(北京)有限公司 | 进行层级式数据读取的方法及装置 |
CN103701957A (zh) * | 2014-01-14 | 2014-04-02 | 互联网域名系统北京市工程研究中心有限公司 | Dns递归方法及其系统 |
CN106933750A (zh) * | 2015-12-31 | 2017-07-07 | 北京国睿中数科技股份有限公司 | 用于多级缓存中数据及状态的验证方法及装置 |
CN107231395A (zh) * | 2016-03-25 | 2017-10-03 | 阿里巴巴集团控股有限公司 | 数据存储方法、装置和系统 |
CN107870871A (zh) * | 2016-09-23 | 2018-04-03 | 华为技术有限公司 | 分配缓存的方法和装置 |
CN108132958A (zh) * | 2016-12-01 | 2018-06-08 | 阿里巴巴集团控股有限公司 | 一种多级缓存数据存储、查询、调度以及处理方法及装置 |
CN109376125A (zh) * | 2018-09-25 | 2019-02-22 | 郑州云海信息技术有限公司 | 一种元数据存储方法、装置、设备及计算机可读存储介质 |
CN110597739A (zh) * | 2019-06-03 | 2019-12-20 | 上海云盾信息技术有限公司 | 一种配置的管理方法、系统及设备 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112699154A (zh) * | 2021-03-25 | 2021-04-23 | 上海洋漪信息技术有限公司 | 应对大流量数据的多级缓存方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9087021B2 (en) | Peer-to-peer transcendent memory | |
US9201810B2 (en) | Memory page eviction priority in mobile computing devices | |
CN113010818B (zh) | 访问限流方法、装置、电子设备及存储介质 | |
CN110688062B (zh) | 一种缓存空间的管理方法及装置 | |
WO2021047120A1 (zh) | 一种fpga异构加速卡集群中的资源调度方法、设备及介质 | |
US20210271640A1 (en) | File loading method and apparatus, electronic device, and storage medium | |
CN113032099A (zh) | 云计算节点、文件管理方法及装置 | |
CA3129982A1 (en) | Method and system for accessing distributed block storage system in kernel mode | |
CN113794764A (zh) | 服务器集群的请求处理方法、介质和电子设备 | |
KR101175505B1 (ko) | N?스크린 환경에서 네트워크 기반 파일 시스템을 이용한 사용자 데이터 저장환경 제공 시스템 | |
CN115421787A (zh) | 指令执行方法、装置、设备、系统、程序产品及介质 | |
CN111897847A (zh) | 基于多级缓存的数据读取和写入方法、系统、设备和介质 | |
US8549274B2 (en) | Distributive cache accessing device and method for accelerating to boot remote diskless computers | |
CN114706531A (zh) | 数据处理方法、装置、芯片、设备及介质 | |
WO2024051485A1 (en) | Methods and systems for request traffic management | |
CN115238006A (zh) | 检索数据同步方法、装置、设备及计算机存储介质 | |
CN111666579B (zh) | 计算机设备及其访问控制方法和计算机可读介质 | |
CN114036195A (zh) | 一种数据请求处理方法、装置、服务器和存储介质 | |
CN112748989A (zh) | 基于远程内存的虚拟机内存管理方法、系统、终端及介质 | |
CN112817769B (zh) | 游戏资源动态缓存方法、装置、存储介质与电子设备 | |
JPH0728677A (ja) | 記憶装置のファイル管理方式 | |
US11755534B2 (en) | Data caching method and node based on hyper-converged infrastructure | |
CN114327260B (zh) | 一种数据读取方法、系统、服务器及存储介质 | |
US12009976B2 (en) | Configuration of a server in view of a number of clients connected to the server | |
JP2012022532A (ja) | ストレージシステム及びストレージシステムのメモリキャッシュ領域制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |