CN110727892A - 缓存数据更新方法、装置及电子设备 - Google Patents
缓存数据更新方法、装置及电子设备 Download PDFInfo
- Publication number
- CN110727892A CN110727892A CN201910907100.5A CN201910907100A CN110727892A CN 110727892 A CN110727892 A CN 110727892A CN 201910907100 A CN201910907100 A CN 201910907100A CN 110727892 A CN110727892 A CN 110727892A
- Authority
- CN
- China
- Prior art keywords
- data
- request
- cache
- timestamp
- client
- 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/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
- G06F16/9574—Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
Abstract
本发明涉及一种缓存数据更新方法、装置及电子设备,该方法包括:检测是否接收到客户端发送的数据更新请求,数据更新请求中携带有时间戳,时间戳是有数据更新时,服务器发送至客户端的;若接收到数据更新请求,则提取数据更新请求中的时间戳;根据时间戳判断本地缓存中是否存在与数据更新请求对应的缓存数据;若本地缓存中不存在与数据更新请求对应的缓存数据,则生成穿透请求并发送给数据源;接收数据源响应穿透请求返回的请求数据,将请求数据保存为本地缓存数据并发送至客户端。本发明提供的技术方案可以通过穿透从后端数据源中获取相应的数据,使得用户得到的数据是最新的数据,保证客户端数据更新的及时性,提升用户体验。
Description
技术领域
本发明实施例涉及数据处理领域,具体涉及一种缓存数据更新方法、装置及电子设备。
背景技术
用户通过客户端访问页面时,会向服务器发送访问请求,服务器接收到访问请求后响应该访问请求,将数据下发至客户端。但受限于网络速度、客户端访问人数等等因素,客户端实时从服务器获取数据的速度较慢,从而客户端页面加载较慢,导致访问效率较低,影响用户体验。
为了提高访问效率,在客户端访问服务器时,针对更新频率较低的数据,例如:网页的框架等,可以将相应的数据预先存储到客户端中作为离线数据,这样当客户端访问服务器时,就可以访问离线数据,因此无需考虑网络影响。
但是当缓存的离线数据过期时,缓存数据如何更新,是当前亟待解决的一个问题。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本发明实施例提供了一种缓存数据更新方法、装置及电子设备。
根据本发明实施例的第一方面,提供一种缓存数据更新方法,包括:
检测是否接收到客户端发送的数据更新请求,所述数据更新请求中携带有时间戳,所述时间戳是有数据更新时,服务器发送至客户端的;
若接收到所述数据更新请求,则提取所述数据更新请求中的时间戳;
根据所述时间戳判断本地缓存中是否存在与所述数据更新请求对应的缓存数据;
若本地缓存中不存在与所述数据更新请求对应的缓存数据,则生成穿透请求并发送给数据源;
接收所述数据源响应所述穿透请求返回的请求数据,将所述请求数据保存为本地缓存数据并发送至客户端。
进一步地,在检测是否接收到客户端发送的数据更新请求之前,所述方法还包括:
当检测到数据更新时,生成时间戳;
检测是否接收到客户端发送的初始化请求;
若接收到所述初始化请求,将所述时间戳发送至客户端。
进一步地,根据所述时间戳判断本地缓存中是否存在与所述数据更新请求对应的缓存数据,包括:
生成携带有将时间戳作为关键字的缓存请求;
判断所述本地缓存中是否包含与所述缓存请求对应的数据;
若所述本地缓存中未包含与所述缓存请求对应的数据,确定所述本地缓存中不存在与所述数据更新请求对应的缓存数据。
进一步地,若本地缓存中不存在与所述数据更新请求对应的缓存数据,则生成穿透请求并发送给数据源,包括:
根据所述数据更新请求生成穿透请求;
根据所述穿透请求从本地缓存对应的数据源中获取最新数据并缓存到本地缓存中。
进一步地,在生成穿透请求并发送给数据源之前,所述方法还包括:
校验所述数据更新请求中的时间戳;
若校验成功,则生成穿透请求并发送给数据源;
否则,将本地时间戳列表中的与所述初始化请求对应的时间戳,以及与所述时间戳对应的本地缓存中的缓存数据发送至客户端。
进一步地,校验所述数据更新请求中的时间戳,包括:
判断所述本地时间戳列表中是否存在所述数据更新请求中的时间戳;
若所述本地时间戳列表中存在所述时间戳,则判定所述数据更新请求中的时间戳校验成功。
根据本发明实施例的第二方面,提供了一种缓存数据更新装置,包括:
第一检测模块,用于检测是否接收到客户端发送的数据更新请求,所述数据更新请求中携带有时间戳,所述时间戳是有数据更新时,服务器发送至客户端的;
提取模块,用于若接收到所述数据更新请求,则提取所述数据更新请求中的时间戳;
判断模块,用于根据所述时间戳判断本地缓存中是否存在与所述数据更新请求对应的缓存数据;
穿透请求模块,用于若本地缓存中不存在与所述数据更新请求对应的缓存数据,则生成穿透请求并发送给数据源;
更新模块,用于接收所述数据源响应所述穿透请求返回的请求数据,将所述请求数据保存为本地缓存数据并发送至客户端。
进一步地,所述装置还包括:
生成模块,用于当检测到数据更新时,生成时间戳;
第二检测模块,用于检测是否接收到客户端发送的初始化请求;
发送模块,用于若接收到所述初始化请求,将所述时间戳发送至客户端。
进一步地,判断模块包括:
第一生成子模块,用于生成携带有将时间戳作为关键字的缓存请求;
第一判断子模块,用于判断所述本地缓存中是否包含与所述缓存请求对应的数据;
第一判定子模块,用于若所述本地缓存中未包含与所述缓存请求对应的数据,则判定所述本地缓存中不存在与所述数据更新请求对应的缓存数据。
进一步地,所述穿透请求模块包括:
第二生成子模块,用于根据所述数据更新请求生成穿透请求;
获取子模块,用于根据所述穿透请求从本地缓存对应的数据源中获取最新数据并缓存到本地缓存中。
进一步地,所述装置还包括:
校验模块,用于校验所述数据更新请求中的时间戳;若校验成功,则生成穿透请求并发送给数据源;否则,将本地时间戳列表中的与所述初始化请求对应的时间戳,以及与所述时间戳对应的本地缓存中的缓存数据发送至客户端。
进一步地,所述校验模块包括:
第二判断子模块,用于判断所述本地时间戳列表中是否存在所述数据更新请求中的时间戳;
第二判定子模块,用于若所述本地时间戳列表中存在所述时间戳,则判定所述数据更新请求中的时间戳校验成功。
根据本发明实施例的第三方面,提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述任一所述的缓存数据更新方法的步骤。
与最接近的现有技术相比,本发明实施例首先检测是否接收到客户端发送的数据更新请求,该数据更新请求中携带有时间戳,若是接收到该数据更新请求,则提取该数据更新请求中的时间戳,然后根据上述时间戳判断本地缓存中是否存在与上述数据更新请求对应的缓存数据,若是不存在与上述数据更新请求对应的缓存数据,则生成穿透请求并发送给数据源,最后接收数据源响应上述穿透请求返回的请求数据,并将该请求数据保存为本地缓存数据并发送至客户端。本申请提供的技术方案首先判断本地缓存中是否有与接收到的时间戳相对应的缓存数据,若是没有,就通过穿透从后端数据源中获取相应的数据,使得用户得到的数据是最新的数据,保证客户端数据更新的及时性,提升用户体验。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1是根据一示例性实施例示出的一种缓存数据更新方法的流程图;
图2是根据一示例性实施例示出的一种时间戳生成方法的流程图;
图3是根据一示例性实施例示出的一种缓存数据更新的结构框图;
图4是根据一示例性实施例示出的一种缓存数据更新装置的结构示意图;
图5是根据一示例性实施例示出的一种电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
现在将参考附图描述实现本发明各个实施例的移动终端。在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身并没有特定的意义。因此,“模块”与“部件”可以混合地使用。
本发明的各步骤的执行主体可以是服务器。在接收到终端设备发送的数据更新请求时,对上述更新请求作出响应,返回更新数据至终端。该终端设备可以是诸如手机、平板电脑、笔记本电脑、掌上电脑、PAD(Personal Digital Assistant,个人数字助理)、PMP(Portable Media Player,便捷式多媒体播放器)、导航装置等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。
当前客户端在缓存数据之后,是不会再时刻向服务器请求数据的,而是通过时间戳进行判断,以此降低对服务器的无效计算压力,节省资源。而这种缓存方式也有一定的缺陷,比如客户端判断时间戳发生了变化,就会更新本地时间戳,并向服务器请求数据。但是由于服务器一般是比较复杂的多级缓存的架构,数据发生变化时,有可能时只在底层存储发生变化,而其它层的数据还是原来的数据。也就是,客户端请求到的数据并能保证一定是更新后的数据。针对客户端请求的数据不一定是最新数据的情况,本发明提供了一种缓存数据更新方法来解决上述问题。
其中,多级缓存是指在整个系统架构的不同系统层级进行数据缓存,以提升访问效率。
图1是根据一示例性实施例示出的一种缓存数据更新方法的流程图,如图1所示,该方法应用于服务器。
在步骤S101中,检测是否接收到客户端发送的数据更新请求,数据更新请求中携带有时间戳,所述时间戳是有数据更新时,服务器发送至客户端的。
在本发明实施例中,服务器会监控是否有请求发送过来,当检测到客户端发送的数据更新请求时,会做出相应的响应。其中,客户端发送的数据更新请求中会携带有时间戳,该时间戳是在客户端启动的时候通过向服务器发送初始化请求得到的,初始化是客户端一次生命周期开始时进行的,一个生命周期只会进行一次初始化。客户端通过初始化可以获得所需要的一些全局变量。其中,一个生命周期是指从打开某应用程序开始到该应用程序结束运行为止。
服务器端数据的更新有很多种因素,比如数据源的数据更新变化或人工的数据处理都可能导致客户端的数据发生变化。当服务器端的数据发生更新时,会生成一个新的时间戳,并保存到时间戳列表中。
服务器接收到客户端发送的初始化请求后,会将生成的时间戳发送到客户端。
进一步地,客户端只有在初始化时才会向服务器请求一次数据,若是此时服务器端有数据更新,就会将时间戳下发给客户端,然后客户端比较请求到的时间戳与原时间戳,若是不同,就会向服务器端请求数据。
其中,时间戳是一个能表示一份数据在某个特定时间之前已经存在的、完整的、可验证的数据,通常是一个字符序列,唯一地标识某一刻的时间。
若接收到数据更新请求,执行步骤S102。
在步骤S102中,提取该数据更新请求中的时间戳。
在本发明实施例中,服务器接收到客户端发送的数据更新请求时,就会首先提取该数据更新请求中的时间戳,通过该时间戳确定向客户端发送的数据更新请求对应的数据。
在步骤S103中,根据时间戳判断本地缓存中是否存在与数据更新请求对应的缓存数据。
在本发明的实施例中,提取数据更新请求中的时间戳后,将该时间戳作为缓存标识的一部分,也就是,将该时间戳对应的字符串添加到缓存标识的字符串中,然后服务器根据携带时间戳的缓存标识在服务器本地缓存中查找与该缓存标识对应的缓存数据。若是服务器的本地缓存中存在与该缓存标识对应的缓存数据,则将查找到的缓存数据发送至客户端;若是服务器的本地缓存中不存在与该缓存标识对应的缓存数据,则执行步骤S104。
在步骤S104中,生成穿透请求并发送给数据源。
在本申请实施例中,若是服务器的本地缓存中不存在与数据更新请求对应的缓存数据,就会生成一个穿透请求发送给数据源。数据源可以是数据库,也可以是通过其他的数据接口连接的第三方服务端,通过数据库或第三方服务端可以获取到与数据更新请求对应的数据。
具体地,当从数据源中获取数据时,由于数据库中没有缓存与数据更新请求中的时间戳相对应的数据,因此需要将缓存标识中的时间戳删除后,再发送带有删除时间戳后的缓存标识的穿透请求给数据源。当从第三方服务端获取数据时,由于第三方服务端本身存在自己的缓存,所以需要将时间戳透传到第三方服务端,也就是,在向第三方服务端请求数据时,需要在请求中携带时间戳。
在步骤S105中,接收所述数据源响应所述穿透请求返回的请求数据,将所述请求数据保存为本地缓存数据并发送至客户端。
在本申请实施例中,服务器会接收数据源返回的请求数据,并将该请求数据保存在服务器的本地缓存中作为缓存数据,然后将该缓存数据发送至客户端。
本发明的实施例,首先检测是否接收到客户端发送的数据更新请求,该数据更新请求中携带有时间戳,若是接收到该数据更新请求,则提取该数据更新请求中的时间戳,然后根据上述时间戳判断本地缓存中是否存在与上述数据更新请求对应的缓存数据,若是不存在与上述数据更新请求对应的缓存数据,则生成穿透请求并发送给数据源,最后接收数据源响应上述穿透请求返回的请求数据,并将该请求数据最为缓存数据发送至客户端。本申请提供的技术方案首先判断本地缓存中是否有与接收到的时间戳相对应的缓存数据,若是没有,就通过穿透从后端数据源中获取相应的数据,使得用户得到的数据是最新的数据,保证客户端数据更新的及时性,提升用户体验。
为了让客户端获悉服务器已经有数据更新,便于客户端及时通过发送数据更新请求获取更新后的数据,在本发明提供的又一实施例中,在步骤S101之前,如图2所示,本发明实施例提供的缓存数据更新方法,还可以包括如下步骤:
在步骤S201中,当检测到数据更新时,生成时间戳。
在步骤S202中,检测是否接收到客户端发送的初始化请求。
在步骤S203中,若接收到该初始化请求,将生成的时间戳发送至客户端。
在本发明的实施例中,服务器端有数据更新时,就会生成一个新的时间戳,并将该时间戳保存到时间戳列表中。客户端初始化时会向服务器发送初始化请求,该初始化请求包括客户端的名称以及客户端初始化所需的一些全局变量,当服务器接收到该初始化请求时,会将上述生成的时间戳发送到客户端。
进一步地,将生成的新的时间戳保存到服务器本地的时间戳列表中,可以在后续进行时间戳校验以及一些其他有关时间戳的操作时使用。
在本发明的一个可能的实施方式中,结合上述实施例,步骤S103具体可以包括:
步骤A1,生成携带有将时间戳作为关键字的缓存请求。
在本发明的实施例中,服务器提取数据更新请求中的时间戳后,然后将该时间戳作为关键字生成与更新请求相对应的缓存标识,也就是,将时间戳对应的字符串添加到预设缓存标识中,生成与更新请求对应的携带有时间戳的缓存标识。
步骤A2,判断本地缓存中是否包含与缓存请求对应的数据。
在本发明的实施例中,服务器根据携带时间戳的缓存标识在服务器本地缓存中查找与该缓存标识对应的缓存数据。若是服务器的本地缓存中存在与该缓存标识对应的缓存数据,则判定本地缓存中包含与缓存请求对应的数据。
若本地缓存中未包含与缓存请求对应的数据,执行步骤A3,否则,执行步骤A4。
步骤A3,确定本地缓存中不存在与数据更新请求对应的缓存数据。
步骤A4,确定本地缓存中存在与数据更新请求对应的缓存数据。
在本发明实施例中,将时间戳作为缓存请求的一部分,可以准确的判断出服务器本地是否有更新后的数据,但判断出没有时,进行缓存穿透从数据源获取最新的数据并缓存在服务端;若是有新的数据,服务器将新的数据发送至客户端。通过本申请实施例,可以确保客户端请求的数据时最新的数据,保证客户端数据更新的及时性,提升用户体验。
在本发明的另一个可能的实施方式中,结合上述实施例,若本地缓存中不存在与数据更新请求对应的缓存数据,步骤104具体可以包括:
步骤B1,根据数据更新请求生成穿透请求;
步骤B2,根据该穿透请求从本地缓存对应的数据源中获取最新数据并缓存到本地缓存中。
在本发明的实施例中,若服务器的本地缓存中不存在与数据更新请求对应的缓存数据,服务器会根据数据更新请求生成穿透请求发送给与服务器对应的数据源中,从该数据源中获取与数据更新请求对应的最新数据,然后缓存到服务器的本地缓存中。从数据源中获取数据的具体方式在上述实施例中已经详细描述,在此不再赘述。
在本发明的另一个可能的实施方式中,结合上述实施例,在步骤104之前,该缓存数据更新方法还可以包括:
步骤C1,校验所述数据更新请求中的时间戳。
若校验成功,则执行步骤C2,否则,执行步骤C3。
步骤C2,生成穿透请求并发送给数据源;
步骤C3,将本地时间戳列表中的与初始化请求对应的时间戳,以及与时间戳对应的本地缓存中的缓存数据发送至客户端。
在本发明的实施例中,若是时间戳作为缓存标识的一部分,会导致一些恶意请求通过变化时间戳来请求数据源,就会造成数据源有大量的缓存穿透,导致数据源端的服务器雪崩,因此在生成穿透请求并发送给数据源之前,需要对更新请求中的时间戳进行校验,若是校验成功,才允许发送穿透请求给数据源;若是校验失败,则将本地时间戳列表中的与初始化请求对应的时间戳,以及与该时间戳对应的服务器本地缓存中的缓存数据一起发送至客户端。增加了时间戳的校验模块,将数据更新请求中携带的时间戳与服务器存储的时间戳进行比较,如果更新请求中携带的时间戳不在服务器保存的时间戳列表中,则认为是恶意请求,当服务器判断到恶意请求的时,直接下发服务器本地缓存的最新数据至客户端即可,无需再穿透获取数据,有效防止服务器雪崩。
其中,服务器雪崩是指在联网的整个服务器系统中,若是一个服务器出现故障,就会有大量的请求涌入,此服务器就会瘫痪,由于服务器与服务器之间的依赖性,故障会传播,会对整个服务器系统造成灾难性的严重后果,也就是服务故障的“雪崩”效应。
在本发明的另一个实施方式中,校验所述数据更新请求中的时间戳,具体包括:
判断所述本地时间戳列表中是否存在所述数据更新请求中的时间戳;
若所述本地时间戳列表中存在所述时间戳,则判定所述数据更新请求中的时间戳校验成功。
在本发明的实施例中,由于时间戳的下发是服务器控制的,所以服务器会存储所有的时间戳,将数据更新请求中的时间戳提取出来,然后与服务器缓存的本地时间戳列表中的时间戳进行比较,若是时间戳列表中有与数据更新请求中的时间戳相同的时间戳,则表明校验成功;若是时间戳列表中不存在与数据更新请求中的时间戳相同的时间戳,则表明校验失败。
如图3所示,为本发明提供的缓存数据更新的结构框图。
在本发明的实施例中,当服务器端的数据发生变化时,数据同步服务需要更新到业务方的数据存储系统中,比如普通结构化数据库mysql(关系型数据库管理系统)或者key-value(分布式存储系统)数据库。同步服务更新数据之后同时保存最新的时间戳(图3中的ts标识时间戳)到DB(Database,数据库)中,然后通过ZK(zookeeper,分布式应用程序协调服务)发送数据更新通知给初始化服务,以便初始化服务及时更新本地缓存的时间戳。客户端将携带有时间戳的数据更新请求发送给网关(即服务器),服务器接收到该数据更新请求,则提取该数据更新请求中的时间戳,然后根据上述时间戳判断本地缓存中是否存在与上述数据更新请求对应的缓存数据,若是不存在与上述数据更新请求对应的缓存数据,则生成穿透请求并发送给数据源,该数据源包括第三方数据服务器和数据源,最后接收数据源响应上述穿透请求返回的请求数据,并将该请求数据最为缓存数据发送至客户端。
在本发明的实施例中,判断本地缓存中是否有与接收到的时间戳相对应的缓存数据,若是没有,就通过穿透从后端数据源中获取相应的数据,使得用户得到的数据是最新的数据,保证客户端数据更新的及时性,提升用户体验。
基于与上述方法相同的发明构思,在本发明另一实施例中,还提供了一种缓存数据更新装置,如图4所示,该数据更新装置包括:第一检测模块101、提取模块102、判断模块103、穿透请求模块104和更新模块105。
第一检测模块101,用于检测是否接收到客户端发送的数据更新请求,数据更新请求中携带有时间戳,所述时间戳是有数据更新时,服务器发送至客户端的。
提取模块102,用于若接收到数据更新请求,则提取数据更新请求中的时间戳。
判断模块103,用于根据时间戳判断本地缓存中是否存在与数据更新请求对应的缓存数据。
穿透请求模块104,用于若本地缓存中不存在与数据更新请求对应的缓存数据,则生成穿透请求并发送给数据源。
更新模块105,用于接收数据源响应穿透请求返回的请求数据,将请求数据保存为本地缓存数据并发送至客户端。
在本发明实施例中,通过第一检测模块检测是否接收到客户端发送的数据更新请求,该数据更新请求中携带有时间戳,若是接收到该数据更新请求,则通过提取模块提取该数据更新请求中的时间戳,然后判断模块根据上述时间戳判断本地缓存中是否存在与上述数据更新请求对应的缓存数据,若本地缓存中不存在与数据更新请求对应的缓存数据,则通过穿透请求模块生成穿透请求并发送给数据源,最后通过更新模块接收数据源响应上述穿透请求返回的请求数据,并将该请求数据保存为本地缓存数据并发送至客户端。本发明提供的技术方案首先判断本地缓存中是否有与接收到的时间戳相对应的缓存数据,若是没有,就通过穿透从后端数据源中获取相应的数据,使得用户得到的数据是最新的数据,保证客户端数据更新的及时性,提升用户体验。
优选的,该缓存数据更新装置还包括:
生成模块,用于当检测到数据更新时,生成时间戳。
第二检测模块,用于检测是否接收到客户端发送的初始化请求。
发送模块,用于若接收到初始化请求,将时间戳发送至客户端。
可选的,判断模块103包括:
第一生成子模块,用于生成携带有将时间戳作为关键字的缓存请求。
第一判断子模块,用于判断本地缓存中是否包含与缓存请求对应的数据。
第一判定子模块,用于若本地缓存中未包含与缓存请求对应的数据,则判定本地缓存中不存在与数据更新请求对应的缓存数据。
可选的,穿透请求模块104包括:
第二生成子模块,用于根据数据更新请求生成穿透请求。
获取子模块,用于根据穿透请求从本地缓存对应的数据源中获取最新数据并缓存到本地缓存中。
可选的,所述缓存数据更新装置还包括:
校验模块,用于校验数据更新请求中的时间戳;若校验成功,则生成穿透请求并发送给数据源;否则,将本地时间戳列表中的与初始化请求对应的时间戳,以及与时间戳对应的本地缓存中的缓存数据发送至客户端。
可选的,校验模块包括:
第二判断子模块,用于判断本地时间戳列表中是否存在数据更新请求中的时间戳。
第二判定子模块,用于若本地时间戳列表中存在时间戳,则判定数据更新请求中的时间戳校验成功。
在本申请另一实施例中,还提供了一种电子设备,如图5所示,包括处理器501、通信接口502、存储器503和通信总线504,其中,处理器501,通信接口502,存储器503通过通信总线504完成相互间的通信;
存储器503,用于存放计算机程序;
处理器501,用于执行存储器503上所存放的程序时,实现如下步骤:
检测是否接收到客户端发送的数据更新请求,所述数据更新请求中携带有时间戳,所述时间戳是有数据更新时,服务器发送至客户端的;
若接收到所述数据更新请求,则提取所述数据更新请求中的时间戳;
根据所述时间戳判断本地缓存中是否存在与所述数据更新请求对应的缓存数据;
若本地缓存中不存在与所述数据更新请求对应的缓存数据,则生成穿透请求并发送给数据源;
接收所述数据源响应所述穿透请求返回的请求数据,将所述请求数据作为缓存数据发送至客户端。
本发明实施例,首先检测是否接收到客户端发送的数据更新请求,该数据更新请求中携带有时间戳,若是接收到该数据更新请求,则提取该数据更新请求中的时间戳,然后根据上述时间戳判断本地缓存中是否存在与上述数据更新请求对应的缓存数据,若是不存在与上述数据更新请求对应的缓存数据,则生成穿透请求并发送给数据源,最后接收数据源响应上述穿透请求返回的请求数据,并将该请求数据最为缓存数据发送至客户端。本申请提供的技术方案首先判断本地缓存中是否有与接收到的时间戳相对应的缓存数据,若是没有,就通过穿透从后端数据源中获取相应的数据,使得用户得到的数据是最新的数据,保证客户端数据更新的及时性,提升用户体验。
上述电子设备提到的通信总线504可以是外设部件互连标准(PeripheralComponent Interconnect,简称PCI)总线或扩展工业标准结构(Extended IndustryStandard Architecture,简称EISA)总线等。该通信总线504可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口502用于上述电子设备与其他设备之间的通信。
存储器503可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器501可以是通用处理器,包括中央处理器(Central ProcessingUnit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本申请另一实施例中,还提供了一种存储介质,所述存储介质上存储有缓存数据更新方法程序,所述缓存数据更新方法程序被处理器执行时实现上述任一所述的缓存数据更新方法的步骤。
本发明实施例在具体实现时,可以参阅上述各个实施例,具有相应的技术效果。
可以理解的是,本文描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(ApplicationSpecific Integrated Circuits,ASIC)、数字信号处理器(Digital Signal Processing,DSP)、数字信号处理设备(DSP Device,DSPD)、可编程逻辑设备(Programmable LogicDevice,PLD)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、通用处理器、控制器、微控制器、微处理器、用于执行本申请所述功能的其它电子单元或其组合中。
对于软件实现,可通过执行本文所述功能的单元来实现本文所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明各个实施例所述的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法或者实施例的某些部分所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (13)
1.一种缓存数据更新方法,其特征在于,包括:
检测是否接收到客户端发送的数据更新请求,所述数据更新请求中携带有时间戳,所述时间戳是有数据更新时,服务器发送至客户端的;
若接收到所述数据更新请求,则提取所述数据更新请求中的时间戳;
根据所述时间戳判断本地缓存中是否存在与所述数据更新请求对应的缓存数据;
若本地缓存中不存在与所述数据更新请求对应的缓存数据,则生成穿透请求并发送给数据源;
接收所述数据源响应所述穿透请求返回的请求数据,将所述请求数据保存为本地缓存数据并发送至客户端。
2.根据权利要求1所述的缓存数据更新方法,其特征在于,在检测是否接收到客户端发送的数据更新请求之前,所述方法还包括:
当检测到数据更新时,生成时间戳;
检测是否接收到客户端发送的初始化请求;
若接收到所述初始化请求,将所述时间戳发送至客户端。
3.根据权利要求2所述的缓存数据更新方法,其特征在于,根据所述时间戳判断本地缓存中是否存在与所述数据更新请求对应的缓存数据,包括:
生成携带有将时间戳作为关键字的缓存请求;
判断所述本地缓存中是否包含与所述缓存请求对应的数据;
若所述本地缓存中未包含与所述缓存请求对应的数据,确定所述本地缓存中不存在与所述数据更新请求对应的缓存数据。
4.根据权利要求2所述的缓存数据更新方法,其特征在于,若本地缓存中不存在与所述数据更新请求对应的缓存数据,则生成穿透请求并发送给数据源,包括:
根据所述数据更新请求生成穿透请求;
根据所述穿透请求从本地缓存对应的数据源中获取最新数据并缓存到本地缓存中。
5.根据权利要求4所述的缓存数据更新方法,其特征在于,在生成穿透请求并发送给数据源之前,所述方法还包括:
校验所述数据更新请求中的时间戳;
若校验成功,则生成穿透请求并发送给数据源;
否则,将本地时间戳列表中的与所述初始化请求对应的时间戳,以及与所述时间戳对应的本地缓存中的缓存数据发送至客户端。
6.根据权利要求5所述的缓存数据更新方法,其特征在于,校验所述数据更新请求中的时间戳,包括:
判断所述本地时间戳列表中是否存在所述数据更新请求中的时间戳;
若所述本地时间戳列表中存在所述时间戳,则判定所述数据更新请求中的时间戳校验成功。
7.一种缓存数据更新装置,其特征在于,包括:
第一检测模块,用于检测是否接收到客户端发送的数据更新请求,所述数据更新请求中携带有时间戳,所述时间戳是有数据更新时,服务器发送至客户端的;
提取模块,用于若接收到所述数据更新请求,则提取所述数据更新请求中的时间戳;
判断模块,用于根据所述时间戳判断本地缓存中是否存在与所述数据更新请求对应的缓存数据;
穿透请求模块,用于若本地缓存中不存在与所述数据更新请求对应的缓存数据,则生成穿透请求并发送给数据源;
更新模块,用于接收所述数据源响应所述穿透请求返回的请求数据,将所述请求数据保存为本地缓存数据并发送至客户端。
8.根据权利要求7所述的缓存数据更新装置,其特征在于,所述装置还包括:
生成模块,用于当检测到数据更新时,生成时间戳;
第二检测模块,用于检测是否接收到客户端发送的初始化请求;
发送模块,用于若接收到所述初始化请求,将所述时间戳发送至客户端。
9.根据权利要求8所述的缓存数据更新装置,其特征在于,判断模块包括:
第一生成子模块,用于生成携带有将时间戳作为关键字的缓存请求;
第一判断子模块,用于判断所述本地缓存中是否包含与所述缓存请求对应的数据;
第一判定子模块,用于若所述本地缓存中未包含与所述缓存请求对应的数据,则判定所述本地缓存中不存在与所述数据更新请求对应的缓存数据。
10.根据权利要求8所述的缓存数据更新装置,其特征在于,所述穿透请求模块包括:
第二生成子模块,用于根据所述数据更新请求生成穿透请求;
获取子模块,用于根据所述穿透请求从本地缓存对应的数据源中获取最新数据并缓存到本地缓存中。
11.根据权利要求10所述的缓存数据更新装置,其特征在于,所述装置还包括:
校验模块,用于校验所述数据更新请求中的时间戳;若校验成功,则生成穿透请求并发送给数据源;否则,将本地时间戳列表中的与所述初始化请求对应的时间戳,以及与所述时间戳对应的本地缓存中的缓存数据发送至客户端。
12.根据权利要求11所述的缓存数据更新装置,其特征在于,所述校验模块包括:
第二判断子模块,用于判断所述本地时间戳列表中是否存在所述数据更新请求中的时间戳;
第二判定子模块,用于若所述本地时间戳列表中存在所述时间戳,则判定所述数据更新请求中的时间戳校验成功。
13.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-6任一所述的缓存数据更新方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910907100.5A CN110727892A (zh) | 2019-09-24 | 2019-09-24 | 缓存数据更新方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910907100.5A CN110727892A (zh) | 2019-09-24 | 2019-09-24 | 缓存数据更新方法、装置及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110727892A true CN110727892A (zh) | 2020-01-24 |
Family
ID=69219399
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910907100.5A Pending CN110727892A (zh) | 2019-09-24 | 2019-09-24 | 缓存数据更新方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110727892A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111898054A (zh) * | 2020-08-07 | 2020-11-06 | 湖南快乐阳光互动娱乐传媒有限公司 | 反向缓存控制方法及系统、服务端、客户端和业务端 |
CN112631963A (zh) * | 2020-12-25 | 2021-04-09 | 北京奇艺世纪科技有限公司 | 缓存数据管理方法、装置、设备及存储介质 |
CN113076067A (zh) * | 2021-04-16 | 2021-07-06 | 北京沃东天骏信息技术有限公司 | 淘汰缓存数据的方法和装置 |
CN113645309A (zh) * | 2021-08-18 | 2021-11-12 | 浙江苍南仪表集团股份有限公司 | 多客户端数据差异化二次缓存及同步的处理方法及系统 |
CN115858688A (zh) * | 2023-03-03 | 2023-03-28 | 北京阿玛西换热设备制造有限公司 | 一种数据库的远程数据同步方法及系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101090401A (zh) * | 2007-05-25 | 2007-12-19 | 金蝶软件(中国)有限公司 | 一种群集环境下的数据缓存方法及系统 |
US20080209120A1 (en) * | 2007-02-26 | 2008-08-28 | Microsoft Corporation | Accelerating cache performance by active cache validation |
CN103812849A (zh) * | 2012-11-15 | 2014-05-21 | 腾讯科技(深圳)有限公司 | 一种本地缓存更新方法、系统、客户端及服务器 |
CN106599721A (zh) * | 2016-12-13 | 2017-04-26 | 微梦创科网络科技(中国)有限公司 | 一种基于缓存的数据访问方法及装置 |
CN106878370A (zh) * | 2016-09-19 | 2017-06-20 | 阿里巴巴集团控股有限公司 | 一种本地缓存的更新方法和设备 |
CN107122410A (zh) * | 2017-03-29 | 2017-09-01 | 武汉斗鱼网络科技有限公司 | 一种缓存更新方法及装置 |
CN109710644A (zh) * | 2018-12-26 | 2019-05-03 | 苏州思必驰信息科技有限公司 | 防止缓存穿透的方法和装置 |
-
2019
- 2019-09-24 CN CN201910907100.5A patent/CN110727892A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080209120A1 (en) * | 2007-02-26 | 2008-08-28 | Microsoft Corporation | Accelerating cache performance by active cache validation |
CN101090401A (zh) * | 2007-05-25 | 2007-12-19 | 金蝶软件(中国)有限公司 | 一种群集环境下的数据缓存方法及系统 |
CN103812849A (zh) * | 2012-11-15 | 2014-05-21 | 腾讯科技(深圳)有限公司 | 一种本地缓存更新方法、系统、客户端及服务器 |
CN106878370A (zh) * | 2016-09-19 | 2017-06-20 | 阿里巴巴集团控股有限公司 | 一种本地缓存的更新方法和设备 |
CN106599721A (zh) * | 2016-12-13 | 2017-04-26 | 微梦创科网络科技(中国)有限公司 | 一种基于缓存的数据访问方法及装置 |
CN107122410A (zh) * | 2017-03-29 | 2017-09-01 | 武汉斗鱼网络科技有限公司 | 一种缓存更新方法及装置 |
CN109710644A (zh) * | 2018-12-26 | 2019-05-03 | 苏州思必驰信息科技有限公司 | 防止缓存穿透的方法和装置 |
Non-Patent Citations (1)
Title |
---|
王艳萍: "移动Web客户端持久化缓存技术研究", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑(月刊)》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111898054A (zh) * | 2020-08-07 | 2020-11-06 | 湖南快乐阳光互动娱乐传媒有限公司 | 反向缓存控制方法及系统、服务端、客户端和业务端 |
CN112631963A (zh) * | 2020-12-25 | 2021-04-09 | 北京奇艺世纪科技有限公司 | 缓存数据管理方法、装置、设备及存储介质 |
CN112631963B (zh) * | 2020-12-25 | 2023-09-01 | 北京奇艺世纪科技有限公司 | 缓存数据管理方法、装置、设备及存储介质 |
CN113076067A (zh) * | 2021-04-16 | 2021-07-06 | 北京沃东天骏信息技术有限公司 | 淘汰缓存数据的方法和装置 |
CN113645309A (zh) * | 2021-08-18 | 2021-11-12 | 浙江苍南仪表集团股份有限公司 | 多客户端数据差异化二次缓存及同步的处理方法及系统 |
CN115858688A (zh) * | 2023-03-03 | 2023-03-28 | 北京阿玛西换热设备制造有限公司 | 一种数据库的远程数据同步方法及系统 |
CN115858688B (zh) * | 2023-03-03 | 2023-04-18 | 北京阿玛西换热设备制造有限公司 | 一种数据库的远程数据同步方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110727892A (zh) | 缓存数据更新方法、装置及电子设备 | |
CN105824909B (zh) | 页面生成方法和装置 | |
US10103931B2 (en) | Session-based matching of mutable browser identifiers | |
US8244698B2 (en) | Encoding a schema version in table names | |
US10841327B2 (en) | Mining attack vectors for black-box security testing | |
CN106302595B (zh) | 一种对服务器进行健康检查的方法及设备 | |
US11503070B2 (en) | Techniques for classifying a web page based upon functions used to render the web page | |
CN110505232A (zh) | 网络攻击的检测方法及装置、电子设备、存储介质 | |
CN106649395B (zh) | 网页更新方法和装置 | |
KR20150040325A (ko) | 애플리케이션 보안 검증을 위한 클라우드 지원형 방법 및 서비스 | |
US10614208B1 (en) | Management of login information affected by a data breach | |
US9092287B2 (en) | Product deployment system | |
US9864684B2 (en) | Performing efficient cache invalidation | |
CN109542851A (zh) | 文件更新方法、装置及系统 | |
KR20150017385A (ko) | 시스템 파일을 수리하기 위한 시스템 및 방법 | |
US20230221952A1 (en) | Disabling a script based on indications of unsuccessful execution of the script | |
CN110737891A (zh) | 一种主机入侵检测方法和装置 | |
CN103152381A (zh) | 一种对浏览器崩溃数据进行处理的方法和服务器系统 | |
US11599406B2 (en) | Common platform for fulfilling different actions | |
CN111327598B (zh) | 项目免登录方法、装置、计算机设备及存储介质 | |
CN107122164B (zh) | 函数地址获取及应用其的方法、装置、设备及存储介质 | |
CN117880363A (zh) | 网络数据缓存处理方法、装置、计算机设备和存储介质 | |
CN114116272A (zh) | 一种服务端数据的校验方法及系统 | |
CN117574015A (zh) | 网页更新方法、装置、电子设备及存储介质 | |
CN116501344A (zh) | 页面更新方法及装置 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200124 |
|
RJ01 | Rejection of invention patent application after publication |