CN108153783A - 一种数据缓存的方法和装置 - Google Patents
一种数据缓存的方法和装置 Download PDFInfo
- Publication number
- CN108153783A CN108153783A CN201611107494.9A CN201611107494A CN108153783A CN 108153783 A CN108153783 A CN 108153783A CN 201611107494 A CN201611107494 A CN 201611107494A CN 108153783 A CN108153783 A CN 108153783A
- Authority
- CN
- China
- Prior art keywords
- data
- page
- request
- label
- period
- 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.)
- Granted
Links
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
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (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)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种数据缓存的方法和装置。该数据缓存的方法包括:接收来自终端设备的数据请求,所述数据请求中包含用户选择的页面的页面标识;确定所述页面标识对应的页面数据的缓存关键字(key);根据所确定的所述缓存关键字,判断所述页面数据的热门程度是否满足预设的条件;如果满足预设的条件,将从后端服务器获取的所述页面数据存入本机缓存,并将所述页面数据返回所述终端设备;如果不满足预设的条件,则将从后端服务器获取的所述页面数据返回所述终端设备。
Description
技术领域
本发明涉及数据存储技术,特别涉及一种数据缓存的方法和装置。
背景技术
缓存(Cache)是指计算机设备中可以进行高速数据交换的存储器,它先于内存与中央处理器(CPU)交换数据,因此速率很快。当计算机设备的进程要读取数据时,会首先从缓存中查找该数据,如果查找到了则直接读取该数据,如果查找不到再从内存中查找。能够从缓存中获取到所需的数据称为缓存命中,如果不能从缓存中获取到所需的数据则称为缓存未命中。
当有数据存入缓存时,通常会为数据设置过期时间(timeout)。在过期时间到达时,数据会被自动清除;而在过期时间未到达时,数据不会被清除,本机的进程依然能够从缓存中获取数据。通常,每台计算机设备分配给缓存的存储空间是一定的,当缓存的存储空间已满却仍有新数据存入时,一些尚未到达过期时间的数据将会被清除,以便为新数据留出空间。
发明内容
本发明实施例提供一种数据缓存的方法和装置,可以进一步提高缓存命中率,降低后端服务器的压力,提高接入服务器对用户访问请求的处理速度,从而增加接入服务器的吞吐量,减少用户的等待时间。
本发明实施例提供一种数据缓存的方法,包括:
接收来自终端设备的数据请求,所述数据请求中包含用户选择的页面的页面标识;
确定所述页面标识对应的页面数据的缓存关键字key;
根据所确定的所述缓存关键字,判断所述页面数据的热门程度是否满足预设的条件;
如果满足预设的条件,将从后端服务器获取的所述页面数据存入本机缓存,并将所述页面数据返回所述终端设备;
如果不满足预设的条件,则将从后端服务器获取的所述页面数据返回所述终端设备。
本发明实施例提供一种数据缓存的装置,包括:
接收模块,用于接收来自终端设备的数据请求,所述数据请求中包含用户选择的页面的页面标识;
确定模块,用于确定所述页面标识对应的页面数据的缓存关键字key;
判断模块,用于根据所述确定模块确定的所述缓存关键字,判断所述页面数据的热门程度是否满足预设的条件;
存储模块,用于当所述判断模块确定所述页面数据的热门程度满足预设的条件时,将从后端服务器获取的所述页面数据存入本机缓存;
发送模块,用于将从后端服务器获取的所述页面数据返回所述终端设备。
由本发明实施例提供的技术方案可见,接入服务器在从后端服务器获取到页面数据之后,不是直接将页面数据存入本机缓存,而是要先根据页面数据的缓存关键字判断页面数据的热门程度是否满足预设的条件,即判断页面数据是否为热门数据。只有在确定页面数据的热门程度满足预设的条件时,即确定页面数据是热门数据时,接入服务器才会将页面数据存入本机缓存;否则,则确定该页面数据为冷门数据,接入服务器不在本机缓存中存储页面数据,而只将页面数据返回给终端设备。通过上述技术方案,可以避免冷门数据存入接入服务器的本机缓存,这不但节省了本机缓存的存储空间,而且提高了热门数据在本机缓存中的缓存命中率,从而避免了接入服务器因为缓存未命中而频繁地从后端服务器获取数据。特别是,在对服务器推送(PUSH)的页面进行数据请求的次数较多的情况下,可以减少接入服务器对后端服务器的访问量,降低后端服务器的压力,提高接入服务器对用户访问请求的处理速度,从而增加接入服务器的吞吐量,减少用户的等待时间。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例提供的数据缓存***的结构示意图;
图2为本发明实施例提供的一种数据缓存方法的流程图;
图3为本发明实施例提供的另一种数据缓存方法的流程图;
图4为本发明实施例提供的一种在APC中进行数据缓存的方法的流程图;
图5为本发明实施例提供的一种计算页面数据的数据请求数量的方法的流程图;
图6为本发明实施例提供的一种滑动时间窗的设置示意图;
图7为本发明实施例提供的另一种在APC中进行数据缓存的方法的流程图;
图8为本发明实施例提供的另一种在APC中进行数据缓存的方法的流程图;
图9为本发明实施例提供的数据缓存装置的结构示意图;
图10为本发明实施例提供的数据缓存装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排它的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
当用户打开安装在终端设备上的客户端,并在客户端的用户界面(UI)上触发页面链接时,无论该页面链接对应的页面数据是否是热门数据,接入服务器都会将其存入缓存。所谓热门数据,是指在某一时间段内用户请求的次数超过预设阈值的数据。反之,在某一时间段内用户请求的次数不超过预设阈值的数据则称为冷门数据。当用户选择的页面数量足够多时,接入服务器的缓存的存储空间将被耗尽,从而导致未到达过期时间的数据被清除。如果存入缓存的冷门数据占用较多的存储空间,就会挤占热门数据的存储空间,导致尚未到达过期时间的热门数据被清除。然而,对于尚未到达过期时间就被清除的热门数据,后续很可能还会有其他用户请求该热门数据。当再有用户请求该热门数据时,接入服务器需要从后端服务器重新获取该热门数据并存入本机缓存中,这就降低了热门数据的缓存命中率。特别是,对于服务器推送(PUSH)的页面,访问的用户数量通常较多,如果冷门数据占用了较多存储空间,会导致缓存命中率进一步降低,接入服务器需要频繁地从后端服务器获取该PUSH页面的页面数据,这既增加了后端服务器的压力,又降低了接入服务器对用户访问请求的处理速度,从而降低了接入服务器的吞吐量,延长了用户的等待时间。
本发明实施例提供了一种数据缓存***,用于当用户使用安装在终端设备上的客户端并触发客户端的UI界面上显示的页面链接时,缓存与该页面链接对应的页面数据,并将页面数据提供给用户。图1为本发明实施例提供的数据缓存***的结构示意图。如图1所示,该***包括至少一个终端设备101(图中仅示出一个),接入服务器102和后端服务器103。其中,终端设备101可以为任意类型的移动终端设备或非移动终端设备。终端设备101上安装有客户端程序,通过客户端的UI界面可以为用户显示页面链接。客户端程序是指安装在终端设备上、通过终端设备与服务器侧进行交互以便为用户提供某种功能的应用。客户端程序有多种类型,例如:网页浏览器、电子邮件客户端、资讯类APP、社交类APP、阅读类APP、影音播放类APP、游戏类APP、生活消费类APP等等。根据图1所示的数据缓存***,本发明实施例提供了一种数据缓存的方法,参见图2。图2所示的数据缓存的方法包括如下步骤:
步骤201,接入服务器接收终端设备发送的数据请求。
在本发明实施例中,如果用户点击客户端的UI界面上显示的页面链接,则终端设备会向接入服务器发送数据请求,以获取页面数据。
步骤202,接入服务器判断本机缓存中是否存储有页面数据,如果没有存储页面数据,则执行步骤203,如果存储有页面数据,则执行步骤206。
步骤203,接入服务器从后端服务器获取页面数据。
步骤204,接入服务器判断页面数据是否获取成功,如果获取成功,则执行步骤205,如果获取失败,则执行步骤207。
步骤205,接入服务器将从后端服务器获取的页面数据存入缓存。
步骤206,接入服务器向终端设备返回页面数据。
步骤207,接入服务器向终端设备返回空数据。
在本发明实施例中,如果接入服务器向终端设备返回页面数据,则用户点击页面链接后客户端的UI界面上显示用户选择的页面。如果接入服务器既没有从本机缓存获取到页面数据,也没有从后端服务器获取到页面数据,则只能向终端设备返回空数据,此时客户端的UI界面显示空页面,例如显示空数据图标或“暂无数据”等提示。
在上述实施例提供的数据缓存方法的实现过程中,发明人发现该方法依然存在无论是热门数据还是冷门数据都会存入本机缓存的问题,从而导致缓存命中率降低。而且,因为接入服务器需要频繁地从后端服务器获取热门数据,因此增加了后端服务器的压力,降低了接入服务器对用户访问请求的处理速度,从而降低了接入服务器的吞吐量,延长了用户的等待时间。
为了克服上述问题,本发明实施例又提供了一种数据缓存的方法,该方法可应用于图1所示的数据缓存***,参见图3。图3所示的数据缓存的方法包括如下步骤:
步骤301,接收来自终端设备的数据请求,所述数据请求中包含用户选择的页面的页面标识(ID);
步骤302,确定所述页面标识对应的页面数据的缓存关键字(key);
步骤303,根据所确定的所述缓存key,判断所述页面数据的热门程度是否满足预设的条件;如果满足预设的条件,执行步骤304,如果不满足预设的条件,执行步骤305;
步骤304,将从后端服务器获取的所述页面数据存入本机缓存,并将所述页面数据返回所述终端设备;
步骤305,将从后端服务器获取的所述页面数据返回所述终端设备。
如前面所述,热门数据是指在某一时间段内用户请求的次数超过预设阈值的数据,因此在本发明实施例中,页面数据的热门程度可以用页面数据被请求的次数来表示。因此在步骤303中,接入服务器可以判断页面数据被请求的次数是否达到预设的阈值,如果达到预设的阈值,则确定满足预设的条件,否则确定不满足预设的条件。
在本发明实施例中,引入了与页面数据的缓存key对应的标签(flag)以及标签的标志位(flag bit)的概念。与缓存key对应的标签的设置和存储需要满足两个条件:一是接入服务器接收到针对该页面数据的数据请求,二是本机缓存没有存储与缓存key对应的标签;而标签的标志位的值的设置与页面数据被请求的次数有关。因此,判断页面数据被请求的次数是否达到预设的阈值的方法可以通过判断本机缓存中是否存储有与缓存key对应的标签以及判断标签的标志位的值来实现。具体地,判断页面数据被请求的次数是否达到预设的阈值的方法可以包括如下步骤:
接入服务器判断本机缓存中是否存储有与缓存key对应的标签,如果存储有与缓存key对应的标签,则进一步判断与缓存key对应的标签的标志位是否为第一指定值;
如果本机缓存中存储有与缓存key对应的标签,且标签的标志位为第一指定值,则确定页面数据被请求的次数达到预设的阈值;
如果本机缓存中没有存储与缓存key对应的标签,或者本机缓存中存储了与缓存key对应的标签,但标签的标志位不为第一指定值,例如为第二指定值,则确定页面数据被请求的次数未达到预设的阈值。
在本实施例中,标志位的第一指定值用于表示页面数据被请求的次数达到预设的阈值,即页面数据为热门数据,第二指定值用于表示页面数据被请求的次数没有达到预设的阈值,即页面数据为冷门数据。
在本实施例中,如果本机缓存中没有存储与缓存key对应的标签,则表示该页面数据没有被请求过,或者表示曾经被请求过,但针对之前的请求所设置的标签已经因为到达过期时间而被从本机缓存中清除了,因此需要重新设置与缓存key对应的标签及其标志位的值,以便后续数据请求到来时用于判断页面数据被请求的次数。因此,当确定本机缓存中没有存储与缓存key对应的标签时,该方法进一步包括如下步骤:
接入服务器计算在预设的时间周期内页面标识对应的数据请求的数量,判断数据请求的数量是否达到预设的阈值;
如果达到预设的阈值,设置与所述缓存key对应的标签,并将标签的标志位设置为第一指定值;
如果没有达到预设的阈值,设置与所述缓存key对应的标签,并将标签的标志位设置为第二指定值;
将缓存key对应的标签存入本机缓存。
在本发明实施例中,计算在预设的时间周期内页面标识对应的数据请求的数量的方法包括如下步骤:
预先设置滑动时间窗,滑动时间窗的长度为T;
滑动时间窗每移动T/n时间段,并在下一个T/n时间段内第一次接收到所述页面标识对应的数据请求时启动一个计数器,其中n为正整数,计数器的过期时间为T;
当数据请求是在第k个T/n时间段内被接收时,与第k个T/n时间段对应的计数器的计数值加1;
如果k>n,则将第k个T/n时间段之前的n个T/n时间段对应的计数器的计数值进行累加得到计数和,将该计数和作为与页面标识对应的数据请求的数量;
如果1≤k≤n,将第k个T/n时间段之前的k-1个T/n时间段对应的计数器的计数值进行累加得到计数和,将该计数和作为与页面标识对应的数据请求的数量。
在本实施例中,在计算与用户选择的页面的页面标识对应的数据请求的数量时,并不包括接收该数据请求的当前时刻所在的第k个T/n时间段内的计数值,这样可以保证统计一个完整的时间周期内的数据请求的次数,从而保证计数结果的准确性。
在本发明实施例中,判断页面数据被请求的次数是否达到预设的阈值的方法可以包括如下步骤:
计算在预设的时间周期内页面标识对应的数据请求的数量;
判断数据请求的数量是否达到预设的阈值;
如果达到预设的阈值,则确定页面数据被请求的次数达到预设的阈值,否则确定所述页面数据被请求的次数没有达到预设的阈值。
在本实施例中,如果在预设的时间周期内页面标识对应的数据请求的数量达到预设的阈值,则表示该页面数据为热门数据,如果在预设的时间周期内页面标识对应的数据请求的数量没有达到预设的阈值,则表示该页面数据为冷门数据。
在本发明实施例中,计算在预设的时间周期内页面标识对应的数据请求的数量的方法包括如下步骤:
预先设置滑动时间窗,滑动时间窗的长度为T;
滑动时间窗每移动T/n时间段,并在下一个T/n时间段内第一次接收到所述页面标识对应的数据请求时启动一个计数器,其中n为正整数,计数器的过期时间为T;
当数据请求是在第k个T/n时间段内被接收时,与第k个T/n时间段对应的计数器的计数值加1;
如果k>n,则将第k个T/n时间段之前的n个T/n时间段对应的计数器的计数值进行累加得到计数和,或者将第k个T/n时间段对应的计数器的计数值和在第k个T/n时间段之前的n-1个T/n时间段对应的计数器的计数值进行累加得到计数和,将该计数和作为与页面标识对应的数据请求的数量;
如果1≤k≤n,将第k个T/n时间段之前的k-1个T/n时间段对应的计数器的计数值进行累加得到计数和,或者将第k个T/n时间段对应的计数器的计数值和在第k个T/n时间段之前的k-1个T/n时间段对应的计数器的计数值进行累加得到计数和,将该计数和作为与页面标识对应的数据请求的数量。
在本发明实施例中,判断页面数据被请求的次数是否达到预设的阈值方法可以包括如下步骤:
判断本机缓存中是否存储有与缓存key对应的标签,如果存储有与缓存key对应的标签,则确定页面数据被请求的次数达到预设的阈值,否则确定页面数据被请求的次数没有达到预设的阈值。
在本实施例中,只要接入服务器在接收到数据请求时本机缓存中已经存储了与缓存key对应的标签,即可以确定该页面数据为热门数据,否则,可确定该页面数据为冷门数据。
在本实施例中,无论本机缓存中是否存储有与缓存key对应的标签,接入服务器在判断本机缓存中是否存储有与缓存key对应的标签之后,都会设置与缓存key对应的标签,为缓存key对应的标签设置过期时间,并将标签存入本机缓存。如果本机缓存中已经存储了与缓存key对应的标签,则新设置的标签会替换原来的标签,以便后续数据请求到来时,用于判断页面数据是否为热门数据。
在本发明实施例中,在从后端服务器获取页面数据之前,该方法进一步包括:
判断本机缓存中是否存储有页面数据;
如果存储有页面数据,则将页面数据返回给终端设备;
如果没有存储页面数据,则从后端服务器获取页面数据。
由上述实施例提供的方法可见,接入服务器在从后端服务器获取到页面数据后,不是直接将页面数据存入本机缓存,而是要先根据页面数据的缓存key判断页面数据的热门程度是否满足预设的条件,即通过页面数据的被请求次数判断页面数据是否为热门数据。只有在确定页面数据的热门程度满足预设的条件时,即确定页面数据是热门数据时,接入服务器才会将页面数据存入本机缓存;否则,则确定该页面数据为冷门数据,接入服务器不在本机缓存中存储页面数据,而只将页面数据返回给终端设备。
通过上述技术方案,可以避免冷门数据存入接入服务器的本机缓存,这不但节省了本机缓存的存储空间,而且提高了热门数据在本机缓存中的缓存命中率,从而避免了接入服务器频繁地从后端服务器获取数据。特别是,在对服务器PUSH的页面进行数据请求的次数较多的情况下,可以减少接入服务器对后端服务器的访问量,降低后端服务器的压力,提高接入服务器对用户访问请求的处理速度,从而增加接入服务器的吞吐量,减少用户的等待时间。
在本发明实施例中,接入服务器的本机缓存可以是任意类型的缓存设备,例如可以是可选PHP缓存加速器(Alternative PHP Cache,APC)、Redis(REmote DIctionaryServer)存储***、memcache高速缓存***等等。其中,APC是一种对超文本处理器(Hypertext Preprocessor,PHP)有效的开放源高速缓冲存储工具,可用于缓存PHP代码和用户数据。PHP是一种通用开源脚本语言,主要适用于Web开发领域。PHP可以更快速地执行动态网页,因此被广泛应用于客户端程序的开发,例如Web浏览器、各种类型的APP的开发等。因此,APC也作为缓存设备被提供客户端业务的接入服务器广泛使用。但是,因为APC的缓存空间较小,所以能缓存的数据量有限。因此,针对APC的特点,本发明实施例提供了一种在APC中进行数据缓存的方法。该方法可应用于图1所示的数据缓存***。在该***中,终端设备101上安装有客户端程序。在本实施例中,该客户端程序可以是新闻客户端或其它类型的客户端。通过客户端的UI界面,可以为用户显示多个页面链接。接入服务器运行在PHP环境下,APC是PHP环境下用于缓存数据的扩展。图4为本发明实施例提供的一种在APC中进行数据缓存的方法的流程图。如图4所示,该方法包括如下步骤:
步骤401,接入服务器接收终端设备发送的数据请求,该数据请求中包含用户选择的页面的页面标识。
在本实施例中,当用户在客户端的UI界面上点击某个页面链接时,终端设备向接入服务器发送包含页面标识的数据请求,用于请求与该页面标识对应的页面数据。
步骤402,接入服务器根据预设的页面标识和页面数据的缓存关键字(key)的对应关系,确定该页面标识对应的页面数据的缓存key。
步骤403,接入服务器根据页面数据的缓存key通过apc_fetch(key_data)函数从本机APC中获取页面数据。如果apc_fetch(key_data)函数返回值表示数据获取成功,则执行步骤408;如果apc_fetch(key_data)函数返回值表示数据获取失败,则执行步骤404。
在本步骤中,key_data为变量名,用于表示apc_fetch函数包含变量——页面数据的缓存key值。
在本实施例中,页面标识可以对应多个缓存key。在这种情况下,页面数据在服务器侧是被划分成多个子数据来存储的,因此这多个子数据中的每一个都有一个缓存key。基于这多个缓存key,接入服务器能够获取到每个子数据。无论页面标识对应一个缓存key还是多个缓存key,数据的缓存和获取都是基于缓存key进行的,因此在本实施例中,以页面标识只对应一个缓存key为例进行说明。
步骤404,接入服务器从后端服务器获取页面数据。如果数据获取失败,则执行步骤409;如果数据获取成功,则执行步骤405。
步骤405,接入服务器判断本机APC中是否存储有与该缓存key对应的标签,如果存储有与该缓存key对应的标签,则执行步骤406,否则,执行步骤410。
步骤406,接入服务器判断与该缓存key对应的标签的标志位是否为第一指定值,如果与该缓存key对应的标签的标志位为第一指定值,则执行步骤407,否则,执行步骤408。
步骤407,接入服务器将从后端服务器获取的页面数据通过apc_store(key_data,data,data_timeout)函数存入本机APC。
在本步骤中,key_data、data、data_timeout表示apc_store函数包含的三个变量。其中,key_data表示页面数据的缓存key值,data表示页面数据,data_timeout表示页面数据的过期时间。
步骤408,接入服务器向终端设备返回页面数据。
在本实施例中,引入了与页面数据的缓存key对应的标签以及标签的标志位的概念。与缓存key对应的标签的设置和存储需要满足两个条件:一是接入服务器接收到针对该页面数据的数据请求,二是本机APC中没有存储与缓存key对应的标签;而标签的标志位的值的设置与页面数据被请求的次数有关。因此,缓存key对应的标签以及标签的标志位可用来判断该页面数据是否为热门数据。例如,在本实施例中,如果标签的标志位为第一指定值,则表示页面数据为热门数据,此时接入服务器可以将页面数据存入本机APC;如果不为第一指定值,例如为第二指定值,则表示页面数据为冷门数据,此时接入服务器不在本机APC中存储页面数据,只将页面数据返回给终端设备。
在本实施例中,接入服务器在从后端服务器获取到页面数据后,先执行步骤405-407,以判断是否在本机APC中存储该页面数据,然后再执行步骤408。在本发明其它实施例中,接入服务器在从后端服务器获取到页面数据后,也可以先执行步骤408,然后再执行步骤405-407。
步骤409,接入服务器向终端设备返回空数据。
在本实施例中,即使接入服务器从本机APC和后端服务器中都没有获取到页面数据,也会向终端设备返回数据,只不过返回的是空数据。终端设备在收到接入服务器返回的空数据后,客户端的UI界面上会显示空页面,例如显示空数据图标或“暂无数据”等提示。
步骤410,接入服务器计算在预设的时间周期内页面标识对应的数据请求的数量。
步骤411,接入服务器判断在预设的时间周期内页面标识对应的数据请求的数量是否达到预设的阈值;如果达到预设的阈值,执行步骤412,如果没有达到预设的阈值,执行步骤413。
在本步骤中,预设的阈值可以根据页面的类别、特点以及曾经的请求数量动态确定。例如,可以根据数据请求的高峰时期的请求数量和低峰时期的请求数量计算一个中间值,将此中间值作为预设的阈值。又例如,阈值可以设置为相对于PUSH页面的请求数量小一些,相对于普通页面的请求数量大一些。
步骤412,接入服务器设置与所述缓存key对应的标签,并将标签的标志位设置为第一指定值。
步骤413,接入服务器设置与所述缓存key对应的标签,并将标签的标志位设置为第二指定值。
步骤414,接入服务器通过apc_store(key_flag,flag_i,flag_timeout)函数将缓存key对应的标签存入本机APC。
在本步骤中,key_flag、flag_i、flag_timeout表示apc_store函数包含的三个变量。其中,key_flag表示标签的缓存key值,flag_i表示标签的标志位,flag_timeout表示标签的过期时间。在本实施例中,标签的标志位的值i可以根据页面数据被请求的次数与预设阈值的比较结果设置为第一指定值或第二指定值。i设置为第一指定值表示该页面数据为热门数据,i设置为第二指定值表示该页面数据为冷门数据。例如,将flag_i设置为“flag_1”,表示该页面数据为热门数据,将flag_i设置为“flag_0”,表示该页面数据为冷门数据。在本发明其它实施例中,也可以将“0”作为第一指定值,将“1”作为第二指定值。
在本实施例中,如果本机APC中没有存储与缓存key对应的标签,则表示该页面数据没有被请求过,或者表示曾经被请求过,但针对之前的请求所设置的标签已经因为到达过期时间而被从本机APC中清除了,因此需要重新设置与缓存key对应的标签及其标志位的值,以便后续数据请求到来时用于判断该页面数据是否为热门数据。
在本实施例中,缓存key对应的标签的标志位的设置与预设的时间周期内页面标识对应的数据请求的数量有关。因此本发明实施例还提供了一种计算在预设的时间周期内页面标识对应的数据请求的数量的方法。
如图5所示,计算在预设的时间周期内页面标识对应的数据请求的数量的方法包括如下步骤:
步骤501,接入服务器预先设置滑动时间窗,滑动时间窗的长度为T。
步骤502,滑动时间窗每移动T/n时间段,并在下一个T/n时间段内第一次接收到该页面标识对应的数据请求时启动一个计数器,其中n为正整数,计数器的过期时间为T。
在本步骤中,滑动时间窗的设置可以参见图6。如图6所示,长度为T的滑动时间窗被划分为n个时间段,表示为T1,T2……Tn,每个时间段的长度为T/n。在接入服务器最初开始运行用户选择的页面业务时,滑动时间窗即开始沿着时间轴移动。当滑动时间窗移动到某个T/n个时间段,例如Ti时间段,并且接入服务器在Ti时间段内第一次接收到该页面标识对应的数据请求时,接入服务器为Ti时间段初始化一个计数器Ci,并将计数器Ci的值设置为1,过期时间设置为T。如果在Ti时间段内接入服务器后续再接收到该页面标识对应的数据请求,则计数器Ci的值自增1。因为计数器的过期时间为T,因此当滑动时间窗每移动T/n时间段,就会有一个计数器过期。例如,滑动时间窗移动至图6所示的Tn+2时间段时,则T1时间段对应的计数器就会过期,从而保证能够在一个完整的时间周期T内计算数据请求的数量。
在本实施例中,T和n的值根据页面数据对时间的敏感度确定。页面的类别不同,其页面数据的实时性要求也不同,因此T和n值的设置也可以不同。例如,股票页面,其对实时性要求较高,而天气预报页面对实时性要求就要低一些,因此可以对不同类别的页面设置不同的T和n的值。通常,T设置为3~5秒,n设置为5~10。
步骤503,当接入服务器在第k个T/n时间段内接收到数据请求时,与第k个T/n时间段对应的计数器的计数值加1。
步骤504,如果k>n,接入服务器将第k个T/n时间段之前的n个T/n时间段对应的计数器的计数值进行累加得到计数和,将该计数和作为与页面标识对应的数据请求的数量。
步骤505,如果1≤k≤n时,接入服务器将第k个T/n时间段之前的k-1个T/n时间段对应的计数器的计数值进行累加得到计数和,将计数和作为与页面标识对应的数据请求的数量。
在本实施例中,因为接收数据请求的第k个T/n时间段内的请求次数尚未累计完整。因此,第k个T/n时间段对应的计数器的计数值不参与数据请求数量的计算,可以保证统计一个完整的时间周期T内的数据请求的次数,避免因为淘汰T1时间段对应的计数器的计数值而导致的计数和下降的问题,从而保证计数结果的准确性。
当第k个T/n时间段尚未结束时,数据请求的计数结果不会改变,有效时间为T/n,所以根据数据请求的数量而设置的标签也一直存在于本机APC中,过期时间为T/n。这样,在第k个T/n时间段内如果页面数据需要存储,就无需再计算数据请求的数量,也无需对数据请求的数量和预设的阈值进行比较,只需要查询本机APC中的标签即可确定是否存储页面数据。这样可以降低接入服务器的负荷,提高处理速度。
当滑动时间窗进入第k+1个T/n时间段后,之前存储的标签到达过期时间被清除,这时如果接入服务器没有接收到新的数据请求,则暂时不会设置新的标签。直到接收到新的数据请求时,接入服务器再按照上述方法设置并存储新的标签。
由上述实施例提供的方法可见,接入服务器在从后端服务器获取到页面数据后,不是直接将页面数据存入本机APC中,而是通过判断本机APC中是否存储了与缓存key对应的标签以及标签的标志位确定该页面数据是否为热门数据。当本机APC中存储了与缓存key对应的标签且标签的标志位为第一指定值时,表示该页面数据是热门数据,接入服务器才将其存入本机APC中。这样,当后续再有终端设备发来数据请求时,接入服务器能够直接从本机APC中获取该页面数据,而无需再从后端服务器获取。如果本机APC中没有存储与缓存key对应的标签,或者存储了与缓存key对应的标签,但标签的标志位不为第一指定值时,可确定该页面数据为冷门数据,接入服务器不在本机APC中存储页面数据,而只将页面数据返回给终端设备。此时,本机APC中只存储有与该页面数据的缓存key对应的标签。通常,页面数据的大小至少为几十KB,而一个标签的大小却只有几个字节,因此,确定为冷门数据的页面数据不再存入本机APC而只是存储其缓存key对应的标签,能够节省大量的本机APC的存储空间。
因为只有热门数据才能存入本机APC,避免了冷门数据的写入,不但节省了本机APC的存储空间,而且提高了热门数据在本机APC中的缓存命中率,从而避免了接入服务器频繁地从后端服务器获取数据的问题。特别是,在对服务器PUSH的页面进行数据请求的次数较多的情况下,可以减少接入服务器对后端服务器的访问量,降低后端服务器的压力,提高接入服务器对用户访问请求的处理速度,从而增加接入服务器的吞吐量,减少用户的等待时间。
本发明实施例还提供了一种在APC中进行数据缓存的方法。该方法可应用于图1所示的数据缓存***。如图7所示,该方法包括如下步骤:
步骤701,接入服务器接收终端设备发送的数据请求,该数据请求中包含用户选择的页面的页面标识。
步骤702,接入服务器根据预设的页面标识和页面数据的缓存key的对应关系,确定该页面标识对应的页面数据的缓存key。
步骤703,接入服务器根据页面数据的缓存key通过apc_fetch(key_data)函数从本机APC中获取页面数据。如果apc_fetch(key_data)函数返回值表示数据获取成功,则执行步骤708;如果apc_fetch(key_data)函数返回值表示数据获取失败,则执行步骤704。
步骤704,接入服务器从后端服务器获取页面数据。如果数据获取失败,则执行步骤709;如果数据获取成功,则执行步骤705。
步骤705,接入服务器计算在预设的时间周期内页面标识对应的数据请求的数量。
步骤706,接入服务器判断在预设的时间周期内页面标识对应的数据请求的数量是否达到预设的阈值;如果达到预设的阈值,则执行步骤707,否则,执行步骤708。
步骤707,接入服务器将从后端服务器获取的页面数据通过apc_store(key_data,data,data_timeout)函数存入本机APC。
步骤708,接入服务器向终端设备返回页面数据。
步骤709,接入服务器向终端设备返回空数据。
从上述技术方案可以看出,步骤701-704与图4所示的步骤401-404一致,步骤707-709与图4所示的步骤407-409一致,可以参见图4所示的实施例的具体描述。本实施例与图4所示的实施例的不同之处在于,本实施例根据用户选择的页面的页面标识对应的数据请求的数量判断是否存储页面数据。如果在预设的时间周期内页面标识对应的数据请求的数量达到预设的阈值时,接入服务器将从后端服务器获取的页面数据存入本机APC,如果在预设的时间周期内页面标识对应的数据请求的数量没有达到预设的阈值时,接入服务器不在本机APC中存储页面数据,而只将页面数据返回用户终端。
在本实施例中,计算在预设的时间周期内页面标识对应的数据请求的数量的方法包括如下步骤:
接入服务器预先设置滑动时间窗,滑动时间窗的长度为T;
滑动时间窗每移动T/n时间段,并在下一个T/n时间段内第一次接收到该页面标识对应的数据请求时启动一个计数器,其中n为正整数,计数器的过期时间为T;
当接入服务器在第k个T/n时间段内接收到数据请求时,与第k个T/n时间段对应的计数器的计数值加1;
如果k>n,接入服务器将第k个T/n时间段之前的n个T/n时间段对应的计数器的计数值进行累加得到计数和,或者将第k个T/n时间段对应的计数器的计数值和在第k个T/n时间段之前的n-1个T/n时间段对应的计数器的计数值进行累加得到计数和,将该计数和作为与页面标识对应的数据请求的数量;
如果1≤k≤n时,接入服务器将第k个T/n时间段之前的k-1个T/n时间段对应的计数器的计数值进行累加得到计数和,或者将第k个T/n时间段对应的计数器的计数值和在第k个T/n时间段之前的k-1个T/n时间段对应的计数器的计数值进行累加得到计数和,将该计数和作为与页面标识对应的数据请求的数量。
从上述的计算方法可以看出,数据请求的数量可以在一个完整的时间周期T内计算,即不考虑尚未结束的当前第k个T/n时间段中的数据请求的次数;数据请求的数量也可以将当前第k个T/n时间段中的数据请求的次数计算在内,而淘汰T1时间段对应的计数器的计数值。当计算的是一个完整的时间周期T内数据请求的数量时,可以避免因为淘汰T1时间段对应的计数器的计数值而导致的计数和下降的问题,从而计数结果更加准确。
由上述实施例提供的方法可见,接入服务器在从后端服务器获取到页面数据后,不是直接将页面数据存入本机APC,而是通过判断在预设的时间周期内页面标识对应的数据请求的数量是否达到预设的阈值来确定该页面数据是否为热门数据。当在预设的时间周期内页面标识对应的数据请求的数量达到预设的阈值时,表示该页面数据是热门数据,接入服务器才将其存入本机APC中。这样,当后续再有终端设备发来数据请求时,接入服务器能够直接从本机APC中获取该页面数据,而无需再从后端服务器获取。当在预设的时间周期内页面标识对应的数据请求的数量没有达到预设的阈值时,可确定该页面数据为冷门数据,接入服务器不在本机APC中存储页面数据,而只将页面数据返回给终端设备。
因为只有热门数据才能存入本机APC,避免了冷门数据的写入,不但节省了本机APC的存储空间,而且提高了热门数据在本机APC中的缓存命中率,从而避免了接入服务器频繁地从后端服务器获取数据的问题。特别是,在对服务器PUSH的页面进行数据请求的次数较多的情况下,可以减少接入服务器对后端服务器的访问量,降低后端服务器的压力,提高接入服务器对用户访问请求的处理速度,从而增加接入服务器的吞吐量,减少用户的等待时间。
本发明实施例还提供了一种在APC中进行数据缓存的方法。该方法可应用于图1所示的数据缓存***。如图8所示,该方法包括如下步骤:
步骤801,接入服务器接收终端设备发送的数据请求,该数据请求中包含用户选择的页面的页面标识。
步骤802,接入服务器根据预设的页面标识和页面数据的缓存key的对应关系,确定该页面标识对应的页面数据的缓存key。
步骤803,接入服务器根据页面数据的缓存key通过apc_fetch(key_data)函数从本机APC中获取页面数据。如果apc_fetch(key_data)函数返回值表示数据获取成功,则执行步骤808;如果apc_fetch(key_data)函数返回值表示数据获取失败,则执行步骤804。
步骤804,接入服务器从后端服务器获取页面数据。如果数据获取失败,则执行步骤809;如果数据获取成功,则执行步骤805。
步骤805,接入服务器判断本机APC中是否存储有与缓存key对应的标签;如果存储有与缓存key对应的标签,则执行步骤806,否则,执行步骤808。
步骤806,接入服务器将从后端服务器获取的页面数据通过apc_store(key_data,data,data_timeout)函数存入本机APC。
步骤807,接入服务器设置与缓存key对应的标签,为缓存key对应的标签设置过期时间,并通过apc_store(key_flag,flag_i,flag_timeout)函数将缓存key对应的标签存入本机APC。
步骤808,接入服务器向终端设备返回页面数据。
步骤809,接入服务器向终端设备返回空数据。
从上述技术方案可以看出,步骤801-804与图4所示的步骤401-404一致,步骤806、808、809与图4所示的步骤407-409一致,可以参见图4所示的实施例的具体描述。本实施例与图4所示的实施例的不同之处在于,本实施例根据本机APC中是否存储与缓存key对应的标签来判断是否存储页面数据,但不考虑标签的标志位的值。因此在步骤807中,标志位flag_i设置为默认值即可。只要本机APC中存储有与缓存key对应的标签,即可以确定该页面数据为热门数据,接入服务器就将该页面数据存入本机APC,否则,可确定该页面数据为冷门数据,接入服务器不在本机APC中存储页面数据,而只将页面数据返回用户终端。
无论本机APC中是否存储了与缓存key对应的标签,接入服务器在判断本机APC中是否存储有与缓存key对应的标签之后,都会设置与缓存key对应的标签,为缓存key对应的标签设置过期时间,并将标签存入本机APC。如果本机AC中已经存储了与缓存Key对应的标签,则新设置的标签会替换原来的标签,以便后续数据请求到来时,用于判断页面数据是否为热门数据。
由上述实施例提供的方法可见,因为只有热门数据才能存入本机APC,避免了冷门数据的写入,不但节省了本机APC的存储空间,而且提高了热门数据在本机APC中的缓存命中率,从而避免了接入服务器频繁地从后端服务器获取数据的问题。特别是,在对服务器PUSH的页面进行数据请求的次数较多的情况下,可以减少接入服务器对后端服务器的访问量,降低后端服务器的压力,提高接入服务器对用户访问请求的处理速度,从而增加接入服务器的吞吐量,减少用户的等待时间。
上述实施例以APC作为接入服务器的本机缓存进行介绍,本领域技术人员可以理解,上述实施例提供的技术方案也适用于其它类型的缓存,例如Redis存储***、memcache高速缓存***等等。
本发明实施例还提供了一种数据缓存的装置,该装置可以为图1所示的数据缓存***中的接入服务器。图9为本发明实施例提供的数据缓存装置的结构示意图。如图9所示,该装置包括接收模块901、确定模块902、判断模块903、存储模块904、发送模块905。
该接收模块901,用于接收来自终端设备的数据请求,所述数据请求中包含用户选择的页面的页面标识。
该确定模块902,用于确定所述页面标识对应的页面数据的缓存关键字(key)。
该判断模块903,用于根据所述确定模块902确定的所述缓存key,判断所述页面数据的热门程度是否满足预设的条件。
该存储模块904,用于当所述判断模块903确定所述页面数据的热门程度满足预设的条件时,将从后端服务器获取的所述页面数据存入本机缓存。
该发送模块905,用于将从后端服务器获取的所述页面数据返回所述终端设备。
在本发明一实施例中,该判断模块903用于,判断所述页面数据被请求的次数是否达到预设的阈值,如果达到预设阈值,则确定所述页面数据的热门程度满足预设的条件,否则确定所述页面数据的热门程度不满足预设的条件。
在本发明一实施例中,该判断模块903用于,判断本机缓存中是否存储有与所述缓存key对应的标签,如果存储有与所述缓存key对应的标签,则进一步判断与所述缓存key对应的标签的标志位是否为第一指定值;如果本机缓存中存储有与所述缓存key对应的标签,且所述标签的标志位为第一指定值,则确定所述页面数据被请求的次数达到预设的阈值,否则确定所述页面数据被请求的次数未达到预设的阈值。
在本发明一实施例中,该数据缓存装置进一步包括:
第一计算模块906,用于当所述判断模块903确定本机缓存中没有存储与所述缓存key对应的标签时,计算在预设的时间周期内所述页面标识对应的数据请求的数量。
该判断模块903进一步用于,判断该第一计算模块906计算的数据请求的数量是否达到所述预设的阈值。
该数据缓存装置进一步包括:
第一标签设置模块907,用于当所述判断模块903确定所述数据请求的数量达到预设的阈值时,设置与所述缓存key对应的标签,并将所述标签的标志位设置为第一指定值;当所述判断模块903确定所述数据请求的数量没有达到预设的阈值,设置与所述缓存key对应的标签,并将所述标签的标志位设置为第二指定值。
该存储模块904进一步用于,将所述第一标签设置模块907设置的缓存key对应的标签存入本机缓存。
在本发明一实施例中,该第一计算模块906用于:
预先设置滑动时间窗,所述滑动时间窗的长度为T;
所述滑动时间窗每移动T/n时间段,并在下一个T/n时间段内第一次接收到所述页面标识对应的数据请求时启动一个计数器,其中n为正整数,计数器的过期时间为T;
当所述数据请求是在第k个T/n时间段内被接收时,与所述第k个T/n时间段对应的计数器的计数值加1;
如果k>n,则将第k个T/n时间段之前的n个T/n时间段对应的计数器的计数值进行累加得到计数和,将所述计数和作为与所述页面标识对应的数据请求的数量;
如果1≤k≤n,将第k个T/n时间段之前的k-1个T/n时间段对应的计数器的计数值进行累加得到计数和,将所述计数和作为与所述页面标识对应的数据请求的数量。
在本发明一实施例中,该数据缓存装置进一步包括:
第二计算模块908,用于计算在预设的时间周期内所述页面标识对应的数据请求的数量;
所述判断模块903用于,判断所述第二计算模块908计算的数据请求的数量是否达到预设的阈值;如果确定数据请求的数量达到预设的阈值,则确定所述页面数据被请求的次数达到预设的阈值,否则确定所述页面数据被请求的次数没有达到预设的阈值。
在本发明一实施例中,该第二计算模块908用于:
预先设置滑动时间窗,所述滑动时间窗的长度为T;
所述滑动时间窗每移动T/n时间段,并在下一个T/n时间段内第一次接收到所述页面标识对应的数据请求时启动一个计数器,其中n为正整数,计数器的过期时间为T;
当所述数据请求是在第k个T/n时间段内被接收时,与所述第k个T/n时间段对应的计数器的计数值加1;
如果k>n,则将第k个T/n时间段之前的n个T/n时间段对应的计数器的计数值进行累加得到计数和,或者将第k个T/n时间段对应的计数器的计数值和在第k个T/n时间段之前的n-1个T/n时间段对应的计数器的计数值进行累加得到计数和,将所述计数和作为与所述页面标识对应的数据请求的数量;
如果1≤k≤n,将第k个T/n时间段之前的k-1个T/n时间段对应的计数器的计数值进行累加得到计数和,或者将第k个T/n时间段对应的计数器的计数值和在第k个T/n时间段之前的k-1个T/n时间段对应的计数器的计数值进行累加得到计数和,将所述计数和作为与所述页面标识对应的数据请求的数量。
在本发明一实施例中,该判断模块903用于:
判断本机缓存中是否存储有与所述缓存key对应的标签,如果存储有与所述缓存key对应的标签,则确定所述页面数据被请求的次数达到预设的阈值,否则确定所述页面数据被请求的次数没有达到预设的阈值。
该数据缓存装置进一步包括:
第二标签设置模块909,用于设置与所述缓存key对应的标签,为所述缓存key对应的标签设置过期时间;
所述存储模块904进一步用于,将所述标签存入本机缓存。
在本发明一实施例中,该判断模块903用于,判断本机缓存中是否存储有所述页面数据。
所述发送模块905进一步用于,当所述判断模块903确定本机缓存中存储有所述页面数据时,将所述页面数据返回给所述终端设备。
在本发明一实施例中,该数据缓存装置进一步包括:
获取模块910,用于当所述判断模块903确定本机缓存中没有存储有所述页面数据时,从后端服务器获取所述页面数据。
图10为本发明实施例提供的数据缓存装置的结构示意图。如图10所示,该装置包括:处理器1001、非易失性计算机可读存储器1002、缓存1003、网络通信接口1004。这些组件通过总线1005进行通信。
在本实施例中,存储器1002中存储有多个程序模块,包括操作***1006、网络通信模块1007和应用程序1008。
处理器1001可以读取存储器1002中的应用程序所包括的各种模块(图中未示出)来执行数据缓存装置的各种功能应用以及数据处理。本实施例中的处理器1001可以为一个,也可以为多个,其可以为CPU,处理单元/模块,ASIC,逻辑模块或可编程门阵列等。
其中,操作***1006可以为:Windows操作***、Android操作***或苹果iPhoneOS操作***。
应用程序1008可包括:数据缓存模块1009。该数据缓存模块1009可包括图9所示装置中的接收模块901、确定模块902、判断模块903、存储模块904、发送模块905形成的计算机可执行指令集1009-1及对应的元数据和启发式算法1009-2。这些计算机可执行指令集可以由所述处理器1001执行并完成图2、3、4、7或8所示方法或图9所示数据缓存装置的功能。
在本实施例中,网络通信接口1004与网络通信模块1007相配合完成数据缓存装置的各种网络信号的收发。
本机缓存1003用于存储页面数据、标签等数据。
如果该数据缓存装置无通信需求,也可以不包括网络通信接口1004及网络通信模块1007。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。所述各实施例的功能模块可以位于一个终端或网络节点,或者也可以分布到多个终端或网络节点上。
另外,本发明的每一个实施例可以通过计算机执行的数据处理程序来实现。显然,数据处理程序构成了本发明。此外,通常存储在一个存储介质中的数据处理程序通过直接将程序读取出存储介质或者通过将程序安装或复制到数据处理设备的存储设备(如硬盘和或内存)中执行。因此,这样的存储介质也构成了本发明。存储介质可以使用任何类型的记录方式,例如纸张存储介质(如纸带等)、磁存储介质(如软盘、硬盘、闪存等)、光存储介质(如CD-ROM等)、磁光存储介质(如MO等)等。
因此本发明实施例还提供了一种存储介质,其中存储有数据处理程序,该数据处理程序用于执行本发明上述方法的任何一种实施例。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (16)
1.一种数据缓存的方法,其特征在于,包括:
接收来自终端设备的数据请求,所述数据请求中包含用户选择的页面的页面标识;
确定所述页面标识对应的页面数据的缓存关键字key;
根据所确定的所述缓存关键字,判断所述页面数据的热门程度是否满足预设的条件;
如果满足预设的条件,将从后端服务器获取的所述页面数据存入本机缓存,并将所述页面数据返回所述终端设备;
如果不满足预设的条件,则将从后端服务器获取的所述页面数据返回所述终端设备。
2.根据权利要求1所述的方法,其特征在于,所述判断所述页面数据的热门程度是否满足预设的条件包括:
判断所述页面数据被请求的次数是否达到预设的阈值,如果达到预设阈值,则确定满足预设的条件,否则确定不满足预设的条件。
3.根据权利要求2所述的方法,其特征在于,所述判断所述页面数据被请求的次数是否达到预设的阈值包括:
判断本机缓存中是否存储有与所述缓存关键字对应的标签,如果存储有与所述缓存关键字对应的标签,则进一步判断与所述缓存关键字对应的标签的标志位是否为第一指定值;
如果本机缓存中存储有与所述缓存关键字对应的标签,且所述标签的标志位为第一指定值,则确定所述页面数据被请求的次数达到预设的阈值,否则确定所述页面数据被请求的次数未达到预设的阈值;
如果本机缓存中没有存储与所述缓存关键字对应的标签,进一步包括:
计算在预设的时间周期内所述页面标识对应的数据请求的数量;
判断所述数据请求的数量是否达到所述预设的阈值;
如果达到预设的阈值,设置与所述缓存关键字对应的标签,并将所述标签的标志位设置为第一指定值;
如果没有达到预设的阈值,设置与所述缓存关键字对应的标签,并将所述标签的标志位设置为第二指定值;
将所述缓存关键字对应的标签存入本机缓存。
4.根据权利要求3所述的方法,其特征在于,所述计算在预设的时间周期内所述页面标识对应的数据请求的数量包括:
预先设置滑动时间窗,所述滑动时间窗的长度为T;
所述滑动时间窗每移动T/n时间段,并在下一个T/n时间段内第一次接收到所述页面标识对应的数据请求时启动一个计数器,其中n为正整数,计数器的过期时间为T;
当所述数据请求是在第k个T/n时间段内被接收时,与所述第k个T/n时间段对应的计数器的计数值加1;
如果k>n,则将第k个T/n时间段之前的n个T/n时间段对应的计数器的计数值进行累加得到计数和,将所述计数和作为与所述页面标识对应的数据请求的数量;
如果1≤k≤n,将第k个T/n时间段之前的k-1个T/n时间段对应的计数器的计数值进行累加得到计数和,将所述计数和作为与所述页面标识对应的数据请求的数量。
5.根据权利要求2所述的方法,其特征在于,所述判断所述页面数据被请求的次数是否达到预设的阈值包括:
计算在预设的时间周期内所述页面标识对应的数据请求的数量;
判断所述数据请求的数量是否达到预设的阈值;
如果达到预设的阈值,则确定所述页面数据被请求的次数达到预设的阈值,否则确定所述页面数据被请求的次数没有达到预设的阈值。
6.根据权利要求5所述的方法,其特征在于,所述计算在预设的时间周期内所述页面标识对应的数据请求的数量包括:
预先设置滑动时间窗,所述滑动时间窗的长度为T;
所述滑动时间窗每移动T/n时间段,并在下一个T/n时间段内第一次接收到所述页面标识对应的数据请求时启动一个计数器,其中n为正整数,计数器的过期时间为T;
当所述数据请求是在第k个T/n时间段内被接收时,与所述第k个T/n时间段对应的计数器的计数值加1;
如果k>n,则将第k个T/n时间段之前的n个T/n时间段对应的计数器的计数值进行累加得到计数和,或者将第k个T/n时间段对应的计数器的计数值和在第k个T/n时间段之前的n-1个T/n时间段对应的计数器的计数值进行累加得到计数和,将所述计数和作为与所述页面标识对应的数据请求的数量;
如果1≤k≤n,将第k个T/n时间段之前的k-1个T/n时间段对应的计数器的计数值进行累加得到计数和,或者将第k个T/n时间段对应的计数器的计数值和在第k个T/n时间段之前的k-1个T/n时间段对应的计数器的计数值进行累加得到计数和,将所述计数和作为与所述页面标识对应的数据请求的数量。
7.根据权利要求2所述的方法,其特征在于,所述判断所述页面数据被请求的次数是否达到预设的阈值包括:
判断本机缓存中是否存储有与所述缓存关键字对应的标签,如果存储有与所述缓存关键字对应的标签,则确定所述页面数据被请求的次数达到预设的阈值,否则确定所述页面数据被请求的次数没有达到预设的阈值;
该方法进一步包括:
设置与所述缓存关键字对应的标签,为所述缓存关键字对应的标签设置过期时间,并将所述标签存入本机缓存。
8.根据权利要求1-7任一项所述的方法,其特征在于,在从后端服务器获取所述页面数据之前,进一步包括:
判断本机缓存中是否存储有所述页面数据;
如果存储有所述页面数据,则将所述页面数据返回给终端设备;
如果没有存储所述页面数据,则从后端服务器获取所述页面数据。
9.一种数据缓存的装置,其特征在于,包括:
接收模块,用于接收来自终端设备的数据请求,所述数据请求中包含用户选择的页面的页面标识;
确定模块,用于确定所述页面标识对应的页面数据的缓存关键字key;
判断模块,用于根据所述确定模块确定的所述缓存关键字,判断所述页面数据的热门程度是否满足预设的条件;
存储模块,用于当所述判断模块确定所述页面数据的热门程度满足预设的条件时,将从后端服务器获取的所述页面数据存入本机缓存;
发送模块,用于将从后端服务器获取的所述页面数据返回所述终端设备。
10.根据权利要求1所述的装置,其特征在于,所述判断模块用于:
判断所述页面数据被请求的次数是否达到预设的阈值,如果达到预设阈值,则确定所述页面数据的热门程度满足预设的条件,否则确定所述页面数据的热门程度不满足预设的条件。
11.根据权利要求10所述的装置,其特征在于,所述判断模块用于:
判断本机缓存中是否存储有与所述缓存关键字对应的标签,如果存储有与所述缓存关键字对应的标签,则进一步判断与所述缓存关键字对应的标签的标志位是否为第一指定值;如果本机缓存中存储有与所述缓存关键字对应的标签,且所述标签的标志位为第一指定值,则确定所述页面数据被请求的次数达到预设的阈值,否则确定所述页面数据被请求的次数未达到预设的阈值;
所述装置进一步包括:
第一计算模块,用于当所述判断模块确定本机缓存中没有存储与所述缓存关键字对应的标签时,计算在预设的时间周期内所述页面标识对应的数据请求的数量;
所述判断模块进一步用于,判断所述第一计算模块计算的数据请求的数量是否达到所述预设的阈值;
所述装置进一步包括:
第一标签设置模块,用于当所述判断模块确定所述数据请求的数量达到预设的阈值时,设置与所述缓存关键字对应的标签,并将所述标签的标志位设置为第一指定值;当所述判断模块确定所述数据请求的数量没有达到预设的阈值,设置与所述缓存关键字对应的标签,并将所述标签的标志位设置为第二指定值;
所述存储模块进一步用于,将所述第一标签设置模块设置的缓存关键字对应的标签存入本机缓存。
12.根据权利要求11所述的装置,其特征在于,所述第一计算模块用于:
预先设置滑动时间窗,所述滑动时间窗的长度为T;
所述滑动时间窗每移动T/n时间段,并在下一个T/n时间段内第一次接收到所述页面标识对应的数据请求时启动一个计数器,其中n为正整数,计数器的过期时间为T;
当所述数据请求是在第k个T/n时间段内被接收时,与所述第k个T/n时间段对应的计数器的计数值加1;
如果k>n,则将第k个T/n时间段之前的n个T/n时间段对应的计数器的计数值进行累加得到计数和,将所述计数和作为与所述页面标识对应的数据请求的数量;
如果1≤k≤n,将第k个T/n时间段之前的k-1个T/n时间段对应的计数器的计数值进行累加得到计数和,将所述计数和作为与所述页面标识对应的数据请求的数量。
13.根据权利要求10所述的装置,其特征在于,进一步包括:
第二计算模块,用于计算在预设的时间周期内所述页面标识对应的数据请求的数量;
所述判断模块用于,判断所述第二计算模块计算的数据请求的数量是否达到预设的阈值;如果确定数据请求的数量达到预设的阈值,则确定所述页面数据被请求的次数达到预设的阈值,否则确定所述页面数据被请求的次数没有达到预设的阈值。
14.根据权利要求13所述的装置,其特征在于,所述第二计算模块用于:
预先设置滑动时间窗,所述滑动时间窗的长度为T;
所述滑动时间窗每移动T/n时间段,并在下一个T/n时间段内第一次接收到所述页面标识对应的数据请求时启动一个计数器,其中n为正整数,计数器的过期时间为T;
当所述数据请求是在第k个T/n时间段内被接收时,与所述第k个T/n时间段对应的计数器的计数值加1;
如果k>n,则将第k个T/n时间段之前的n个T/n时间段对应的计数器的计数值进行累加得到计数和,或者将第k个T/n时间段对应的计数器的计数值和在第k个T/n时间段之前的n-1个T/n时间段对应的计数器的计数值进行累加得到计数和,将所述计数和作为与所述页面标识对应的数据请求的数量;
如果1≤k≤n,将第k个T/n时间段之前的k-1个T/n时间段对应的计数器的计数值进行累加得到计数和,或者将第k个T/n时间段对应的计数器的计数值和在第k个T/n时间段之前的k-1个T/n时间段对应的计数器的计数值进行累加得到计数和,将所述计数和作为与所述页面标识对应的数据请求的数量。
15.根据权利要求10所述的装置,其特征在于,所述判断模块用于:
判断本机缓存中是否存储有与所述缓存关键字对应的标签,如果存储有与所述缓存关键字对应的标签,则确定所述页面数据被请求的次数达到预设的阈值,否则确定所述页面数据被请求的次数没有达到预设的阈值;
该装置进一步包括:
第二标签设置模块,用于设置与所述缓存关键字对应的标签,为所述缓存关键字对应的标签设置过期时间;
所述存储模块进一步用于,将所述标签存入本机缓存。
16.根据权利要求9-15任一项所述的装置,其特征在于,所述判断模块用于:
判断本机缓存中是否存储有所述页面数据;
所述发送模块进一步用于,当所述判断模块确定本机缓存中存储有所述页面数据时,将所述页面数据返回给所述终端设备;
所述装置进一步包括:
获取模块,用于当所述判断模块确定本机缓存中没有存储有所述页面数据时,从后端服务器获取所述页面数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611107494.9A CN108153783B (zh) | 2016-12-06 | 2016-12-06 | 一种数据缓存的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611107494.9A CN108153783B (zh) | 2016-12-06 | 2016-12-06 | 一种数据缓存的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108153783A true CN108153783A (zh) | 2018-06-12 |
CN108153783B CN108153783B (zh) | 2020-10-02 |
Family
ID=62469807
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611107494.9A Active CN108153783B (zh) | 2016-12-06 | 2016-12-06 | 一种数据缓存的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108153783B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109302388A (zh) * | 2018-09-19 | 2019-02-01 | 平安科技(深圳)有限公司 | 访问权限过滤方法、***、计算机设备和存储介质 |
CN110221988A (zh) * | 2019-05-05 | 2019-09-10 | 福建天泉教育科技有限公司 | 一种第三方数据的缓存优化方法及*** |
CN110300163A (zh) * | 2019-06-25 | 2019-10-01 | 北京字节跳动网络技术有限公司 | 一种网络数据的获取方法、装置、设备及存储介质 |
CN111124952A (zh) * | 2019-12-04 | 2020-05-08 | 北京奇艺世纪科技有限公司 | 一种数据管理方法、装置、电子设备及可读存储介质 |
CN111984868A (zh) * | 2020-08-21 | 2020-11-24 | 上海二三四五网络科技有限公司 | 一种浏览器中浏览网页的控制方法及装置 |
CN113626377A (zh) * | 2020-05-06 | 2021-11-09 | 杭州海康微影传感科技有限公司 | 裸数据存储控制方法、装置及设备、存储介质 |
CN113760980A (zh) * | 2020-11-30 | 2021-12-07 | 北京京东乾石科技有限公司 | 一种数据缓存方法、数据提供端及数据使用端 |
CN114334067A (zh) * | 2022-03-10 | 2022-04-12 | 上海柯林布瑞信息技术有限公司 | 临床数据的标签处理方法和装置 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1604054A (zh) * | 2003-09-29 | 2005-04-06 | 刘志明 | 层次化视频点播中的磁盘缓存替换算法 |
CN101702173A (zh) * | 2009-11-11 | 2010-05-05 | 中兴通讯股份有限公司 | 一种提高移动门户网站动态页面访问速度的方法和装置 |
CN101741986A (zh) * | 2009-12-31 | 2010-06-16 | 优视科技有限公司 | 一种用于移动通讯设备终端的页面缓存方法 |
US20120047257A1 (en) * | 2009-05-05 | 2012-02-23 | Suboti, Llc | System and method for processing user interface events |
CN102521252A (zh) * | 2011-11-17 | 2012-06-27 | 四川长虹电器股份有限公司 | 一种远程数据的访问方法 |
CN103186552A (zh) * | 2011-12-28 | 2013-07-03 | 北京新媒传信科技有限公司 | 一种业务服务中客户端访问数据的方法和*** |
CN103457929A (zh) * | 2013-07-26 | 2013-12-18 | 苏州亿倍信息技术有限公司 | 一种数据访问处理方法及*** |
CN103455478A (zh) * | 2012-05-21 | 2013-12-18 | 腾讯科技(深圳)有限公司 | 加速网页访问的方法和装置 |
CN104426838A (zh) * | 2013-08-20 | 2015-03-18 | ***通信集团北京有限公司 | 一种互联网缓存调度方法及*** |
CN105786904A (zh) * | 2014-12-24 | 2016-07-20 | 远光软件股份有限公司 | 凭证相关取数缓存管理的方法及装置 |
CN105988941A (zh) * | 2015-02-28 | 2016-10-05 | 深圳市腾讯计算机***有限公司 | 缓存数据处理方法和装置 |
CN106055637A (zh) * | 2016-05-30 | 2016-10-26 | 努比亚技术有限公司 | 一种缓存数据处理方法及服务器 |
-
2016
- 2016-12-06 CN CN201611107494.9A patent/CN108153783B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1604054A (zh) * | 2003-09-29 | 2005-04-06 | 刘志明 | 层次化视频点播中的磁盘缓存替换算法 |
US20120047257A1 (en) * | 2009-05-05 | 2012-02-23 | Suboti, Llc | System and method for processing user interface events |
CN101702173A (zh) * | 2009-11-11 | 2010-05-05 | 中兴通讯股份有限公司 | 一种提高移动门户网站动态页面访问速度的方法和装置 |
CN101741986A (zh) * | 2009-12-31 | 2010-06-16 | 优视科技有限公司 | 一种用于移动通讯设备终端的页面缓存方法 |
CN102521252A (zh) * | 2011-11-17 | 2012-06-27 | 四川长虹电器股份有限公司 | 一种远程数据的访问方法 |
CN103186552A (zh) * | 2011-12-28 | 2013-07-03 | 北京新媒传信科技有限公司 | 一种业务服务中客户端访问数据的方法和*** |
CN103455478A (zh) * | 2012-05-21 | 2013-12-18 | 腾讯科技(深圳)有限公司 | 加速网页访问的方法和装置 |
CN103457929A (zh) * | 2013-07-26 | 2013-12-18 | 苏州亿倍信息技术有限公司 | 一种数据访问处理方法及*** |
CN104426838A (zh) * | 2013-08-20 | 2015-03-18 | ***通信集团北京有限公司 | 一种互联网缓存调度方法及*** |
CN105786904A (zh) * | 2014-12-24 | 2016-07-20 | 远光软件股份有限公司 | 凭证相关取数缓存管理的方法及装置 |
CN105988941A (zh) * | 2015-02-28 | 2016-10-05 | 深圳市腾讯计算机***有限公司 | 缓存数据处理方法和装置 |
CN106055637A (zh) * | 2016-05-30 | 2016-10-26 | 努比亚技术有限公司 | 一种缓存数据处理方法及服务器 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109302388A (zh) * | 2018-09-19 | 2019-02-01 | 平安科技(深圳)有限公司 | 访问权限过滤方法、***、计算机设备和存储介质 |
CN109302388B (zh) * | 2018-09-19 | 2022-07-15 | 平安科技(深圳)有限公司 | 访问权限过滤方法、***、计算机设备和存储介质 |
CN110221988A (zh) * | 2019-05-05 | 2019-09-10 | 福建天泉教育科技有限公司 | 一种第三方数据的缓存优化方法及*** |
CN110300163A (zh) * | 2019-06-25 | 2019-10-01 | 北京字节跳动网络技术有限公司 | 一种网络数据的获取方法、装置、设备及存储介质 |
CN110300163B (zh) * | 2019-06-25 | 2022-04-22 | 北京字节跳动网络技术有限公司 | 一种网络数据的获取方法、装置、设备及存储介质 |
CN111124952A (zh) * | 2019-12-04 | 2020-05-08 | 北京奇艺世纪科技有限公司 | 一种数据管理方法、装置、电子设备及可读存储介质 |
CN111124952B (zh) * | 2019-12-04 | 2022-09-30 | 北京奇艺世纪科技有限公司 | 一种数据管理方法、装置、电子设备及可读存储介质 |
CN113626377A (zh) * | 2020-05-06 | 2021-11-09 | 杭州海康微影传感科技有限公司 | 裸数据存储控制方法、装置及设备、存储介质 |
CN111984868A (zh) * | 2020-08-21 | 2020-11-24 | 上海二三四五网络科技有限公司 | 一种浏览器中浏览网页的控制方法及装置 |
CN113760980A (zh) * | 2020-11-30 | 2021-12-07 | 北京京东乾石科技有限公司 | 一种数据缓存方法、数据提供端及数据使用端 |
CN114334067A (zh) * | 2022-03-10 | 2022-04-12 | 上海柯林布瑞信息技术有限公司 | 临床数据的标签处理方法和装置 |
CN114334067B (zh) * | 2022-03-10 | 2022-07-19 | 上海柯林布瑞信息技术有限公司 | 临床数据的标签处理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108153783B (zh) | 2020-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108153783A (zh) | 一种数据缓存的方法和装置 | |
CN111159436B (zh) | 一种推荐多媒体内容的方法、装置及计算设备 | |
CN109684575A (zh) | 网页数据的处理方法及装置、存储介质、计算机设备 | |
CN106649349A (zh) | 用于游戏应用的数据缓存方法、装置和*** | |
CN104021218B (zh) | 一种信息显示方法及装置 | |
CN103500213B (zh) | 基于预读取的页面热点资源更新方法和装置 | |
US20030149743A1 (en) | Data logging for resident applications within portable electronic devices | |
CN107092628B (zh) | 时间序列数据的处理方法和装置 | |
CN107707509A (zh) | 识别及辅助识别虚假流量的方法、装置及*** | |
CN107491320A (zh) | 基于混合模式移动应用的载入方法和装置 | |
CN111325612B (zh) | 点单方法、订单的配送方法、装置及*** | |
CN104301743B (zh) | 传输视频的方法、网关设备和视频传输*** | |
CN104320448A (zh) | 一种基于大数据的计算设备的缓存与预取加速方法和装置 | |
CN107623732A (zh) | 一种基于云平台的数据存储方法、装置、设备及存储介质 | |
CN106130756A (zh) | 一种预测访问内容点击率的方法及装置 | |
CN104021226B (zh) | 预取规则的更新方法及装置 | |
CN110247796A (zh) | 监控告警方法、装置及相关设备 | |
CN104468399A (zh) | 数据传输方法、装置和服务器 | |
CN106506249B (zh) | 数据采集方法和装置 | |
CN103401861A (zh) | 代理上网识别方法及装置 | |
CN106709053A (zh) | 数据切片管理方法及*** | |
CN107277062B (zh) | 数据包的并行处理方法及装置 | |
CN106713456A (zh) | 网络带宽统计方法及装置 | |
CN109521970A (zh) | 一种数据处理方法及相关设备 | |
CN107102799A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |