掌桥专利:专业的专利平台
掌桥专利
首页

数据缓存方法、装置、电子设备及计算机可读存储介质

文献发布时间:2023-06-19 09:38:30


数据缓存方法、装置、电子设备及计算机可读存储介质

技术领域

本公开涉及数据缓存领域,尤其涉及一种数据缓存方法、装置、电子设备及计算机可读存储介质。

背景技术

随着信息科技的快速发展,移动互联网技术也突飞猛进。无论是智能设备的出现,还是5G时代的到来,亦或是大数据、AI智能和算法等技术的应用,都给电子移动设备插上了腾飞的翅膀。在现实生活中,得益于这些技术而使社会交往变的丰富多彩,尤其是智能手机的出现,它打破了人类日常交往的时空限制,是一款真正集海量信息、网络视听和休闲娱乐等为一体的综合型掌上移动设备,满足了人们的日常信息需求和社会交往。

在互联网业务中,经常有访问频次很高的热点数据,对热点数据的反复读取会增加存储服务的负担,导致存储服务卡顿;另外存储服务所使用的存储设备通常容量大速度慢,对于热点数据的响应速度不够快。对于能够预知的热点数据,如重大新闻、重大活动等可以提前将热点数据进行缓存,但是对于一些热度在实时变化的数据,是难以提前预测的,因此无法确定哪些数据需要被缓存。

发明内容

提供该发明内容部分以便以简要的形式介绍构思,这些构思将在后面的具体实施方式部分被详细描述。该发明内容部分并不旨在标识要求保护的技术方案的关键特征或必要特征,也不旨在用于限制所要求的保护的技术方案的范围。

为了解决上述技术问题,本公开实施例提出如下技术方案。

第一方面,本公开实施例提供一种数据缓存方法,包括:

从数据请求源接收第一请求;

响应于缓存中不存在所述第一请求所请求的第一数据,发送第二请求至数据存储源;

从所述数据存储源接收所述第一数据以及所述第一数据的访问次数;

发送所述第一数据至所述数据请求源;

响应于所述第一数据的访问次数大于第一阈值,缓存所述第一数据。

第二方面,本公开实施例提供一种数据发送方法,包括:

从数据转发源接收第二请求;

响应于所述第二请求中的来源参数为数据请求源,累加所述第二请求所对应的第一数据的访问次数;

将所述第一数据以及第一数据的访问次数发送至所述数据转发源。

第三方面,本公开实施例提供一种数据缓存装置,包括:

第一接收模块,用于从数据请求源接收数据请求;

请求发送模块,用于响应于缓存中不存在所述第一请求所请求的第一数据,发送第二请求至数据存储源;

第二接收模块,用于从所述数据存储源接收所述第一数据以及所述第一数据的访问次数;

第一发送模块,用于发送所述第一数据至所述数据请求源;

数据缓存模块,用于响应于所述第一数据的访问次数大于第一阈值,缓存所述第一数据。

第四方面,本公开实施例提供一种数据发送装置,包括:

第二接收模块,用于接收数据请求;

第二发送模块,用于响应于所述数据请求中的来源参数为数据请求源,将与所述数据请求所对应的第一数据以及第一数据的访问次数发送至数据转发源;

第一累加模块,用于累加所述第一数据的访问次数。

第五方面,本公开实施例提供一种电子设备,包括:至少一个处理器;以及,

与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有能被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行前述任一所述的方法。

第六方面,本公开实施例提供一种非暂态计算机可读存储介质,其特征在于,该非暂态计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行前述任一所述的方法。

本公开实施例公开了一种数据缓存方法、装置、电子设备和计算机可读存储介质。其中该数据缓存方法包括:从数据请求源接收第一请求;响应于缓存中不存在所述第一请求所请求的第一数据,发送第二请求至数据存储源;从所述数据存储源接收所述第一数据以及所述第一数据的访问次数;发送所述第一数据至所述数据请求源;响应于所述第一数据的访问次数大于第一阈值,缓存所述第一数据。上述方法通过获取数据的访问次数并与阈值比较确定是否缓存,解决了实时变化的数据无法提前缓存的问题。

上述说明仅是本公开技术方案的概述,为了能更清楚了解本公开的技术手段,而可依照说明书的内容予以实施,并且为让本公开的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。

附图说明

结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,原件和元素不一定按照比例绘制。

图1为本公开实施例提供的数据缓存方法的流程示意图;

图2为本公开实施例提供的数据缓存方法的进一步流程示意图;

图3为本公开实施例提供的数据缓存方法的进一步流程示意图;

图4为本公开实施例提供的数据缓存方法的进一步流程示意图;

图5为本公开实施例提供的数据缓存方法的进一步流程示意图;

图6为本公开实施例提供的数据发送方法的流程示意图;

图7为本公开实施例提供的数据发送方法的进一步流程示意图;

图8为本公开实施例提供的数据缓存方法和数据发送方法的应用场景示意图。

图9为本公开实施例提供的数据缓存装置的实施例的结构示意图;

图10为本公开实施例提供的数据发送装置的实施例的结构示意图;

图11为根据本公开实施例提供的电子设备的结构示意图。

具体实施方式

下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。

应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。

本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。

需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。

需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。

本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。

图1为本公开实施例提供的数据缓存方法实施例的流程图,本实施例提供的该数据缓存方法可以由一数据缓存装置来执行,该数据缓存装置可以实现为软件,或者实现为软件和硬件的组合,该数据缓存装置可以集成设置在数据缓存系统中的某设备中,比如数据缓存服务器或者数据缓存终端设备中。如图1所示,该方法包括如下步骤:

步骤S101,从数据请求源接收第一请求;

可选的,所述数据请求源包括各种终端设备或平台设备等,其向数据存储源发送数据请求以请求所需要的数据。示例性的,所述数据请求源为加入直播间的客户端设备,其周期性的从直播服务器中拉取直播间中最新的消息。

可选的,所述数据缓存方法由以数据缓存装置执行,示例性的所述数据缓存装置实现为服务器上的代理进程。可以理解的,所述数据缓存装置还可以以其他方式实现,如数据缓存设备等,在此不再赘述。

可选的,所述第一请求中包括所请求的目标数据的标识以及所述数据请求源的标识,其中所述目标数据为特定的数据或者是一类数据,如在直播场景中,直播间中的终端设备可以只拉取主播设备的消息或者拉取整个直播间的消息。如一般情况下,直播间中的客户端每次拉取整个直播间的消息,则所述目标数据的标识为直播间的标识,如直播间1;所述数据请求源的标识为客户端的标识,如客户端1。

步骤S102,响应于缓存中不存在所述第一请求所请求的第一数据,发送第二请求至数据存储源;

在接收到第一请求之后,首先判断缓存中是否在所述第一请求所请求的第一数据,如直播间1中的所有的新数据。在拉取数据的次数不够多或者所请求的数据不是热点数据的情况下,所述缓存中不存在所述第一数据,此时所述数据缓存方法的执行装置将发送第二请求至所述数据存储源以请求获取所述第一数据,其中所述数据存储源中存储了数据请求源所能获取到的所有数据。

可选的,如图2所示,所述发送第二请求至数据存储源,还包括:

步骤S201,生成第二请求,其中所述第二请求中的来源参数为所述数据请求源;

步骤S202,将所述第二请求发送至数据存储源。

在上述步骤S201中,生成第二请求,其中所述第二请求中包括来源参数,由于第二请求是所述数据缓存方法的执行装置所生成的,因此需要对其来源参数进行设置,将其设置成实际请求第一数据的数据请求源,示例性的,所述来源参数为from,当所述数据请求源为客户端设备时,设置from=client;

在生成所述第二请求之后,将第二请求发送至数据存储源以请求所述第一请求所请求的第一数据。

步骤S103,从所述数据存储源接收所述第一数据以及所述第一数据的访问次数;

在该步骤中,从数据存储源接收第一请求所请求的第一数据,同时还接收所述第一数据的访问次数。可选的,所述第一数据的访问次数为单位时间内单位时间内第一数据的被读取次数。

示例性的,所述第一数据为第一直播间中的消息数据,所述第一数据的访问次数,为1秒内所述第一直播间中的消息被拉取的次数。该访问次数能够反映第一直播间的热度,即访问次数越多,表示第一直播间越受关注,其消息数据被访问的次数可能会更多。

步骤S104,发送所述第一数据至所述数据请求源;

在得到所述第一数据之后,将其发送至请求所述第一数据的数据请求源。示例性的,在直播场景中,在得到第一直播间最近1秒中的消息数据之后,数据缓存方法的执行装置将所述消息数据发送至拉取该消息数据的客户端设备。

步骤S105,响应于所述第一数据的访问次数大于第一阈值,缓存所述第一数据。

所述第一阈值为预设的值;示例性的,在直播场景下,如第一直播间的消息数据的访问次数为CountRoom1,如果CountRoom1>K,其中K为第一阈值,则表示第一直播间的热度很高,可能会有更多的客户端设备访问第一直播间的消息数据或者客户端设备可能多次访问第一直播间的消息数据,因此将所述第一直播间的消息数据缓存下来,以便后续访问时能够快速的将消息数据发送给客户端设备。

可选的,如图3所示,所述数据缓存方法还包括:

步骤S301,响应于缓存中存在所述第一请求所请求的第一数据,将缓存中的所述第一数据发送至所述数据请求源。

可选的,该步骤与步骤S102并列,当缓存中存在所述第一请求所请求的数据时,不需要再向数据存储源请求第一数据,而可以直接从缓存中将所述第一数据发送至所述数据请求源。

可选的,所述第一数据在所述数据缓存中以第一数据的标识保存,所述第一数据的标识表示第一数据的类型或者产生源,如在上述直播场景中,可以使用直播间的ID作为直播间的消息数据的标识,在缓存中存储时,将所有直播间1的消息数据标记为直播间1,将所述直播间2的消息数据标记为直播间2,以此类推。这样,当接收到第一请求之后,通过第一请求中的目标数据参数可以得到其所要请求的目标数据,如直播间1的消息数据,此时通过直播间1的ID查询缓存中是否存在直播间1的消息数据,如果匹配到直播间1的消息数据,则直接发送所述消息数据至发送第一请求的客户端设备。

可选的,如图3所示,所述方法还包括:

步骤S302,累加所述缓存中的第一数据的访问次数。

当所述第一数据从所述缓存中发送至所述数据请求源时,需要在所述数据缓存方法的执行装置中记录所述第一数据的访问次数,以便后续继续计算所述第一数据的热度。具体的,使用计数器来记录第一数据的访问次数,每当所述第一数据被访问,则累加所述计数器的值,当需要获取所述第一数据的访问次数时,直接读取所述计数器的值即可。

由于数据的热度是实时变化的,当前的热点数据在下一时刻可能就不是热点数据了,因此需要动态的更新所述缓存中的数据。可选的,如图4所示,所述方法还包括:

步骤S401,响应于满足第一条件,发送缓存数据更新请求至所述数据存储源,其中所述缓存数据更新请求中包括缓存中的数据标记以及数据的访问次数;

步骤S402,从所述数据存储源接收所述数据标记所对应的第一数据以及第一数据的访问次数;

步骤S403,响应于所述第一数据的访问次数大于第二阈值,使用所述第一数据更新所述缓存中的数据。

可选的,在所述步骤S401中,所述第一条件为计时器超时,示例性的,设置每1秒更新一次缓存中的数据,则设置一个1秒超时的计时器,每当计时器超时时,发送缓存数据更新请求至所述数据存储源以更新所述缓存中的数据。其中,所述缓存数据更新请求中包括缓存中的数据标记以及数据的访问次数,所述数据的访问次数,为所述数据在所述缓存中被读取的次数,由于缓存中的第一数据均不会从数据存储源中获取,因此数据存储源中没有第一数据的准确访问次数,此时需要数据缓存方法的执行装置在请求更新缓存中的数据时,将数据的访问次数发送至数据存储源,以使得数据存储源能够计算数据的准确访问次数。

可选的,如图5所示,所述发送缓存数据更新请求至所述数据存储源,包括:

步骤S501,生成第二请求;

步骤S502,将所述第二请求中的来源参数设置为转发源以生成缓存数据更新请求;

步骤S503,发送所述缓存数据更新请求至所述数据存储源。

在上述可选实施例中,数据更新请求实际上就是所述第二请求,只是将第二请求中的来源参数设置为转发源,即数据缓存方法的执行装置。示例性的,在直播场景下,所述数据缓存方法的执行装置为代理进程proxy,则设置from=proxy,表示这是代理进程用来更新缓存的请求,需要数据存储源根据所述缓存数据更新请求中的访问次数进一步计算数据的访问次数并返回。

在步骤S402中,与前述步骤S103中类似,从数据存储源接收第一数据以及第一数据的访问次数。其中所述第一数据的访问次数为数据存储源经过重新计算得到的访问次数,通常数据存储源连接多个数据缓存方法的执行装置,每个装置均会传输其缓存数据的访问次数,另外也可能存在新连接到数据存储源的数据访问,数据存储源将这些访问次数加在一起作为第一数据的实际访问次数。

在步骤S402,将所述第一数据的访问次数与第二阈值进行比较,以确定是否更新所述缓存中的第一数据。可选的,所述第二阈值小于或等于所述第一阈值,其中第一阈值是判断数据是否是热点数据的标准,由于是更新第一数据,因此说明在更新之前,所述第一数据是满足访问次数大于第一阈值这一条件的,因此后续更新时,同样可以使第二阈值与第一阈值相同,当更新的第一数据的访问次数仍然大于第一阈值时,其仍然是热点数据,因此使用新的第一数据去更新所述缓存中的第一数据。

可选的,所述第二阈值还可以小于第一阈值,如第二阈值K’=0.8K;这样可以过滤掉一些正常的波动,如热点数据在被访问一段时间之后,有可能访问量会下降,但是之后又会上升,呈现在第一阈值上下波动的情况,这时候,如果将第二阈值设置为与第一阈值相同,则可能会频繁的变化热点数据。而将第二阈值设置为小于第一阈值的值,可以有效过滤掉这样的波动。

可选的,当所述第一数据的访问次数大于第二阈值,使用所述第一数据更新所述缓存中的数据。示例性的,缓存中保存直播间1中最新的500条消息数据,而每次拉取到的数据为300条,则每次更新掉缓存中最旧的300条消息数据。

可选的,所述方法还包括:

步骤S404,响应于所述第一数据的访问次数小于第二阈值,删除所述缓存中的数据。

当第一数据的访问次数小于第二阈值,表示所述第一数据已经不是热点数据,将其保存在缓存中不能保证缓存的使用效率,此时将缓存中对应的数据删除。

图6为本公开实施例提供的数据发送方法实施例的流程图,本实施例提供的该数据发送方法可以由一数据发送装置来执行,该数据发送装置可以实现为软件,或者实现为软件和硬件的组合,该数据发送装置可以集成设置在数据发送系统中的某设备中,比如数据发送服务器或者数据发送终端设备中。如图6所示,该方法包括如下步骤:

步骤S601,从数据转发源接收第二请求;

所述数据发送方法的执行装置为所述数据存储源;

其中所述数据转发源即为上述数据缓存方法实施例中的数据转发源,即数据缓存方法的执行装置,所述第二请求即为上述实施例中的第二请求,在此不再赘述。

步骤S602,响应于所述第二请求中的来源参数为数据请求源,累加所述第二请求所对应的第一数据的访问次数;

在该步骤中,判断第二请求中的来源参数的值,当来源参数为数据请求源时,直接累加第一数据的访问次数,可以理解的,使用一个计数器记录第一数据的访问次数,每当有数据请求源读取所述第一数据,则累加所述计数器的值。

步骤S603,将所述第一数据以及第一数据的访问次数发送至所述数据转发源。

在该步骤中,将第一数据以及第一数据的访问次数发送至数据转发源,使得所述数据转发源能够根据步骤S101-步骤S105将所述第一数据转发至所述数据请求源,并判断是否在所述数据转发源中缓存所述第一数据。

进一步的,所述数据发送方法还包括:

步骤S701,响应于所述第二请求的来源参数为数据转发源,获取所述第二请求中的第一数据的第一访问次数;

步骤S702,根据所述第一数据的第一访问次数更新所述第一数据的访问次数;

步骤S703,将所述第一数据和更新后的第一数据的访问次数发送至数据转发源。

上述步骤S701-步骤S702描述了数据存储源根据数据转发源发送的访问次数更新第一数据的实际访问次数的过程,如上述实施例中所记载,当所述第二请求的来源参数为数据转发源时,表示所述第二请求为数据更新请求,则数据存储源需要技术第一数据的实际访问次数,即根据数据存储源中的计数器的值以及第二请求中的第一数据的访问次数相加得到更新后的第一数据的访问次数。之后,在步骤S703中,数据存储源将第一数据和更新后的第一数据的访问次数发送至数据转发源,以使数据转发源能够根据更新后的第一数据的访问次数判断第一数据是否还是热点数据,以确定缓存中的数据是更新还是删除。

通过上述数据缓存方法和数据发送方法的实施例的配合,能够实时记录数据的访问次数,并根据所述访问次数动态判断数据是否为热点数据,以确定是否需要缓存所述数据,由此可以解决现有技术中无法确定实时变化的数据是否为热点数据的问题。

图8为本公开实施例的一个应用场景示意图。如图8所示,为直播应用场景,在该应用场景中,包括多个终端设备801-803、直播服务器804,直播服务器对每个终端均启动一个代理服务进程proxy,给终端设备提供消息数据的拉取服务。终端设备801-803均为直播间1中的设备,则终端设备801-803定时从直播服务器804中拉取最近的消息数据,当需要拉取消息数据时,终端设备发送数据拉取请求到直播服务器804,直播服务器804中有代理服务进程proxy处理每个拉取请求,proxy首先查询缓存cache中是否保存有直播间1的消息数据,如果有,则直接将直播间1的数据返回给终端设备,并累加缓存中的直播间1的消息数据的访问次数,之后proxy定时从直播服务器更新直播间1的消息数据,具体的,proxy发送拉取请求,该请求中包括cache中的直播间1的消息数据的访问次数,直播服务器将接收到的访问次数与直播服务器上的累加访问次数相加得到直播间1的消息数据的真实访问次数,并将最新的直播间1的消息数据以及所述真实的访问次数返回给proxy,proxy根据所述真实的访问次数判断是否还需要继续缓存直播间1的消息数据,如果需要继续缓存则使用最新的直播间1的消息数据更新缓存中的数据,如果不需要继续缓存,则删除缓存中直播间1中的数据。

可以理解的是,上述直播场景仅仅为举例,本公开实施例中的方案实际上可以应用与各种数据缓存的场景,如数据库中的数据的存取等等,在此不再赘述。

本公开实施例公开了一种数据缓存方法、装置、电子设备和计算机可读存储介质。其中该数据缓存方法包括:从数据请求源接收第一请求;响应于缓存中不存在所述第一请求所请求的第一数据,发送第二请求至数据存储源;从所述数据存储源接收所述第一数据以及所述第一数据的访问次数;发送所述第一数据至所述数据请求源;响应于所述第一数据的访问次数大于第一阈值,缓存所述第一数据。上述方法通过获取数据的访问次数并与阈值比较确定是否缓存,解决了实时变化的数据无法提前缓存的问题。

在上文中,虽然按照上述的顺序描述了上述方法实施例中的各个步骤,本领域技术人员应清楚,本公开实施例中的步骤并不必然按照上述顺序执行,其也可以倒序、并行、交叉等其他顺序执行,而且,在上述步骤的基础上,本领域技术人员也可以再加入其他步骤,这些明显变型或等同替换的方式也应包含在本公开的保护范围之内,在此不再赘述。

图9为本公开实施例提供的数据缓存装置实施例的结构示意图。如图9所示,该装置900包括:第一接收模块901、请求发送模块902、第二接收模块903、第一发送模块904和数据缓存模块905。其中,

第一接收模块901,用于从数据请求源接收第一请求;

请求发送模块902,用于响应于缓存中不存在所述第一请求所请求的第一数据,发送第二请求至数据存储源;

第二接收模块903,用于从所述数据存储源接收所述第一数据以及所述第一数据的访问次数;

第一发送模块904,用于发送所述第一数据至所述数据请求源;

数据缓存模块905,用于响应于所述第一数据的访问次数大于第一阈值,缓存所述第一数据。

进一步的,所述数据缓存装置900,还用于:

响应于缓存中存在所述第一请求所请求的第一数据,将缓存中的所述第一数据发送至所述数据请求源。

进一步的,所述数据缓存装置900,还用于:

累加所述缓存中的第一数据的访问次数。

进一步的,所述数据缓存装置900,还用于:

响应于满足第一条件,发送缓存数据更新请求至所述数据存储源,其中所述缓存数据更新请求中包括缓存中的数据标记以及数据的访问次数;

从所述数据存储源接收所述数据标记所对应的第一数据以及第一数据的访问次数;

响应于所述第一数据的访问次数大于第二阈值,使用所述第一数据更新所述缓存中的数据。

进一步的,所述数据缓存装置900,还用于:

响应于所述第一数据的访问次数小于第二阈值,删除所述缓存中的数据。

进一步的,所述请求发送模块902,还用于:

生成第二请求,其中所述第二请求中的来源参数为所述数据请求源;

将所述第二请求发送至数据存储源。

进一步的,所述发送缓存数据更新请求至所述数据存储源,包括:

生成第二请求;

将所述第二请求中的来源参数设置为转发源以生成缓存数据更新请求;

发送所述缓存数据更新请求至所述数据存储源。

进一步的,所述第一数据的访问次数为单位时间内第一数据的被读取次数。

图9所示装置可以执行图1-图5所示实施例的方法,本实施例未详细描述的部分,可参考对图1-图5所示实施例的相关说明。该技术方案的执行过程和技术效果参见图1-图5所示实施例中的描述,在此不再赘述。

图10为本公开实施例提供的数据发送装置实施例的结构示意图。如图10所示,该装置1000包括:第二接收模块1001、累加模块1002和第二发送模块1003。其中,

第二接收模块1001,用于从数据转发源接收第二请求;

累加模块1002,用于响应于所述第二请求中的来源参数为数据请求源,累加所述第二请求所对应的第一数据的访问次数;

第二发送模块1003,用于将所述第一数据以及第一数据的访问次数发送至所述数据转发源。

进一步的,所述数据发送装置1000,还用于:

响应于所述第二请求的来源参数为数据转发源,获取所述第二请求中的第一数据的第一访问次数;

根据所述第一数据的第一访问次数更新所述第一数据的访问次数;

将所述第一数据和更新后的第一数据的访问次数发送至数据转发源。

图10所示装置可以执行图6和图7所示实施例的方法,本实施例未详细描述的部分,可参考对图6和图7所示实施例的相关说明。该技术方案的执行过程和技术效果参见图6和图7所示实施例中的描述,在此不再赘述。

下面参考图11,其示出了适于用来实现本公开实施例的电子设备1100的结构示意图。本公开实施例中的终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图11示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。

如图11所示,电子设备1100可以包括处理装置(例如中央处理器、图形处理器等)1101,其可以根据存储在只读存储器(ROM)1102中的程序或者从存储装置1108加载到随机访问存储器(RAM)1103中的程序而执行各种适当的动作和处理。在RAM 1103中,还存储有电子设备1100操作所需的各种程序和数据。处理装置1101、ROM 1102以及RAM 1103通过总线1104彼此相连。输入/输出(I/O)接口1105也连接至总线1104。

通常,以下装置可以连接至I/O接口1105:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置1106;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置1107;包括例如磁带、硬盘等的存储装置1108;以及通信装置1109。通信装置1109可以允许电子设备1100与其他设备进行无线或有线通信以交换数据。虽然图11示出了具有各种装置的电子设备1100,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。

特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置1109从网络上被下载和安装,或者从存储装置1108被安装,或者从ROM 1102被安装。在该计算机程序被处理装置1101执行时,执行本公开实施例的方法中限定的上述功能。

需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。

