CN105988941A - 缓存数据处理方法和装置 - Google Patents
缓存数据处理方法和装置 Download PDFInfo
- Publication number
- CN105988941A CN105988941A CN201510090500.3A CN201510090500A CN105988941A CN 105988941 A CN105988941 A CN 105988941A CN 201510090500 A CN201510090500 A CN 201510090500A CN 105988941 A CN105988941 A CN 105988941A
- Authority
- CN
- China
- Prior art keywords
- data
- storage
- cached
- local
- built
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供了一种缓存数据处理方法和装置,所述方法包括:与服务器建立网络连接;通过所述网络连接拉取所述服务器所缓存的数据;将拉取的数据直接缓存在本地内存储器中;从本地内存储器所缓存的数据中筛选出待转移数据;将所述待转移数据从本地内存储器转移到本地外存储器中缓存。本发明提供的缓存数据处理方法和装置,通过网络缓存、本地内存储器缓存和外存储器缓存的三级动态缓存策略,本地内存储器占用少,而且可以即时通过网络获取新的数据,并优先通过本地内存储器获取已缓存的数据,保证数据处理的效率。
Description
技术领域
本发明涉及终端技术领域,特别是涉及一种缓存数据处理方法和装置。
背景技术
缓存是指临时的数据交换区,因为直接取原始数据的代价太大,终端把最常用的数据从存储器里取出来临时放在缓存里,这样终端可以快速获取到缓存中的数据,提高数据处理效率。
目前终端一般采用磁盘缓存方式或者内存储器缓存方式来达到缓存数据的目的。然而,磁盘缓存方式虽然可以持久保存数据,不容易丢失,但通过磁盘I/O(输入/输出)端口读写的速度慢,影响了数据处理的效率。而内存储器缓存的方式虽然可以保证数据处理的效率,但是终端的内存储器是非常有限的资源,无法用来缓存所有数据。因此,目前的数据缓存方式不能兼顾效率和内存储器占用率。
发明内容
基于此,有必要针对目前的数据缓存方式不能兼顾效率和内存储器占用率的问题,提供一种缓存数据处理方法和装置。
一种缓存数据处理方法,所述方法包括:
与服务器建立网络连接;
通过所述网络连接拉取所述服务器所缓存的数据;
将拉取的数据直接缓存在本地内存储器中;
从本地内存储器所缓存的数据中筛选出待转移数据;
将所述待转移数据从本地内存储器转移到本地外存储器中缓存。
一种缓存数据处理装置,所述装置包括:
网络缓存模块,用于与服务器建立网络连接;还用于通过所述网络连接拉取所述服务器所缓存的数据;
本地内存储器缓存模块,用于将拉取的数据直接缓存在本地内存储器中;还用于从本地内存储器所缓存的数据中筛选出待转移数据;
本地外存储器缓存模块,用于将所述待转移数据从本地内存储器转移到本地外存储器中缓存。
上述缓存数据处理方法和装置,获取到服务器缓存的数据后缓存到本地内存储器中,再将其中一部分缓存到外存储器。这样通过网络缓存、本地内存储器缓存和外存储器缓存的三级动态缓存策略,本地内存储器占用少,而且可以即时通过网络获取新的数据,并优先通过本地内存储器获取已缓存的数据,保证数据处理的效率。
附图说明
图1为一个实施例中用于实现缓存数据处理方法的终端的内部结构图;
图2为一个实施例中缓存数据处理方法的流程示意图;
图3为一个实施例中调用缓存数据的步骤的流程示意图;
图4为一个实施例中动态计算数据量阈值的步骤的流程示意图;
图5为一个实施例中从内存储器向外存储器转移缓存的数据的示意图;
图6为一个实施例中缓存数据处理装置的结构框图;
图7为另一个实施例中缓存数据处理装置的结构框图;
图8为再一个实施例中缓存数据处理装置的结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,在一个实施例中,提供了一种终端100,该终端100包括通过***总线连接的处理器、内存储器、外存储器和网络接口。其中,该终端100的外存储器存储有操作***和一种缓存数据处理装置,该缓存数据处理装置用于实现一种缓存数据处理方法。该终端100的处理器被配置为执行一种缓存数据处理方法。该终端100的网络接口用于与服务器连接通信。该终端100可以是台式计算机,优选为移动终端。移动终端比如可以是智能手机、平板电脑或者PDA(个人数字助理)等。
如图2所示,在一个实施例中,提供了一种缓存数据处理方法,本实施例以该方法应用于上述图1中的终端100来举例说明,该终端100运行有Android(安卓)操作***,其上运行有一种应用程序,通过该应用程序来实现上述缓存数据处理方法。
步骤202,与服务器建立网络连接。
具体地,终端内置有服务器的公网地址,用户也可以对终端内置的服务器的公网地址进行配置。这样终端可以根据服务器的公网地址,通过有线或者无线方式接入互联网,并经由互联网连接到服务器,从而建立起终端与服务器之间的网络连接。
终端与服务器之间通信可以采用预先定义的终端与服务器之间的通信协议。终端与服务器之间的网络连接优选为长连接。终端可以定时向服务器发送数据包来保持长连接。这里的定时可以是每隔预设时间间隔或者每到预设时间点。
步骤204,通过网络连接拉取服务器所缓存的数据。
具体地,服务器缓存了数据,服务器缓存的数据优选是具有实时性的数据,比如流媒体数据或者游戏数据。流媒体可以是音频流媒体、视频流媒体或者音视频结合的流媒体。
终端通过网络连接拉取服务器上缓存的数据,具体由终端发起数据获取请求,并通过网络连接发送到服务器,接收服务器根据该数据获取请求而返回的缓存在服务器上的数据。其中数据获取请求携带有数据的索引标识,用于指定需要请求获取的数据。
步骤206,将拉取的数据直接缓存在本地内存储器中。
这里的本地内存储器是指随机存储器(Random Access Memory,RAM),其作用是暂时存放处理器的运算数据,并存放外存储器交换的数据。终端在运行中,处理器会把需要运算的数据调到本地内存储器中进行运算,当运算完成后处理器再将运算结果传送出来。
直接缓存在本地内存储器中,是指不经过外存储器而直接缓存在本地内存储器中。外存储器是指终端中除了处理器缓存和本地内存储器之外的存储器,外存储器在断电后仍然能够保存数据。外存储器可以是磁存储器、光存储器或者可擦写闪存。终端将拉取的数据存放在本地内存储器中为应用程序分配的内存地址,用内存链表来存储数据。
步骤208,从本地内存储器所缓存的数据中筛选出待转移数据。
具体地,终端根据预定义的筛选方式,可定时将本地内存储器所缓存的数据中不常用到的数据筛选出来,作为待转移数据。待转移数据是指需要从本地内存储器转移出的数据。
步骤210,将待转移数据从本地内存储器转移到本地外存储器中缓存。
具体地,待转移数据转移到本地外存储器中缓存,本地内存储器中将不再缓存该待转移数据。该待转移数据再次被调用时,需要从本地外存储器中调取,虽然会影响到调用该待转移数据的效率,但是可以保证从服务器拉取到的新的数据可以缓存在本地内存储器中。具体本地外存储器中可以用数据库来缓存获取到的待转移数据,比如可以采用SQLite(一款轻型数据库)进行缓存。
上述缓存数据处理方法,获取到服务器缓存的数据后缓存到本地内存储器中,再将其中一部分缓存到外存储器。这样通过网络缓存、本地内存储器缓存和外存储器缓存的三级动态缓存策略,本地内存储器占用少,而且可以即时通过网络获取新的数据,并优先通过本地内存储器获取已缓存的数据,保证数据处理的效率。
如图3所示,在一个实施例中,该缓存数据处理方法还包括调用缓存数据的步骤,具体包括如下步骤:
步骤302,接收数据调用请求。
具体地,数据调用请求是指请求调用相应的数据的指令,数据调用请求指定了需要调用的数据,比如可以携带有索引标识,通过该索引标识来定位内存链表中的相应数据。相应地,本地内存储器中通过内存链表来保存缓存的数据。
步骤304,判断本地内存储器所缓存的数据中是否存在数据调用请求所指定的数据;若是,则执行步骤306;若否,则执行步骤308。
具体地,终端可以遍历本地内存储器中分配给应用程序的索引区,判断是否存在数据调用请求所携带的索引标识所对应的数据,若是则执行步骤306,否则执行步骤308。
步骤306,从本地内存储器缓存的数据中获取相应的数据。
具体地,若判定本地内存储器所缓存的数据中存在数据调用请求所指定的数据,比如经过遍历分配给应用程序的索引区,查找到与数据调用请求所携带的索引标识匹配的数据,则可以直接从本地内存储器中调用数据调用请求所指定的数据。
步骤308,判断本地外存储器所缓存的数据中是否存在数据调用请求所指定的数据;若是,则执行步骤310;若否,则执行步骤312。
具体地,若判定本地内存储器所缓存的数据中不存在数据调用请求所指定的数据,比如经过遍历分配给应用程序的索引区,未查找到与数据调用请求所携带的索引标识匹配的数据,则可以继续执行步骤308进行进一步判断。
终端可遍历本地外存储器中用来缓存数据的数据库,判断数据库中是否存在数据调用请求所携带的索引标识所对应的缓存数据,若是则执行步骤310,若否则执行步骤312。
步骤310,从本地外存储器缓存的数据中获取相应的数据。
具体地,终端在判定本地外存储器缓存的数据中存在数据调用请求所指定的数据时,则从本地外存储器中调用该数据调用请求所指定的数据。
步骤312,从服务器拉取数据调用请求所指定的数据。
具体地,终端在判定本地外存储器缓存的数据中不存在数据调用请求所指定的数据时,说明调用的是新的数据,需要请求服务器,从服务器拉取数据调用请求所指定的数据。
本实施例中,通过三级缓存方式,终端在调用数据时,终端可以优先从效率最高的本地内存储器缓存的数据中调取数据。如果本地内存储器中没有相应数据,则再从外存储器缓存的数据中调取数据,如果外存储器中也没有,则说明之前没有缓存该数据,需要再从服务器获取服务器所缓存的数据,这样可以保证数据调用的效率。
在一个实施例中,终端从本地内存储器、本地外存储器和服务器缓存的数据中获取相应的数据时,发起获取数据的请求与接收相应的数据是异步进行的。这样可以并行处理获取缓存数据的操作,而不必等到一个获取缓存数据的操作结束后才能获取另一个缓存数据。
在一个实施例中,步骤208包括:定时将本地内存储器所缓存的数据中在至当前时间的指定时间长度的时间范围内被调用次数最少的数据作为待转移数据。
具体地,定时是指每隔预设时间间隔或者每到预设时间点,比如每隔指定时间长度。至当前时间的指定时间长度的时间范围,是指以当前时间为终点、长度为指定时间长度的时间范围。比如当前时间为X,指定时间长度为1秒,则至当前时间的指定时间长度的时间范围为[X-1,X]。
终端可以在本地内存储器中缓存的数据的预设存储区域中记录相应的数据的被调用次数,并且定时在步骤208之后清零。这样在每次执行步骤208时,可以比较本地内存储器中缓存的各个数据的预设存储区域中的被调用次数,从而将被调用次数最小的相应数据作为待转移数据。这里缓存的数据的预设存储区域是指对应缓存的数据分配的一个存储区域,用来存储该数据的相关信息,比如索引标识或被调用次数。
或者,终端可以在本地内存储器中缓存的数据的预设存储区域中记录次数参数,并且每当一个缓存的数据被调用时,将该数据的预设存储区域中的次数参数清零,而缓存的其它数据的预设存储区域中记录的次数参数加1。
这样在每次执行步骤208时,可以比较本地内存储器中缓存的各个数据的预设存储区域中的次数参数,从而将次数参数最大的相应数据作为待转移数据。这里次数参数最大时表示被调用次数最少。
在一个实施例中,步骤208包括:定时将本地内存储器所缓存的数据中具有与当前时间差距最大的最后被调用时间的数据作为待转移数据。
具体地,最后被调用时间,是指缓存的数据最后一次被调用的时间。可以在缓存的数据被调用时,在该数据的预设存储区域记录被调用时间。
这样在每次执行步骤208时,可以获取本地内存储器中缓存的各个数据的预设存储区域中记录的最后被调用时间,并与当前时间比较。若缓存的数据的最后被调用时间距离当前时间最远,差距最大,说明相应的数据在近期被调用次数最少,将本地内存储器中缓存的该数据作为待转移数据。
在一个实施例中,步骤208包括:定时将本地内存储器所缓存的数据中在至当前时间的指定时间长度的时间范围内未被调用的数据中的任意至少一项作为待转移数据。
具体地,本地内存储器中缓存的数据的预设存储区域中可以设置表示是否被调用的标志位,并初始化为表示未被调用的第一数值,若该数据被调用则将该标志位重置为表示已被调用的第二数值,并在确定待转移数据之后初始化该标志位。
这样在执行步骤208时,每隔指定时间长度的时间间隔,将当前本地内存储器缓存的数据中预设存储区域的标志位为表示未被调用的第一数值的数据作为待转移数据,并将缓存的数据的预设存储区域中的标志位初始化为第一数值。
上述各个实施例中,将本地内存储器所缓存的数据中近期最少使用的数据从本地内存储器中转移到外存储器中缓存,可以保证常用的数据保留在本地内存储器中缓存被高效的调用,进而整体提高缓存数据的处理效率。
在一个实施例中,步骤208还包括:定时将本地内存储器所缓存的数据中超过数据量阈值的数据作为待转移数据。
具体地,一个数据的数据量是指该数据占用存储空间的大小,定时是指每隔预设时间间隔或者每到预设时间点。数据量阈值可以是预先设定的值,比如可以设置为2M~6M之间的一个值,优选取4M,其中M是指兆字节。
本实施例中,定时将本地内存储器所缓存的数据中占用存储空间较多的数据转移到本地外存储器中缓存,这样本地内存储器可以用来缓存更多较小的常用数据,从而整体上提高缓存数据的处理效率。
如图4所示,在一个实施例中,在定时将本地内存储器所缓存的数据中超过数据量阈值的数据作为待转移数据的步骤之前,还包括动态计算数据量阈值的步骤,具体包括以下步骤:
步骤402,获取本地内存储器当前的已使用量和当前运行的应用程序数量。
具体地,本地内存储器当前的已使用量是指本地内存储当前被占用的容量,比如若内存储器共为2G(G表示GB,Gigabyte,表示千兆字节),已被占用1.5G,则已使用量为1.5*1024M=1536M。
步骤404,计算已使用量和应用程序数量的比值。
具体地,根据公式(1):计算比值,其中Num1表示本地内存储器当前的已使用量,而Num2表示本地内存储器当前运行的应用程序数量。
步骤406,根据已使用量和应用程序数量的比值计算数据量阈值。
具体地,可以将步骤404中计算出的比值α直接作为数据量阈值,或者,可以将步骤404中计算出的比值α乘以一个小于1的正系数。具体来说,可以根据以下公式(2)β=α×δ来计算数据量阈值β,其中δ为一个小于1的正系数。
在一个实施例中,δ优选为0.75,这是由于本地内存储器中的内存变量采用散列表来索引时,散列表的容积率达到75%时效率最高。其中散列表也叫哈希表,是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到散列表中一个位置来访问记录,以加快查找的速度。散列表的容积率是指散列表的已占用关键码Key的存储空间和存储关键码Key的总存储空间的比值。
本实施例中,根据本地内存储器的实际情况来动态计算数据量阈值,从而根据实际情况决定将多大的缓存数据转移到外存储器缓存,进一步优化了缓存数据的处理效率。
参照图5,在一个实施例中,将本地内存储器所缓存的数据中近期最少使用的数据从本地内存储器中转移到外存储器中缓存,以及将本地内存储器所缓存的数据中超过数据量阈值的数据作为待转移数据的步骤是可以同时存在的。
如图6所示,在一个实施例中,提供了一种缓存数据处理装置600,具有实现上述各个实施例的缓存数据处理方法的功能。该缓存数据处理装置600包括网络缓存模块601、本地内存储器缓存模块602和本地外存储器缓存模块603。
网络缓存模块601,用于与服务器建立网络连接;还用于通过网络连接拉取服务器所缓存的数据。
具体地,网络缓存模块601可以根据内置的服务器的公网地址,通过有线或者无线方式接入互联网,并经由互联网连接到服务器,从而建立起终端与服务器之间的网络连接。
网络缓存模块601可用于采用预先定义的终端与服务器之间的通信协议与服务器进行通信网络连接优选为长连接。网络缓存模块601可用于定时向服务器发送数据包来保持长连接。这里的定时可以是每隔预设时间间隔或者每到预设时间点。
本地内存储器缓存模块602,用于将拉取的数据直接缓存在本地内存储器中;还用于从本地内存储器所缓存的数据中筛选出待转移数据。
具体地,服务器缓存了数据,服务器缓存的数据优选是具有实时性的数据,比如流媒体数据或者游戏数据。流媒体可以是音频流媒体、视频流媒体或者音视频结合的流媒体。
本地内存储器缓存模块602可用于通过网络连接拉取服务器上缓存的数据,具体由终端发起数据获取请求,并通过网络连接发送到服务器,接收服务器根据该数据获取请求而返回的缓存在服务器上的数据。其中数据获取请求携带有数据的索引标识,用于指定需要请求获取的数据。
这里的本地内存储器是指随机存储器,其作用是暂时存放处理器的运算数据,并存放外存储器交换的数据。终端在运行中,处理器会把需要运算的数据调到本地内存储器中进行运算,当运算完成后处理器再将运算结果传送出来。
直接缓存在本地内存储器中,是指不经过外存储器而直接缓存在本地内存储器中。外存储器是指终端中除了处理器缓存和本地内存储器之外的存储器,外存储器在断电后仍然能够保存数据。外存储器可以是磁存储器、光存储器或者可擦写闪存。终端将拉取的数据存放在本地内存储器中为应用程序分配的内存地址,用内存链表来存储数据。
本地内存储器缓存模块602可用于根据预定义的筛选方式,将本地内存储器所缓存的数据中不常用到的数据筛选出来,作为待转移数据。待转移数据是指需要从本地内存储器转移出的数据。
本地外存储器缓存模块603,用于将待转移数据从本地内存储器转移到本地外存储器中缓存。
具体地,待转移数据转移到本地外存储器中缓存,本地内存储器中将不再缓存该待转移数据。该待转移数据再次被调用时,需要从本地外存储器中调取,虽然会影响到调用该待转移数据的效率,但是可以保证从服务器拉取到的新的数据可以缓存在本地内存储器中。具体本地外存储器中可以用数据库来缓存获取到的待转移数据,比如可以采用SQLite(一款轻型数据库)进行缓存。
上述缓存数据处理装置600,获取到服务器缓存的数据后缓存到本地内存储器中,再将其中一部分缓存到外存储器。这样通过网络缓存、本地内存储器缓存和外存储器缓存的三级动态缓存策略,本地内存储器占用少,而且可以即时通过网络获取新的数据,并优先通过本地内存储器获取已缓存的数据,保证数据处理的效率。
如图7所示,在一个实施例中,该缓存数据处理装置600还包括数据调用请求接收模块604、第一判断模块605、第二判断模块606和数据调用模块607。
数据调用请求接收模块604,用于接收数据调用请求。具体地,数据调用请求是指请求调用相应的数据的指令,数据调用请求指定了需要调用的数据,比如可以携带有索引标识,通过该索引标识来定位内存链表中的相应数据。相应地,本地内存储器中通过内存链表来保存缓存的数据。
第一判断模块605,用于判断本地内存储器所缓存的数据中是否存在数据调用请求所指定的数据。具体地,第一判断模块605可用于遍历本地内存储器中分配给应用程序的索引区,判断是否存在数据调用请求所携带的索引标识所对应的数据
数据调用模块607,用于在第一判断模块判定本地内存储器所缓存的数据中存在数据调用请求所指定的数据时,从本地内存储器缓存的数据中获取相应的数据。具体地,若判定本地内存储器所缓存的数据中存在数据调用请求所指定的数据,比如经过遍历分配给应用程序的索引区,查找到与数据调用请求所携带的索引标识匹配的数据,则可以直接从本地内存储器中调用数据调用请求所指定的数据。
第二判断模块606,用于在第一判断模块判定本地内存储器所缓存的数据中不存在数据调用请求所指定的数据时,判断本地外存储器所缓存的数据中是否存在数据调用请求所指定的数据。具体地,若判定本地内存储器所缓存的数据中不存在数据调用请求所指定的数据,比如经过遍历分配给应用程序的索引区,未查找到与数据调用请求所携带的索引标识匹配的数据,则可以遍历本地外存储器中用来缓存数据的数据库,判断数据库中是否存在数据调用请求所携带的索引标识所对应的缓存数据。
数据调用模块607还用于在第二判断模块判定本地外存储器所缓存的数据中存在数据调用请求所指定的数据时,从本地外存储器缓存的数据中获取相应的数据;还用于在第二判断模块判定本地外存储器所缓存的数据中不存在数据调用请求所指定的数据时,从服务器拉取数据调用请求所指定的数据。
具体地,数据调用模块607用于在判定本地外存储器缓存的数据中存在数据调用请求所指定的数据时,则从本地外存储器中调用该数据调用请求所指定的数据。数据调用模块607还用于在判定本地外存储器缓存的数据中不存在数据调用请求所指定的数据时,说明调用的是新的数据,需要请求服务器,从服务器拉取数据调用请求所指定的数据。
本实施例中,通过三级缓存方式,终端在调用数据时,终端可以优先从效率最高的本地内存储器缓存的数据中调取数据。如果本地内存储器中没有相应数据,则再从外存储器缓存的数据中调取数据,如果外存储器中也没有,则说明之前没有缓存该数据,需要再从服务器获取服务器所缓存的数据,这样可以保证数据调用的效率。
在一个实施例中,数据调用模块607用于在从本地内存储器、本地外存储器和服务器缓存的数据中获取相应的数据时,发起获取数据的请求与接收相应的数据是异步进行。这样可以并行处理获取缓存数据的操作,而不必等到一个获取缓存数据的操作结束后才能获取另一个缓存数据。
在一个实施例中,本地内存储器缓存模块602还用于定时将本地内存储器所缓存的数据中在至当前时间的指定时间长度的时间范围内被调用次数最少的数据作为待转移数据。
具体地,定时是指每隔预设时间间隔或者每到预设时间点,比如每隔指定时间长度。至当前时间的指定时间长度的时间范围,是指以当前时间为终点、长度为指定时间长度的时间范围。本地内存储器缓存模块602可用于在本地内存储器中缓存的数据的预设存储区域中记录相应的数据的被调用次数,并且定时在步骤208之后清零。这样可以通过比较本地内存储器中缓存的各个数据的预设存储区域中的被调用次数,从而将被调用次数最小的相应数据作为待转移数据。这里缓存的数据的预设存储区域是指对应缓存的数据分配的一个存储区域,用来存储该数据的相关信息,比如索引标识或被调用次数。
或者,本地内存储器缓存模块602可用于在本地内存储器中缓存的数据的预设存储区域中记录次数参数,并且每当一个缓存的数据被调用时,将该数据的预设存储区域中的次数参数清零,而缓存的其它数据的预设存储区域中记录的次数参数加1。这样可以通过比较本地内存储器中缓存的各个数据的预设存储区域中的次数参数,从而将次数参数最大的相应数据作为待转移数据。这里次数参数最大时表示被调用次数最少。
在一个实施例中,本地内存储器缓存模块602还用于定时将本地内存储器所缓存的数据中具有与当前时间差距最大的最后被调用时间的数据作为待转移数据。
具体地,最后被调用时间,是指缓存的数据最后一次被调用的时间。可以在缓存的数据被调用时,在该数据的预设存储区域记录被调用时间。
这样本地内存储器缓存模块602可用于获取本地内存储器中缓存的各个数据的预设存储区域中记录的最后被调用时间,并与当前时间比较。若缓存的数据的最后被调用时间距离当前时间最远,差距最大,说明相应的数据在近期被调用次数最少,将本地内存储器中缓存的该数据作为待转移数据。
在一个实施例中,本地内存储器缓存模块602还用于定时将本地内存储器所缓存的数据中在至当前时间的指定时间长度的时间范围内未被调用的数据中的任意至少一项作为待转移数据。
具体地,本地内存储器中缓存的数据的预设存储区域可以设置表示是否被调用的标志位,并初始化为表示未被调用的第一数值,若该数据被调用则将该标志位重置为表示已被调用的第二数值,并在确定待转移数据之后初始化该标志位。
这样本地内存储器缓存模块602可用于每隔指定时间长度的时间间隔,将当前本地内存储器缓存的数据中预设存储区域标志位为表示未被调用的第一数值的数据作为待转移数据,并将缓存的数据的预设存储区域中的标志位初始化为第一数值。
上述各个实施例中,将本地内存储器所缓存的数据中近期最少使用的数据从本地内存储器中转移到外存储器中缓存,可以保证常用的数据保留在本地内存储器中缓存被高效的调用,进而整体提高缓存数据的处理效率。
在一个实施例中,本地内存储器缓存模块602还用于定时将本地内存储器所缓存的数据中超过数据量阈值的数据作为待转移数据。具体地,一个数据的数据量是指该数据占用存储空间的大小,定时是指每隔预设时间间隔或者每到预设时间点。数据量阈值可以是预先设定的值,比如可以设置为2M~6M之间的一个值,优选取4M,其中M是指兆字节。
本实施例中,定时将本地内存储器所缓存的数据中占用存储空间较多的数据转移到本地外存储器中缓存,这样本地内存储器可以用来缓存更多较小的常用数据,从而整体上提高缓存数据的处理效率。
如图8所示,在一个实施例中,该缓存数据处理装置600还包括:获取模块608、比值计算模块609和数据量阈值计算模块610。
获取模块608,用于获取本地内存储器当前的已使用量和当前运行的应用程序数量。具体地,本地内存储器当前的已使用量是指本地内存储当前被占用的容量,比如若内存储器共为2G(G表示GB,Gigabyte,表示千兆字节),已被占用1.5G,则已使用量为1.5*1024M=1536M。
比值计算模块609,用于计算已使用量和应用程序数量的比值。具体地,比值计算模块609可用于根据公式(1):计算比值,其中Num1表示本地内存储器当前的已使用量,而Num2表示本地内存储器当前运行的应用程序数量。
数据量阈值计算模块610,用于根据已使用量和应用程序数量的比值计算数据量阈值。具体地,数据量阈值计算模块610可用于将计算出的比值α直接作为数据量阈值,或者,数据量阈值计算模块610可用于将计算出的比值α乘以一个小于1的正系数。具体来说,可以根据以下公式(2)β=α×δ来计算数据量阈值β,其中δ为一个小于1的正系数。
在一个实施例中,δ优选为0.75,这是由于本地内存储器中的内存变量采用散列表来索引时,散列表的容积率达到75%时效率最高。其中散列表也叫哈希表,是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到散列表中一个位置来访问记录,以加快查找的速度。散列表的容积率是指散列表的已占用关键码Key的存储空间和存储关键码Key的总存储空间的比值。
本实施例中,根据本地内存储器的实际情况来动态计算数据量阈值,从而根据实际情况决定将多大的缓存数据转移到外存储器缓存,进一步优化了缓存数据的处理效率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种缓存数据处理方法,所述方法包括:
与服务器建立网络连接;
通过所述网络连接拉取所述服务器所缓存的数据;
将拉取的数据直接缓存在本地内存储器中;
从本地内存储器所缓存的数据中筛选出待转移数据;
将所述待转移数据从本地内存储器转移到本地外存储器中缓存。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收数据调用请求;
判断本地内存储器所缓存的数据中是否存在所述数据调用请求所指定的数据,若是,则从本地内存储器缓存的数据中获取相应的数据;若否,则
判断本地外存储器所缓存的数据中是否存在所述数据调用请求所指定的数据,若是,则从本地外存储器缓存的数据中获取相应的数据;若否,则
从所述服务器拉取所述数据调用请求所指定的数据。
3.根据权利要求1所述的方法,其特征在于,所述从本地内存储器所缓存的数据中筛选出待转移数据,包括:
定时将本地内存储器所缓存的数据中在至当前时间的指定时间长度的时间范围内被调用次数最少的数据作为待转移数据;或者,
定时将本地内存储器所缓存的数据中具有与当前时间差距最大的最后被调用时间的数据作为待转移数据;或者,
定时将本地内存储器所缓存的数据中在至当前时间的指定时间长度的时间范围内未被调用的数据中的任意至少一项作为待转移数据。
4.根据权利要求1-3中任意一项所述的方法,其特征在于,所述从本地内存储器所缓存的数据中筛选出待转移数据,包括:
定时将本地内存储器所缓存的数据中超过数据量阈值的数据作为待转移数据。
5.根据权利要求4所述的方法,其特征在于,所述将本地内存储器所缓存的数据中超过数据量阈值的数据作为待转移数据之前,还包括:
获取本地内存储器当前的已使用量和当前运行的应用程序数量;
计算所述已使用量和应用程序数量的比值;
根据所述已使用量和应用程序数量的比值计算数据量阈值。
6.一种缓存数据处理装置,其特征在于,所述装置包括:
网络缓存模块,用于与服务器建立网络连接;还用于通过所述网络连接拉取所述服务器所缓存的数据;
本地内存储器缓存模块,用于将拉取的数据直接缓存在本地内存储器中;还用于从本地内存储器所缓存的数据中筛选出待转移数据;
本地外存储器缓存模块,用于将所述待转移数据从本地内存储器转移到本地外存储器中缓存。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括数据调用请求接收模块、第一判断模块、第二判断模块和数据调用模块;
所述数据调用请求接收模块,用于接收数据调用请求;
所述第一判断模块,用于判断本地内存储器所缓存的数据中是否存在所述数据调用请求所指定的数据;
所述数据调用模块,用于在所述第一判断模块判定本地内存储器所缓存的数据中存在所述数据调用请求所指定的数据时,从本地内存储器缓存的数据中获取相应的数据;
第二判断模块,用于在所述第一判断模块判定本地内存储器所缓存的数据中不存在所述数据调用请求所指定的数据时,判断本地外存储器所缓存的数据中是否存在所述数据调用请求所指定的数据;
所述数据调用模块还用于在所述第二判断模块判定本地外存储器所缓存的数据中存在所述数据调用请求所指定的数据时,从本地外存储器缓存的数据中获取相应的数据;还用于在所述第二判断模块判定本地外存储器所缓存的数据中不存在所述数据调用请求所指定的数据时,从所述服务器拉取所述数据调用请求所指定的数据。
8.根据权利要求6所述的装置,其特征在于,所述本地内存储器缓存模块还用于定时将本地内存储器所缓存的数据中在至当前时间的指定时间长度的时间范围内被调用次数最少的数据作为待转移数据;或者,
所述本地内存储器缓存模块还用于定时将本地内存储器所缓存的数据中具有与当前时间差距最大的最后被调用时间的数据作为待转移数据;或者,
所述本地内存储器缓存模块还用于定时将本地内存储器所缓存的数据中在至当前时间的指定时间长度的时间范围内未被调用的数据中的任意至少一项作为待转移数据。
9.根据权利要求6-8中任意一项所述的装置,其特征在于,所述本地内存储器缓存模块还用于定时将本地内存储器所缓存的数据中超过数据量阈值的数据作为待转移数据。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:
获取模块,用于获取本地内存储器当前的已使用量和当前运行的应用程序数量;
比值计算模块,用于计算所述已使用量和应用程序数量的比值;
数据量阈值计算模块,用于根据所述已使用量和应用程序数量的比值计算数据量阈值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510090500.3A CN105988941B (zh) | 2015-02-28 | 2015-02-28 | 缓存数据处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510090500.3A CN105988941B (zh) | 2015-02-28 | 2015-02-28 | 缓存数据处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105988941A true CN105988941A (zh) | 2016-10-05 |
CN105988941B CN105988941B (zh) | 2020-04-14 |
Family
ID=57039220
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510090500.3A Active CN105988941B (zh) | 2015-02-28 | 2015-02-28 | 缓存数据处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105988941B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108153783A (zh) * | 2016-12-06 | 2018-06-12 | 腾讯科技(北京)有限公司 | 一种数据缓存的方法和装置 |
CN110704488A (zh) * | 2019-09-29 | 2020-01-17 | 北京元年科技股份有限公司 | 用于管理数据的方法及相应的***、计算机设备和介质 |
CN111625536A (zh) * | 2020-04-23 | 2020-09-04 | 北京城市网邻信息技术有限公司 | 一种数据访问方法及装置 |
CN111666260A (zh) * | 2019-03-08 | 2020-09-15 | 杭州海康威视数字技术股份有限公司 | 数据处理方法及装置 |
CN117376289A (zh) * | 2023-10-11 | 2024-01-09 | 哈尔滨工业大学 | 面向道路监测数据使用申请的网络磁盘数据调度方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1852318A (zh) * | 2006-04-19 | 2006-10-25 | 华中科技大学 | 适用于对象网络存储的分布式多级缓存*** |
CN101493821A (zh) * | 2008-01-25 | 2009-07-29 | 中兴通讯股份有限公司 | 数据缓存方法和装置 |
CN101692229A (zh) * | 2009-07-28 | 2010-04-07 | 武汉大学 | 基于数据内容的三维空间数据自适应多级缓存*** |
CN102693164A (zh) * | 2012-05-03 | 2012-09-26 | 中国石油集团川庆钻探工程有限公司地球物理勘探公司 | 防止缓存溢出的设备和方法 |
CN103281397A (zh) * | 2013-06-13 | 2013-09-04 | 苏州联讯达软件有限公司 | 一种基于时间戳和访问密度的数据缓存方法及*** |
US20140181374A1 (en) * | 2008-03-18 | 2014-06-26 | Netapp, Inc. | Speculative Copying of Data from Main Buffer Cache to Solid-State Secondary Cache of a Storage Server |
CN104216838A (zh) * | 2013-06-05 | 2014-12-17 | 北京齐尔布莱特科技有限公司 | 双缓存数据处理方法及*** |
-
2015
- 2015-02-28 CN CN201510090500.3A patent/CN105988941B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1852318A (zh) * | 2006-04-19 | 2006-10-25 | 华中科技大学 | 适用于对象网络存储的分布式多级缓存*** |
CN101493821A (zh) * | 2008-01-25 | 2009-07-29 | 中兴通讯股份有限公司 | 数据缓存方法和装置 |
US20140181374A1 (en) * | 2008-03-18 | 2014-06-26 | Netapp, Inc. | Speculative Copying of Data from Main Buffer Cache to Solid-State Secondary Cache of a Storage Server |
CN101692229A (zh) * | 2009-07-28 | 2010-04-07 | 武汉大学 | 基于数据内容的三维空间数据自适应多级缓存*** |
CN102693164A (zh) * | 2012-05-03 | 2012-09-26 | 中国石油集团川庆钻探工程有限公司地球物理勘探公司 | 防止缓存溢出的设备和方法 |
CN104216838A (zh) * | 2013-06-05 | 2014-12-17 | 北京齐尔布莱特科技有限公司 | 双缓存数据处理方法及*** |
CN103281397A (zh) * | 2013-06-13 | 2013-09-04 | 苏州联讯达软件有限公司 | 一种基于时间戳和访问密度的数据缓存方法及*** |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108153783A (zh) * | 2016-12-06 | 2018-06-12 | 腾讯科技(北京)有限公司 | 一种数据缓存的方法和装置 |
CN108153783B (zh) * | 2016-12-06 | 2020-10-02 | 腾讯科技(北京)有限公司 | 一种数据缓存的方法和装置 |
CN111666260A (zh) * | 2019-03-08 | 2020-09-15 | 杭州海康威视数字技术股份有限公司 | 数据处理方法及装置 |
CN110704488A (zh) * | 2019-09-29 | 2020-01-17 | 北京元年科技股份有限公司 | 用于管理数据的方法及相应的***、计算机设备和介质 |
CN110704488B (zh) * | 2019-09-29 | 2022-02-08 | 北京元年科技股份有限公司 | 用于管理数据的方法及相应的***、计算机设备和介质 |
CN111625536A (zh) * | 2020-04-23 | 2020-09-04 | 北京城市网邻信息技术有限公司 | 一种数据访问方法及装置 |
CN111625536B (zh) * | 2020-04-23 | 2023-09-22 | 北京城市网邻信息技术有限公司 | 一种数据访问方法及装置 |
CN117376289A (zh) * | 2023-10-11 | 2024-01-09 | 哈尔滨工业大学 | 面向道路监测数据使用申请的网络磁盘数据调度方法 |
CN117376289B (zh) * | 2023-10-11 | 2024-04-12 | 哈尔滨工业大学 | 面向道路监测数据使用申请的网络磁盘数据调度方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105988941B (zh) | 2020-04-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108694241B (zh) | 一种数据的存储方法及设备 | |
CN105988941A (zh) | 缓存数据处理方法和装置 | |
CN104065568B (zh) | 一种Web服务器集群的路由方法 | |
US20170262372A1 (en) | Cache Memory System and Method for Accessing Cache Line | |
CN206775541U (zh) | 分布式游戏服务*** | |
CN106844740B (zh) | 基于内存对象缓存***的数据预读方法 | |
CN105095109B (zh) | 缓存访问方法、缓存访问路由器和计算机*** | |
CN102195874A (zh) | 数据分组的预提取 | |
CN105512053A (zh) | 移动透明计算***服务器端多用户访问的镜像缓存方法 | |
WO2021164560A1 (zh) | 一种多核芯片及其调度方法 | |
WO2022233195A1 (zh) | 神经网络权值存储方法、读取方法及相关设备 | |
CN114039875B (zh) | 一种基于eBPF技术的数据采集方法、装置及*** | |
WO2023179742A1 (zh) | 数据访问方法及***、硬件卸载设备、电子设备及介质 | |
CN104426838A (zh) | 一种互联网缓存调度方法及*** | |
CN113392863A (zh) | 一种机器学习训练数据集的获取方法、获取装置及终端 | |
CN109271363A (zh) | 一种文件存储的方法及设备 | |
CN109002503A (zh) | 一种元数据读取方法、装置、设备及可读存储介质 | |
CN103645873B (zh) | 一种在趋势曲线***中实现高效数据缓存的方法 | |
CN109685712A (zh) | 图像缓存和使用方法及装置、终端 | |
CN107491549A (zh) | 一种数据处理方法及*** | |
CN103336670B (zh) | 一种基于数据温度对数据块自动进行分布的方法和装置 | |
CN110022336A (zh) | 提高网络资源下载速度的方法、存储介质、设备及*** | |
CN202094998U (zh) | 移动终端视频信号实时动态处理装置 | |
CN115982091B (zh) | 基于rdma引擎的数据处理方法与***、介质、设备 | |
WO2023193599A1 (zh) | 文件传输方法、装置及终端设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |