基于双缓存区的缓存方法、装置、设备及存储介质与流程

文档序号:21777643发布日期:2020-08-07 19:45阅读:137来源:国知局
基于双缓存区的缓存方法、装置、设备及存储介质与流程

本发明涉及云技术领域,尤其涉及一种基于双缓存区的缓存方法、装置、设备及存储介质。



背景技术:

随着科技的发展,人类在上网时会产生各种各样的数据缓存,由于浏览网页过多,会产生较多的数据缓存,那么如何更好的将数据进行缓存,成为了一个急需解决的问题。目前采用java中的哈希映射(hashmap)以及一些开源的本地缓存框架当作本地缓存使用。

在现有的技术中,这种本地全局性的缓存不适合在线程隔离共享的场景中使用,局限性较大,且开源的缓存框架过于笨重,缓存的灵活性较低。



技术实现要素:

本发明的主要目的在于解决数据缓存中局限性较大且灵活性较低的问题。

本发明第一方面提供了一种基于双缓存区的缓存方法,包括:获取目标终端的缓存请求;判断所述缓存请求是否属于写入缓存请求、读取缓存请求或者删除缓存请求;若所述缓存请求属于所述写入缓存请求,则获取写入映射结构缓存实体,并采用线程共享写入方式或者线程隔离写入方式,将所述写入映射结构缓存实体写入预置缓存区,所述预置缓存区包括预置线程共享缓存区和预置线程隔离缓存区;若所述缓存请求属于所述读取缓存请求,则采用线程共享读取方式或者线程隔离读取方式从预置缓存区中,获取目标预置映射结构缓存实体并读取所述目标预置映射结构缓存实体,所述目标预置映射结构缓存实体为第一目标预置映射结构缓存实体或者第二目标预置映射结构缓存实体,所述第一目标预置映射结构缓存实体为通过线程共享读取方式从预置线程共享缓存区获取的预置映射结构缓存实体,所述第二目标预置映射结构缓存实体为通过线程隔离读取方式从预置线程隔离缓存区获取的预置映射结构缓存实体;若所述缓存请求属于所述删除缓存请求,则采用线程共享删除方式或者线程隔离删除方式,在预置缓存区中获取多个预置待删除缓存实体,并删除所述多个预置待删除缓存实体,所述多个预置待删除缓存实体为多个第一预置待删除缓存实体或者多个第二预置待删除缓存实体,所述多个第一预置待删除缓存实体为缓存在预置线程共享缓存区中的预置缓存实体,所述多个第二预置待删除缓存实体为缓存在预置线程隔离缓存区中的预置缓存实体。

可选的,在本发明第一方面的第一种实现方式中,所述若所述缓存请求属于所述写入缓存请求,则获取写入映射结构缓存实体,并采用线程共享写入方式或者线程隔离写入方式,将所述写入映射结构缓存实体写入预置缓存区,所述预置缓存区包括预置线程共享缓存区和预置线程隔离缓存区包括:若所述缓存请求属于所述写入缓存请求,则判断是否存在预置缓存区,若不存在预置缓存区,则先建立预置线程隔离缓存区,再建立预置线程共享缓存区,得到预置缓存区;根据所述写入缓存请求获取初始写入映射结构缓存实体,并根据所述初始写入映射结构缓存实体确定写入逻辑类型;根据所述写入逻辑类型,判断所述写入缓存请求的写入方式是否为线程共享写入方式或者为线程隔离写入方式;若判定所述写入缓存请求的写入方式为线程共享写入方式,则将所述预置线程共享缓存区的状态调整为临时读写状态,调整所述初始写入映射结构缓存实体,得到写入映射结构缓存实体,并将所述写入映射结构缓存实体写入预置线程共享缓存区;若判定所述写入缓存请求的写入方式为线程隔离写入方式,则调整所述初始写入映射结构缓存实体,得到写入映射结构缓存实体,并将所述写入映射结构缓存实体写入预置线程隔离缓存区。

可选的,在本发明第一方面的第二种实现方式中,所述根据所述写入缓存请求获取初始写入映射结构缓存实体,并根据所述初始写入映射结构缓存实体确定写入逻辑类型包括:根据所述写入缓存请求确定缓存句柄,并根据所述缓存句柄匹配对应的第一映射结构缓存实体;在所述第一映射结构缓存实体中添加键值,生成第二映射结构缓存实体,所述键值用于保存所述第一映射结构缓存实体的内容值;在所述第二映射结构缓存实体中添加有效时长,生成第三映射结构缓存实体;在所述第三映射结构缓存实体中添加更新时刻,生成初始写入映射结构缓存实体,并根据所述初始写入映射结构缓存实体确定写入逻辑类型,所述有效时长与所述更新时刻用于判断所述初始写入映射结构是否超时失效。

可选的,在本发明第一方面的第三种实现方式中,所述若判定所述写入缓存请求的写入方式为线程隔离写入方式,则调整所述初始写入映射结构缓存实体,得到写入映射结构缓存实体,并将所述写入映射结构缓存实体写入预置线程隔离缓存区包括:若判定所述写入缓存请求的写入方式为线程隔离写入方式,则将所述初始写入映射结构缓存实体与所述预置线程隔离缓存区中的多个预置写入线程进行匹配,得到目标写入线程;在所述预置线程隔离缓存区中判断所述目标写入线程是否存在对应的写入子缓存区;若在所述预置线程隔离缓存区中,不存在所述目标写入线程对应的写入子缓存区,则建立所述目标写入线程对应的写入子缓存区,得到目标写入子缓存区;将所述初始写入映射结构缓存实体的更新时刻调整为当前时刻,得到写入映射结构缓存实体,并将所述写入映射结构缓存实体存储到所述目标写入子缓存区中,所述目标写入子缓存区设置在所述预置线程隔离缓存区中。

可选的,在本发明第一方面的第四种实现方式中,所述若所述缓存请求属于所述读取缓存请求,则采用线程共享读取方式或者线程隔离读取方式从预置缓存区中,获取目标预置映射结构缓存实体并读取所述目标预置映射结构缓存实体,所述目标预置映射结构缓存实体为第一目标预置映射结构缓存实体或者第二目标预置映射结构缓存实体,所述第一目标预置映射结构缓存实体为通过线程共享读取方式从预置线程共享缓存区获取的预置映射结构缓存实体,所述第二目标预置映射结构缓存实体为通过线程隔离读取方式从预置线程隔离缓存区获取的预置映射结构缓存实体包括:若所述缓存请求属于所述读取缓存请求,则基于所述缓存请求提取读取句柄;基于所述读取句柄,确定读取逻辑类型,并基于所述读取逻辑类型判断所述读取缓存请求的读取方式是否为线程共享读取方式或者线程隔离读取方式;若所述读取缓存请求的读取方式为所述线程共享读取方式,则将所述预置线程共享缓存区的状态调整为临时读写状态,并从所述预置线程共享缓存区中获取第一目标预置映射结构缓存实体并读取所述第一目标预置映射结构缓存实体;若所述读取缓存请求的读取方式为所述线程隔离读取方式,则从所述预置线程隔离缓存区中获取第二目标预置映射结构缓存实体,并读取所述第二目标预置映射结构缓存实体。

可选的,在本发明第一方面的第五种实现方式中,所述若所述读取缓存请求的读取方式为所述线程隔离读取方式,则从所述预置线程隔离缓存区中获取第二目标预置映射结构缓存实体,并读取所述第二目标预置映射结构缓存实体包括:若所述读取缓存请求的读取方式为所述线程隔离读取方式,则在所述预置线程隔离缓存区的多个预置读取线程中,确定目标读取线程;根据所述目标读取线程,提取目标读取子线程,并从所述目标读取子线程中读取第二目标预置映射结构缓存实体;获取所述第二目标预置映射结构缓存实体的预置有效时长、预置更新时刻和当前时刻,对所述预置有效时长和所述预置更新时刻求和,得到失效时刻,并判断所述当前时刻是否大于所述失效时刻;若所述当前时刻大于所述失效时刻,则将第二目标预置映射结构缓存实体设置为空值。

可选的,在本发明第一方面的第六种实现方式中,所述若所述目标终端的缓存请求属于所述删除缓存请求,则采用线程共享删除方式或者线程隔离删除方式,在预置缓存区中获取多个预置待删除缓存实体,并删除所述多个预置待删除缓存实体,所述多个预置待删除缓存实体为多个第一预置待删除缓存实体或者多个第二预置待删除缓存实体,所述多个第一预置待删除缓存实体为缓存在预置线程共享缓存区中的预置缓存实体,所述多个第二预置待删除缓存实体为缓存在预置线程隔离缓存区中的预置缓存实体包括:若所述缓存请求属于所述删除缓存请求,并采用线程共享删除方式删除预置待删除缓存请求实体,则将所述预置线程共享缓存区的状态调整为临时读写状态,并基于所述更新时刻、所述有效时长和当前时刻,遍历所述预置线程共享缓存区中的多个预置缓存实体,确定多个第一预置待删除缓存实体,删除所述多个第一预置待删除缓存实体;若所述缓存请求属于所述删除缓存请求,并采用线程隔离删除方式删除预置待删除缓存请求实体,则遍历所述预置线程隔离缓存区中的多个子缓存区,基于所述更新时刻、所述有效时长和当前时刻,在多个子缓存区中确定第二预置待删除缓存实体,删除所述多个第二预置待删除缓存实体。

本发明第二方面提供了一种基于双缓存区的缓存装置,包括:获取模块,用于获取目标终端的缓存请求;判断模块,用于判断所述缓存请求是否属于写入缓存请求、读取缓存请求或者删除缓存请求;写入模块,若所述缓存请求属于所述写入缓存请求,则用于获取写入映射结构缓存实体,并采用线程共享写入方式或者线程隔离写入方式,将所述写入映射结构缓存实体写入预置缓存区,所述预置缓存区包括预置线程共享缓存区和预置线程隔离缓存区;读取模块,若所述缓存请求属于所述读取缓存请求,则用于采用线程共享读取方式或者线程隔离读取方式从预置缓存区中,获取目标预置映射结构缓存实体并读取所述目标预置映射结构缓存实体,所述目标预置映射结构缓存实体为第一目标预置映射结构缓存实体或者第二目标预置映射结构缓存实体,所述第一目标预置映射结构缓存实体为通过线程共享读取方式从预置线程共享缓存区获取的预置映射结构缓存实体,所述第二目标预置映射结构缓存实体为通过线程隔离读取方式从预置线程隔离缓存区获取的预置映射结构缓存实体;删除模块,所述缓存请求属于所述删除缓存请求,则用于采用线程共享删除方式或者线程隔离删除方式,在预置缓存区中获取多个预置待删除缓存实体,并删除所述多个预置待删除缓存实体,所述多个预置待删除缓存实体为多个第一预置待删除缓存实体或者多个第二预置待删除缓存实体,多个第一预置待删除缓存实体为缓存在预置线程共享缓存区中的预置缓存实体,多个第二预置待删除缓存实体为缓存在预置线程隔离缓存区中的预置缓存实体。

可选的,在本发明第二方面的第一种实现方式中,所述写入模块具体包括:第一判断单元,若所述缓存请求属于所述写入缓存请求,则用于判断是否存在预置缓存区,若不存在预置缓存区,则先建立预置线程隔离缓存区,再建立预置线程共享缓存区,得到预置缓存区;获取单元,用于根据所述写入缓存请求获取初始写入映射结构缓存实体,并根据所述初始写入映射结构缓存实体确定写入逻辑类型;第二判断单元,用于根据所述写入逻辑类型,判断所述写入缓存请求的写入方式是否为线程共享写入方式或者为线程隔离写入方式;共享写入单元,若判定所述写入缓存请求的写入方式为线程共享写入方式,则用于将所述预置线程共享缓存区的状态调整为临时读写状态,调整所述初始写入映射结构缓存实体,得到写入映射结构缓存实体,并将所述写入映射结构缓存实体写入预置线程共享缓存区;隔离写入单元,若判定所述写入缓存请求的写入方式为线程隔离写入方式,则用于调整所述初始写入映射结构缓存实体,得到写入映射结构缓存实体,并将所述写入映射结构缓存实体写入预置线程隔离缓存区。

可选的,在本发明第二方面的第二种实现方式中,所述获取单元具体用于:根据所述写入缓存请求确定缓存句柄,并根据所述缓存句柄匹配对应的第一映射结构缓存实体;在所述第一映射结构缓存实体中添加键值,生成第二映射结构缓存实体,所述键值用于保存所述第一映射结构缓存实体的内容值;在所述第二映射结构缓存实体中添加有效时长,生成第三映射结构缓存实体;在所述第三映射结构缓存实体中添加更新时刻,生成初始写入映射结构缓存实体,并根据所述初始写入映射结构缓存实体确定写入逻辑类型,所述有效时长与所述更新时刻用于判断所述初始写入映射结构是否超时失效。

可选的,在本发明第二方面的第三种实现方式中,所述隔离写入单元具体用于:若判定所述写入缓存请求的写入方式为线程隔离写入方式,则将所述初始写入映射结构缓存实体与所述预置线程隔离缓存区中的多个预置写入线程进行匹配,得到目标写入线程;在所述预置线程隔离缓存区中判断所述目标写入线程是否存在对应的写入子缓存区;若在所述预置线程隔离缓存区中,不存在所述目标写入线程对应的写入子缓存区,则建立所述目标写入线程对应的写入子缓存区,得到目标写入子缓存区;将所述初始写入映射结构缓存实体的更新时刻调整为当前时刻,得到写入映射结构缓存实体,并将所述写入映射结构缓存实体存储到所述目标写入子缓存区中,所述目标写入子缓存区设置在所述预置线程隔离缓存区中。

可选的,在本发明第二方面的第四种实现方式中,所述读取模块具体包括:读取单元,若所述缓存请求属于所述读取缓存请求,则用于基于所述缓存请求提取读取句柄;第三判断单元,用于基于所述读取句柄,确定读取逻辑类型,并基于所述读取逻辑类型判断所述读取缓存请求的读取方式是否为线程共享读取方式或者线程隔离读取方式;共享读取单元,若所述读取缓存请求的读取方式为所述线程共享读取方式,则用于将所述预置线程共享缓存区的状态调整为临时读写状态,并从所述预置线程共享缓存区中获取第一目标预置映射结构缓存实体并读取所述第一目标预置映射结构缓存实体;隔离读取单元,若所述读取缓存请求的读取方式为所述线程隔离读取方式,则用于从所述预置线程隔离缓存区中获取第二目标预置映射结构缓存实体,并读取所述第二目标预置映射结构缓存实体。

可选的,在本发明第二方面的第五种实现方式中,所述隔离读取单元具体用于:若所述读取缓存请求的读取方式为所述线程隔离读取方式,则在所述预置线程隔离缓存区的多个预置读取线程中,确定目标读取线程;根据所述目标读取线程,提取目标读取子线程,并从所述目标读取子线程中读取第二目标预置映射结构缓存实体;获取第二目标预置映射结构缓存实体的预置有效时长、预置更新时刻和当前时刻,对所述预置有效时长和所述预置更新时刻求和,得到失效时刻,并判断所述当前时刻是否大于所述失效时刻;若所述当前时刻大于所述失效时刻,则将第二目标预置映射结构缓存实体设置为空值。

可选的,在本发明第二方面的第六种实现方式中,所述删除模块具体用于:若所述缓存请求属于所述删除缓存请求,并采用线程共享删除方式删除预置待删除缓存请求实体,则将所述预置线程共享缓存区的状态调整为临时读写状态,并基于所述更新时刻、所述有效时长和当前时刻,遍历所述预置线程共享缓存区中的多个预置缓存实体,确定多个第一预置待删除缓存实体,删除所述多个第一预置待删除缓存实体;若所述缓存请求属于所述删除缓存请求,并采用线程隔离删除方式删除预置待删除缓存请求实体,则遍历所述预置线程隔离缓存区中的多个子缓存区,基于所述更新时刻、所述有效时长和当前时刻,在多个子缓存区中确定第二预置待删除缓存实体,删除所述多个第二预置待删除缓存实体。

本发明第三方面提供了一种基于双缓存区的缓存设备,包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;所述至少一个处理器调用所述存储器中的所述指令,以使得所述基于双缓存区的缓存设备执行上述的基于双缓存区的缓存方法。

本发明的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述的基于双缓存区的缓存方法。

本发明提供的技术方案中,获取目标终端的缓存请求;判断所述缓存请求是否属于写入缓存请求、读取缓存请求或者删除缓存请求;若所述缓存请求属于所述写入缓存请求,则获取写入映射结构缓存实体,并采用线程共享写入方式或者线程隔离写入方式,将所述写入映射结构缓存实体写入预置缓存区,所述预置缓存区包括预置线程共享缓存区和预置线程隔离缓存区;若所述缓存请求属于所述读取缓存请求,则采用线程共享读取方式或者线程隔离读取方式从预置缓存区中,获取目标预置映射结构缓存实体并读取所述目标预置映射结构缓存实体,所述目标预置映射结构缓存实体为第一目标预置映射结构缓存实体或者第二目标预置映射结构缓存实体;若所述缓存请求属于所述删除缓存请求,则采用线程共享删除方式或者线程隔离删除方式,在预置缓存区中获取多个预置待删除缓存实体,并删除所述多个预置待删除缓存实体,所述多个预置待删除缓存实体为多个第一预置待删除缓存实体或者多个第二预置待删除缓存实体。本发明实施例中,通过使用线程共享的缓存方式与线程隔离的缓存方式对缓存实体进行缓存,并且设置超时机制和缓存机制,能够根据不同的缓存请求和不同的缓存逻辑类型,将数据存储在不同的缓存区中,提高了缓存的灵活性,降低了数据缓存的局限性,且能够自动清除超时的缓存实体。

附图说明

图1为本发明实施例中基于双缓存区的缓存方法的一个实施例示意图;

图2为本发明实施例中基于双缓存区的缓存方法的另一个实施例示意图;

图3为本发明实施例中基于双缓存区的缓存装置的一个实施例示意图;

图4为本发明实施例中基于双缓存区的缓存装置的另一个实施例示意图;

图5为本发明实施例中基于双缓存区的缓存设备的一个实施例示意图。

具体实施方式

本发明实施例提供了一种基于双缓存区的缓存方法、装置、设备及存储介质,用于利用线程共享的缓存方式与线程隔离的缓存方式对缓存实体进行缓存,降低了数据缓存的局限性,提高了数据缓存的灵活性。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

为便于理解,下面对本发明实施例的具体流程进行描述,请参阅图1,本发明实施例中基于双缓存区的缓存方法的一个实施例包括:

101、获取目标终端的缓存请求;

服务器获取目标终端的缓存请求,目标终端的缓存请求可以为写入缓存请求、读取缓存请求或者删除缓存请求。

例如,写入缓存请求可以理解为目标终端书写word文档时,服务器存储文本;读取缓存请求可以理解为目标终端浏览网页时,服务器读取文本或者图片;删除缓存请求可以理解为目标终端清理手机内存时,服务器清除浏览网页产生的数据。

可以理解的是,本发明的执行主体可以为基于双缓存区的缓存装置,还可以是终端或者服务器,具体此处不做限定。本发明实施例以服务器为执行主体为例进行说明。

102、判断缓存请求是否属于写入缓存请求、读取缓存请求或者删除缓存请求;

服务器判断来自目标终端的缓存请求具体为写入缓存请求、读取缓存请求后者删除缓存请求。

缓存是一种能够存储我们通常需要使用的数据的技术,它能够把通常使用的数据暂时存储在本地的硬盘或内存中以供后续的检索。这种技术在多个用户同时访问一个站点,或者一个用户多次访问一个站点时,有效地提升了访问速度。缓存可以分为写入缓存请求、读取缓存请求与删除缓存请求,写入缓存请求可以理解为将没有被存储到本地的数据暂时写入到本地的硬盘或内存中;读取缓存请求可以理解为将已经被存储到本地的数据读取出来;删除缓存请求可以理解为将已经被存储到本地的数据删除掉。在本实施例中,服务器判断缓存请求属于写入缓存请求、读取缓存请求还是删除缓存请求,服务器针对不同的缓存请求进行不同的缓存处理。

103、若缓存请求属于写入缓存请求,则获取写入映射结构缓存实体,并采用线程共享写入方式或者线程隔离写入方式,将写入映射结构缓存实体写入预置缓存区,预置缓存区包括预置线程共享缓存区和预置线程隔离缓存区;

如果来自缓存请求属于写入缓存请求,服务器获取写入映射结构缓存实体,并采用线程共享写入方式将写入映射结构缓存实体写入预置线程共享缓存区中,或者采用线程隔离写入方式将写入映射结构缓存实体写入预置线程隔离缓存区中。

例如,假设多人使用网上银行提现,此时采用线程共享写入方式将多人使用网上银行提现产生的写入映射结构缓存实体写入到预置线程共享缓存区中;假设某个人在单独成长的游戏中获取经验,此时采用线程隔离写入方式将个人游戏经验产生的写入映射结构缓存实体写入预置线程隔离缓存区中。

104、若缓存请求属于读取缓存请求,则采用线程共享读取方式或者线程隔离读取方式从预置缓存区中,获取目标预置映射结构缓存实体并读取目标预置映射结构缓存实体,目标预置映射结构缓存实体为第一目标预置映射结构缓存实体或者第二目标预置映射结构缓存实体,第一目标预置映射结构缓存实体为通过线程共享读取方式从预置线程共享缓存区获取的预置映射结构缓存实体,第二目标预置映射结构缓存实体为通过线程隔离读取方式从预置线程隔离缓存区获取的预置映射结构缓存实体;

如果来自目标终端的缓存请求属于读取缓存请求,服务器采用线程共享读取方式从预置线程共享缓存区中获取并读取第一目标预置映射结构缓存实体,或者采用线程隔离读取方式从预置线程隔离缓存区中获取并读取第二目标预置映射结构缓存实体。

例如,假设从团队游戏中,读取个人的游戏经验,则采用线程共享读取方式在预置线程共享缓存区中读取该游戏经验的第一目标预置映射结构缓存实体;假设从个人的网上提现记录中,获取某一次的提现记录,则采用线程隔离方式在预置线程隔离缓存区中读取该提现记录的第二目标预置映射机构缓存实体。

105、若缓存请求属于删除缓存请求,则采用线程共享删除方式或者线程隔离删除方式,在预置缓存区中获取多个预置待删除缓存实体,并删除多个预置待删除缓存实体,多个预置待删除缓存实体为多个第一预置待删除缓存实体或者多个第二预置待删除缓存实体,多个第一预置待删除缓存实体为缓存在预置线程共享缓存区中的预置缓存实体,多个第二预置待删除缓存实体为缓存在预置线程隔离缓存区中的预置缓存实体。

如果来自目标终端的缓存请求属于删除缓存请求,服务器采用线程共享删除方式从预置线程共享缓存区中删除多个第一预置待删除缓存实体,或者采用线程隔离删除方式从预置线程隔离缓存区中删除多个第二预置待删除缓存实体。

例如,假设从新闻的多个评论中,删除某几条评论信息,则采用线程共享删除方式从预置线程共享缓存区删除该评论信息的多个第一预置待删除缓存实体;假设从个人的多个网上提现记录中,删除几条提现记录,则采用线程隔离的删除方式从预置线程隔离缓存区删除该提现记录的第二预置待删除缓存实体。

本发明实施例中,通过使用线程共享的缓存方式与线程隔离的缓存方式对缓存实体进行缓存,并且设置超时机制和缓存机制,能够根据不同的缓存请求和不同的缓存逻辑类型,将数据存储在不同的缓存区中,提高了缓存的灵活性,降低了数据缓存的局限性,且能够自动清除超时的缓存实体。

请参阅图2,本发明实施例中基于双缓存区的缓存方法的另一个实施例包括:

201、获取目标终端的缓存请求;

服务器获取目标终端的缓存请求,目标终端的缓存请求可以为写入缓存请求、读取缓存请求或者删除缓存请求。

例如,写入缓存请求可以理解为目标终端书写word文档时,服务器存储文本;读取缓存请求可以理解为目标终端浏览网页时,服务器读取文本或者图片;删除缓存请求可以理解为目标终端清理手机内存时,服务器清除浏览网页产生的数据。

202、判断缓存请求是否属于写入缓存请求、读取缓存请求或者删除缓存请求;

服务器判断来自目标终端的缓存请求具体为写入缓存请求、读取缓存请求后者删除缓存请求。

缓存是一种能够存储我们通常需要使用的数据的技术,它能够把通常使用的数据暂时存储在本地的硬盘或内存中以供后续的检索。这种技术在多个用户同时访问一个站点,或者一个用户多次访问一个站点时,有效地提升了访问速度。缓存可以分为写入缓存请求、读取缓存请求与删除缓存请求,写入缓存请求可以理解为将没有被存储到本地的数据暂时写入到本地的硬盘或内存中;读取缓存请求可以理解为将已经被存储到本地的数据读取出来;删除缓存请求可以理解为将已经被存储到本地的数据删除掉。在本实施例中,服务器判断缓存请求属于写入缓存请求、读取缓存请求还是删除缓存请求,服务器针对不同的缓存请求进行不同的缓存处理。

203、若缓存请求属于写入缓存请求,则获取写入映射结构缓存实体,并采用线程共享写入方式或者线程隔离写入方式,将写入映射结构缓存实体写入预置缓存区,预置缓存区包括预置线程共享缓存区和预置线程隔离缓存区;

例如,假设多人使用网上银行提现,此时采用线程共享写入方式将多人使用网上银行提现产生的写入映射结构缓存实体写入到预置线程共享缓存区中;假设某个人在单独成长的游戏中获取经验,此时采用线程隔离写入方式将个人游戏经验产生的写入映射结构缓存实体写入预置线程隔离缓存区中。

具体的,若缓存请求属于写入缓存请求,服务器首先要判断是否存在预置缓存区,若不存在预置缓存区,要先建立预置线程隔离缓存区,再建立预置线程共享缓存区,从而得到预置缓存区,使得数据可以写入到预置缓存区;其次,服务器再根据写入缓存请求获取初始写入映射结构缓存实体,初始写入映射结构缓存实体可以理解为需要写入的初始缓存数据;其次服务器再根据初始写入映射结构缓存实体获取写入逻辑类型,写入逻辑类型可以为线程隔离写入类型,也可以为线程共享写入类型,服务器再调整初始写入映射结构缓存实体,从而得到写入映射缓存实体;如果写入逻辑类型为线程隔离写入类型,服务器则采用线程隔离写入方式将写入映射结构缓存实体写入到预置线程隔离缓存区中;如果写入逻辑类型为线程共享写入类型,服务器则采用线程共享方式将写入映射结构缓存实体写入到预置线程共享缓存区中。

根据缓存请求获取缓存实体的具体步骤为:

服务器通过缓存请求提取缓存句柄,再根据缓存句柄获取对应的第一映射结构缓存实体,服务器对第一映射结构缓存实体依次添加键值、有效时长与更新时刻,从而得到初始写入映射结构缓存实体。

需要说明的是,键值用于存储第一映射结构缓存实体的内容值,根据内容值能够获取第一映射结构缓存实体的具体数据,有效时长与更新时刻用于判断当前初始写入映射结构缓存实体是否超时失效,若当前时刻大于更新时刻与有效时长的和,则说明初始写入映射结构实体已经超时失效。

将写入映射结构缓存实体写入预置线程隔离缓存区具体步骤为:

若判断写入缓存请求的写入方式为线程隔离写入方式,则将初始写入映射结构缓存实体在预置线程隔离缓存区中与多个预置写入线程进行对比,得到目标写入线程;判断判断目标写入线程是否存在对应的写入子缓存区;若在预置线程隔离缓存区中不存在目标写入线程对应的写入子缓存区,则建立目标写入子缓存区;将初始写入映射结构缓存实体的更新时刻调整为当前时刻,得到写入映射结构缓存实体,并将写入映射结构缓存实体存储到设置在预置线程隔离缓存区中的目标写入子缓存区中。

204、若缓存请求属于读取缓存请求,则基于缓存请求提取读取句柄;

如果缓存请求属于读取缓存请求,服务器从缓存请求中提取对应的读取句柄,读取句柄用于标识服务器中的不同对象和同类中的不同的实例,例如,一个窗口、按钮、图标、滚动条、输出设备、控件或者文件等。服务器能够通过句柄访问相应的对象的信息。

205、基于读取句柄,确定读取逻辑类型,并基于读取逻辑类型判断读取缓存请求的读取方式是否为线程共享读取方式或者线程隔离读取方式;

服务器从读取句柄中获取缓存请求对应的读取逻辑类型,并通过逻辑类型判断采用线程共享读取方式在预置线程共享缓存区中读取第一预置映射结构缓存实体,或者采用线程隔离方式在预置线程隔离缓存区中读取第二预置映射结构缓存实体。

206、若读取缓存请求的读取方式为线程共享读取方式,则将预置线程共享缓存区的状态调整为临时读写状态,并从预置线程共享缓存区中获取第一目标预置映射结构缓存实体并读取第一目标预置映射结构缓存实体;

如果根据读取逻辑类型判断采用线程共享读取方式读取预置映射结构缓存实体,首先服务器将预置线程共享缓存区的状态调整为临时读写状态,通过缓存请求在预置线程共享缓存区中匹配得到第一目标预置映射结构缓存实体,并读取第一目标预置映射结构缓存实体。

207、若读取缓存请求的读取方式为线程隔离读取方式,则从预置线程隔离缓存区中获取第二目标预置映射结构缓存实体,并读取第二目标预置映射结构缓存实体;

具体的,若读取缓存请求的读取方式为线程隔离读取方式,服务器则在预置线程隔离缓存区中匹配得到目标读取线程;服务器根据目标读取线程,提取目标读取子线程,并从目标读取子线程中读取第二目标预置映射结构缓存实体;服务器获取第二目标预置映射结构缓存实体的预置有效时长、预置更新时刻和当前时刻,将预置有效时长和预置更新时刻相加,得到失效时刻,并判断当前时刻是否大于失效时刻;如果当前时刻大于失效时刻,则说明第二目标预置映射结构缓存实体已经过期失效,则将第二目标预置映射结构缓存实体设置为空值。

208、若缓存请求属于删除缓存请求,则采用线程共享删除方式或者线程隔离删除方式,在预置缓存区中获取多个预置待删除缓存实体,并删除多个预置待删除缓存实体,多个预置待删除缓存实体为多个第一预置待删除缓存实体或者多个第二预置待删除缓存实体。

如果来自目标终端的缓存请求属于删除缓存请求,服务器采用线程共享删除方式从预置线程共享缓存区中删除多个第一预置待删除缓存实体,或者采用线程隔离删除方式从预置线程隔离缓存区中删除多个第二预置待删除缓存实体。

例如,假设从新闻的多个评论中,删除某几条评论信息,则采用线程共享删除方式从预置线程共享缓存区删除该评论信息的多个第一预置待删除缓存实体;假设从个人的多个网上提现记录中,删除几条提现记录,则采用线程隔离的删除方式从预置线程隔离缓存区删除该提现记录的第二预置待删除缓存实体。

具体的,当在预置线程共享缓存区中删除多个预置待清除缓存实体时,服务器首先将预置线程共享缓存区的状态调整为临时读写状态,服务器遍历预置线程共享缓存区中的多个预置缓存实体,并判断当前时刻是否大于多个预置缓存实体对应的多个失效时刻,将当前时刻大于失效时刻的多个预置缓存实体作为多个第一预置待清除缓存实体,并将多个第一预置待清除缓存实体进行删除。当在预置线程隔离缓存区删除预置待清除缓存实体时,服务器遍历预置线程隔离缓存区中的多个子缓存区,服务器分别在多个子缓存区中将当前时刻大于失效时刻的多个预置缓存实体作为多个第二预置待清除缓存实体,服务器最终删除多个第二预置待清除缓存实体。

需要说明的是,预置缓存实体的更新时刻会一直发生变化,服务器判断预置缓存实体是否为带清楚缓存实体时,以最后的更新时刻为准判断预置缓存实体是否失效。

本发明实施例中,通过使用线程共享的缓存方式与线程隔离的缓存方式对缓存实体进行缓存,并且设置超时机制和缓存机制,能够根据不同的缓存请求和不同的缓存逻辑类型,将数据存储在不同的缓存区中,提高了缓存的灵活性,降低了数据缓存的局限性,且能够自动清除超时的缓存实体。

上面对本发明实施例中基于双缓存区的缓存方法进行了描述,下面对本发明实施例中基于双缓存区的缓存装置进行描述,请参阅图3,本发明实施例中基于双缓存区的缓存装置一个实施例包括:

获取模块301,用于获取目标终端的缓存请求;

判断模块302,用于判断缓存请求是否属于写入缓存请求、读取缓存请求或者删除缓存请求;

写入模块303,若缓存请求属于写入缓存请求,则用于获取写入映射结构缓存实体,并采用线程共享写入方式或者线程隔离写入方式,将写入映射结构缓存实体写入预置缓存区,预置缓存区包括预置线程共享缓存区和预置线程隔离缓存区;

读取模块304,若缓存请求属于读取缓存请求,则用于采用线程共享读取方式或者线程隔离读取方式从预置缓存区中,获取目标预置映射结构缓存实体并读取目标预置映射结构缓存实体,目标预置映射结构缓存实体为第一目标预置映射结构缓存实体或者第二目标预置映射结构缓存实体,第一目标预置映射结构缓存实体为通过线程共享读取方式从预置线程共享缓存区获取的预置映射结构缓存实体,第二目标预置映射结构缓存实体为通过线程隔离读取方式从预置线程隔离缓存区获取的预置映射结构缓存实体;

删除模块305,若缓存请求属于删除缓存请求,则用于采用线程共享删除方式或者线程隔离删除方式,在预置缓存区中获取多个预置待删除缓存实体,并删除多个预置待删除缓存实体,多个预置待删除缓存实体为多个第一预置待删除缓存实体或者多个第二预置待删除缓存实体,多个第一预置待删除缓存实体为缓存在预置线程共享缓存区中的预置缓存实体,多个第二预置待删除缓存实体为缓存在预置线程隔离缓存区中的预置缓存实体。

本发明实施例中,通过使用线程共享的缓存方式与线程隔离的缓存方式对缓存实体进行缓存,并且设置超时机制和缓存机制,能够根据不同的缓存请求和不同的缓存逻辑类型,将数据存储在不同的缓存区中,提高了缓存的灵活性,降低了数据缓存的局限性,且能够自动清除超时的缓存实体。

请参阅图4,本发明实施例中基于双缓存区的缓存装置的另一个实施例包括:

获取模块301,用于获取目标终端的缓存请求;

判断模块302,用于判断缓存请求是否属于写入缓存请求、读取缓存请求或者删除缓存请求;

写入模块303,若缓存请求属于写入缓存请求,则用于获取写入映射结构缓存实体,并采用线程共享写入方式或者线程隔离写入方式,将写入映射结构缓存实体写入预置缓存区,预置缓存区包括预置线程共享缓存区和预置线程隔离缓存区;

读取模块304,若缓存请求属于读取缓存请求,则用于采用线程共享读取方式或者线程隔离读取方式从预置缓存区中,获取目标预置映射结构缓存实体并读取目标预置映射结构缓存实体,目标预置映射结构缓存实体为第一目标预置映射结构缓存实体或者第二目标预置映射结构缓存实体;

删除模块305,若缓存请求属于删除缓存请求,则用于采用线程共享删除方式或者线程隔离删除方式,在预置缓存区中获取多个预置待删除缓存实体,并删除多个预置待删除缓存实体,多个预置待删除缓存实体为多个第一预置待删除缓存实体或者多个第二预置待删除缓存实体。

可选的,写入模块303包括:

第一判断单元3031,若缓存请求属于写入缓存请求,则用于判断是否存在预置缓存区,若不存在预置缓存区,则先建立预置线程隔离缓存区,再建立预置线程共享缓存区,得到预置缓存区;

获取单元3032,用于根据写入缓存请求获取初始写入映射结构缓存实体,并根据初始写入映射结构缓存实体确定写入逻辑类型;

第二判断单元3033,用于根据写入逻辑类型,判断写入缓存请求的写入方式是否为线程共享写入方式或者为线程隔离写入方式;

共享写入单元3034,若判断写入缓存请求的写入方式为线程共享写入方式,则用于将预置线程共享缓存区的状态调整为临时读写状态,调整初始写入映射结构缓存实体,得到写入映射结构缓存实体,并将写入映射结构缓存实体写入预置线程共享缓存区;

隔离写入单元3035,若判断写入缓存请求的写入方式为线程隔离写入方式,则用于调整初始写入映射结构缓存实体,得到写入映射结构缓存实体,并将写入映射结构缓存实体写入预置线程隔离缓存区。

可选的,获取单元3032还可以具体用于:

根据缓存请求确定缓存句柄,并根据缓存句柄匹配对应的第一映射结构缓存实体;

在第一映射结构缓存实体中添加键值,生成第二映射结构缓存实体,键值用于保存第一映射结构缓存实体的内容值;

在第二映射结构缓存实体中添加有效时长,生成第三映射结构缓存实体;

在第三映射结构缓存实体中添加更新时刻,生成初始写入映射结构缓存实体,并根据初始写入映射结构缓存实体确定写入逻辑类型,有效时长与更新时刻用于判断初始写入映射结构是否超时失效。

可选的,隔离写入单元3035具体用于:

若判断写入缓存请求的写入方式为线程隔离写入方式,则将初始写入映射结构缓存实体与预置线程隔离缓存区中的多个预置写入线程进行匹配,得到目标写入线程;

在预置线程隔离缓存区中判断目标写入线程是否存在对应的写入子缓存区;

若在预置线程隔离缓存区中,不存在目标写入线程对应的写入子缓存区,则建立目标写入线程对应的写入子缓存区,得到目标写入子缓存区;

将初始写入映射结构缓存实体的更新时刻调整为当前时刻,得到写入映射结构缓存实体,并将写入映射结构缓存实体存储到目标写入子缓存区中,目标写入子缓存区设置在预置线程隔离缓存区中。

可选的,读取模块304包括:

读取单元3041,若缓存请求属于读取缓存请求,则用于基于缓存请求提取读取句柄;

第三判断单元3042,用于基于读取句柄,确定读取逻辑类型,并基于读取逻辑类型判断读取缓存请求的读取方式是否为线程共享读取方式或者线程隔离读取方式;

共享读取单元3043,若读取缓存请求的读取方式为线程共享读取方式,则用于将预置线程共享缓存区的状态调整为临时读写状态,并从预置线程共享缓存区中获取第一目标预置映射结构缓存实体并读取第一目标预置映射结构缓存实体;

隔离读取单元3044,若读取缓存请求的读取方式为线程隔离读取方式,则用于从预置线程隔离缓存区中获取第二目标预置映射结构缓存实体,并读取第二目标预置映射结构缓存实体。

可选的,隔离读取单元3044具体还用于:

若读取缓存请求的读取方式为线程隔离读取方式,则在预置线程隔离缓存区的多个预置读取线程中,确定目标读取线程;

根据目标读取线程,提取目标读取子线程,并从目标读取子线程中读取第二目标预置映射结构缓存实体;

获取第二目标预置映射结构缓存实体的预置有效时长、预置更新时刻和当前时刻,对预置有效时长和预置更新时刻求和,得到失效时刻,并判断当前时刻是否大于失效时刻;

若当前时刻大于失效时刻,则将第二目标预置映射结构缓存实体设置为空值。

可选的,删除模块305具体还用于:

若缓存请求属于删除缓存请求,并采用线程共享删除方式删除预置待删除缓存请求实体,则将预置线程共享缓存区的状态调整为临时读写状态,并基于更新时刻、有效时长和当前时刻,遍历预置线程共享缓存区中的多个预置缓存实体,确定多个第一预置待删除缓存实体,删除多个第一预置待删除缓存实体;

若缓存请求属于删除缓存请求,并采用线程隔离删除方式删除预置待删除缓存请求实体,则遍历预置线程隔离缓存区中的多个子缓存区,基于更新时刻、有效时长和当前时刻,在多个子缓存区中确定第二预置待删除缓存实体,删除多个第二预置待删除缓存实体。

本发明实施例中,通过使用线程共享的缓存方式与线程隔离的缓存方式对缓存实体进行缓存,并且设置超时机制和缓存机制,能够根据不同的缓存请求和不同的缓存逻辑类型,将数据存储在不同的缓存区中,提高了缓存的灵活性,降低了数据缓存的局限性,且能够自动清除超时的缓存实体。

上面图3和图4从模块化功能实体的角度对本发明实施例中的基于双缓存区的缓存装置进行详细描述,下面从硬件处理的角度对本发明实施例中基于双缓存区的缓存设备进行详细描述。

图5是本发明实施例提供的一种基于双缓存区的缓存设备的结构示意图,该基于双缓存区的缓存设备500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessingunits,cpu)510(例如,一个或一个以上处理器)和存储器520,一个或一个以上存储应用程序533或数据532的存储介质530(例如一个或一个以上海量存储设备)。其中,存储器520和存储介质530可以是短暂存储或持久存储。存储在存储介质530的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对基于双缓存区的缓存设备500中的一系列指令操作。更进一步地,处理器510可以设置为与存储介质530通信,在基于双缓存区的缓存设备500上执行存储介质530中的一系列指令操作。

基于双缓存区的缓存设备500还可以包括一个或一个以上电源540,一个或一个以上有线或无线网络接口550,一个或一个以上输入输出接口560,和/或,一个或一个以上操作系统531,例如windowsserve,macosx,unix,linux,freebsd等等。本领域技术人员可以理解,图5示出的基于双缓存区的缓存设备结构并不构成对基于双缓存区的缓存设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

本发明还提供一种计算机可读存储介质,该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行所述基于双缓存区的缓存方法的步骤。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1