在一些实施方式中,客户端、服务器可以利用诸如HTTP(HyperText TransferProtocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”),广域网(“WAN”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。

上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。

上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:获取输入图像以及第一文本;抽取所述输入图像的特征得到输入图像的特征向量;对所述第一文本进行编码得到第一文本的特征向量;根据所述输入图像的特征向量和所述第一文本的特征向量得到联合特征向量;将所述联合特征向量进行解码生成第二文本。

可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定。

本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。

在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。

根据本公开的一个或多个实施例,提供了一种数据缓存方法,包括:

从数据请求源接收第一请求;

响应于缓存中不存在所述第一请求所请求的第一数据,发送第二请求至数据存储源;

从所述数据存储源接收所述第一数据以及所述第一数据的访问次数;

发送所述第一数据至所述数据请求源;

响应于所述第一数据的访问次数大于第一阈值,缓存所述第一数据。

进一步的,所述方法还包括:

响应于缓存中存在所述第一请求所请求的第一数据,将缓存中的所述第一数据发送至所述数据请求源。

进一步的,所述方法还包括:

累加所述缓存中的第一数据的访问次数。

进一步的,所述方法还包括:

响应于满足第一条件,发送缓存数据更新请求至所述数据存储源,其中所述缓存数据更新请求中包括缓存中的数据标记以及数据的访问次数;

从所述数据存储源接收所述数据标记所对应的第一数据以及第一数据的访问次数;

响应于所述第一数据的访问次数大于第二阈值,使用所述第一数据更新所述缓存中的数据。

进一步的,所述方法还包括:

响应于所述第一数据的访问次数小于第二阈值,删除所述缓存中的数据。

进一步的,所述发送第二请求至数据存储源,包括:

生成第二请求,其中所述第二请求中的来源参数为所述数据请求源;

将所述第二请求发送至数据存储源。

进一步的,所述发送缓存数据更新请求至所述数据存储源,包括:

生成第二请求;

将所述第二请求中的来源参数设置为转发源以生成缓存数据更新请求;

发送所述缓存数据更新请求至所述数据存储源。

进一步的,所述第一数据的访问次数为单位时间内第一数据的被读取次数。

根据本公开的一个或多个实施例,提供了一种数据发送方法,包括:

从数据转发源接收第二请求;

响应于所述第二请求中的来源参数为数据请求源,累加所述第二请求所对应的第一数据的访问次数;

将所述第一数据以及第一数据的访问次数发送至所述数据转发源。

进一步的,所述方法还包括:

响应于所述第二请求的来源参数为数据转发源,获取所述第二请求中的第一数据的第一访问次数;

根据所述第一数据的第一访问次数更新所述第一数据的访问次数;

将所述第一数据和更新后的第一数据的访问次数发送至数据转发源。

根据本公开的一个或多个实施例,提供了一种数据缓存装置,包括:

第一接收模块,用于从数据请求源接收第一请求;

请求发送模块,用于响应于缓存中不存在所述第一请求所请求的第一数据,发送第二请求至数据存储源;

第二接收模块,用于从所述数据存储源接收所述第一数据以及所述第一数据的访问次数;

第一发送模块,用于发送所述第一数据至所述数据请求源;

数据缓存模块,用于响应于所述第一数据的访问次数大于第一阈值,缓存所述第一数据。

进一步的,所述数据缓存装置,还用于:

响应于缓存中存在所述第一请求所请求的第一数据,将缓存中的所述第一数据发送至所述数据请求源。

进一步的,所述数据缓存装置,还用于:

累加所述缓存中的第一数据的访问次数。

进一步的,所述数据缓存装置,还用于:

响应于满足第一条件,发送缓存数据更新请求至所述数据存储源,其中所述缓存数据更新请求中包括缓存中的数据标记以及数据的访问次数;

从所述数据存储源接收所述数据标记所对应的第一数据以及第一数据的访问次数;

响应于所述第一数据的访问次数大于第二阈值,使用所述第一数据更新所述缓存中的数据。

进一步的,所述数据缓存装置,还用于:

响应于所述第一数据的访问次数小于第二阈值,删除所述缓存中的数据。

进一步的,所述请求发送模块,还用于:

生成第二请求,其中所述第二请求中的来源参数为所述数据请求源;

将所述第二请求发送至数据存储源。

进一步的,所述发送缓存数据更新请求至所述数据存储源,包括:

生成第二请求;

将所述第二请求中的来源参数设置为转发源以生成缓存数据更新请求;

发送所述缓存数据更新请求至所述数据存储源。

进一步的,所述第一数据的访问次数为单位时间内第一数据的被读取次数。

根据本公开的一个或多个实施例,提供了一种数据发送装置,包括:

第二接收模块,用于从数据转发源接收第二请求;

累加模块,用于响应于所述第二请求中的来源参数为数据请求源,累加所述第二请求所对应的第一数据的访问次数;

第二发送模块,用于将所述第一数据以及第一数据的访问次数发送至所述数据转发源。

进一步的,所述数据发送装置,还用于:

响应于所述第二请求的来源参数为数据转发源,获取所述第二请求中的第一数据的第一访问次数;

根据所述第一数据的第一访问次数更新所述第一数据的访问次数;

将所述第一数据和更新后的第一数据的访问次数发送至数据转发源。

根据本公开的一个或多个实施例,提供了一种电子设备,包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有能被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行前述任一所述方法。

根据本公开的一个或多个实施例,提供了一种非暂态计算机可读存储介质,其特征在于,该非暂态计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行前述任一所述方法。

以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

相关技术
  • 数据缓存方法、装置、电子设备及计算机可读存储介质
  • 数据缓存方法、装置、计算机可读存储介质及电子设备
技术分类

06120112243735