CN106570068B - 信息推荐方法及装置 - Google Patents
信息推荐方法及装置 Download PDFInfo
- Publication number
- CN106570068B CN106570068B CN201610895111.2A CN201610895111A CN106570068B CN 106570068 B CN106570068 B CN 106570068B CN 201610895111 A CN201610895111 A CN 201610895111A CN 106570068 B CN106570068 B CN 106570068B
- Authority
- CN
- China
- Prior art keywords
- memory space
- ith
- target key
- upper limit
- index information
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 96
- 238000001514 detection method Methods 0.000 claims abstract description 35
- 230000008569 process Effects 0.000 claims description 60
- 101150025612 POLL gene Proteins 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 9
- 230000000694 effects Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- 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/953—Querying, e.g. by the use of web search engines
- G06F16/9535—Search customisation based on user profiles and personalisation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种信息推荐方法及装置,属于信息推荐技术领域。所述方法包括:在获取到包括用户标识ID和推荐信息的信息ID的目标Key之后;读取n个内存空间的公共包头中的索引信息;检测索引信息所对应的第i个内存空间是否达到存储上限;若第i个内存空间达到存储上限,则将当前处于有效读写状态的内存空间从第i个内存空间切换为第j个内存空间,删除第j个内存空间中存储的Key,存储目标Key至第j个内存空间,并推荐目标Key所对应的推荐信息至用户ID所对应的用户终端;第j个内存空间是n个内存空间中按照预设轮询顺序轮询时第i个内存空间的后一个内存空间;更新索引信息为第j个内存空间的标识;解决了现有技术中所需的内存空间较大的问题。
Description
技术领域
本发明实施例涉及信息推荐技术领域,特别涉及一种信息推荐方法及装置。
背景技术
现有技术中,服务器经常需要为用户推荐信息。比如,在视频网站中,视频服务器会根据用户的喜好向用户推荐视频。
现有的一种信息推荐方法包括:服务器接收用户ID(Identification)以及推荐信息的信息ID;检测存储的Key-List中该用户ID所对应的List中是否包含该信息ID;若未包含,则存储该信息ID至该用户ID所对应的List中。其中,在Key-List中Key为用户ID,List中包括推荐给用户ID所对应的用户终端的各个推荐信息的信息ID。
随着时间的推移,用户会不断增多,向用户推荐的推荐信息也不断增多,因此这就导致服务器存储Key-List所需的内存空间较大。
发明内容
为了解决现有技术中存在的问题,本发明实施例提供了一种信息推荐方法及装置。技术方案如下:
根据本发明实施例的第一方面,提供一种信息推荐方法,该方法包括:
获取目标键Key,所述目标Key包括用户标识ID和推荐信息的信息ID;
读取n个内存空间的公共包头中的索引信息,所述索引信息中存储有所述n个内存空间中当前处于有效读写状态的第i个内存空间的标识;i为整数且0≤i≤n-1;
检测所述索引信息所对应的所述第i个内存空间是否达到存储上限;
若所述第i个内存空间达到存储上限,则将当前处于有效读写状态的内存空间从所述第i个内存空间切换为第j个内存空间,删除所述第j个内存空间中存储的Key,存储所述目标Key至所述第j个内存空间,并推荐所述目标Key所对应的所述推荐信息至所述用户ID所对应的用户终端;所述第j个内存空间是所述n个内存空间中按照预设轮询顺序轮询时所述第i个内存空间的后一个内存空间;j为整数且0≤j≤n-1;
更新所述索引信息为所述第j个内存空间的标识。
根据本发明实施例的第二方面,提供一种信息推荐装置,该装置包括:
第一获取模块,用于获取目标键Key,所述目标Key包括用户标识ID和推荐信息的信息ID;
第一读取模块,用于读取n个内存空间的公共包头中的索引信息,所述索引信息中存储有所述n个内存空间中当前处于有效读写状态的第i个内存空间的标识;i为整数且0≤i≤n-1;
第一检测模块,用于检测所述索引信息所对应的所述第i个内存空间是否达到存储上限;
推荐模块,用于在所述第一检测模块的检测结果为所述第i个内存空间达到存储上限时,将当前处于有效读写状态的内存空间从所述第i个内存空间切换为第j个内存空间,删除所述第j个内存空间中存储的Key,存储所述目标Key至所述第j个内存空间,并推荐所述目标Key所对应的所述推荐信息至所述用户ID所对应的用户终端;所述第j个内存空间是所述n个内存空间中按照预设轮询顺序轮询时所述第i个内存空间的后一个内存空间;j为整数且0≤j≤n-1;
更新模块,用于更新所述索引信息为所述第j个内存空间的标识。
本发明实施例提供的技术方案带来的有益效果是:
通过在获取到包括用户ID和信息ID的目标Key之后,读取n个内存空间的公共包头中的索引信息,并在索引信息所对应的第i个内存空间达到存储上限时,将当前处于有效读写状态的内存空间从第i个内存空间切换为第j个内存空间,删除第j个内存空间中存储的Key,存储目标Key至第j个内存空间,并推荐目标Key所对应的推荐信息至用户ID所对应的用户终端;也即在信息推荐过程中当第j个内存空间已经在历史时间段存满较早时间的Key时,可以删除第j个内存空间中已经存储的较早时间的Key,并存储最新的目标Key,这样即使随着时间的推移Key不断增多,但是也只需占用n个内存空间进行存储,解决了现有技术中随着用户以及推荐信息的增多,服务器耗用的内存空间较大的问题;达到了可以减少所需耗用的内存空间的效果。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例提供的信息推荐方法的流程图;
图2是本发明另一实施例提供的数据结构的示意图;
图3A是本发明另一个实施例提供的信息推荐方法的流程图;
图3B是本发明另一实施例提供的数据结构的另一示意图;
图3C是本发明另一实施例提供的多进程的服务器中的数据的存储示意图;
图3D是本发明另一实施例提供的确定目标进程的流程图;
图4是本发明各个实施例所涉及的服务器集群的示意图;
图5是本发明一个实施例提供的信息推荐装置的示意图;
图6是本发明一个实施例提供的服务器的示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
请参考图1,其示出了本发明一个实施例提供的信息推荐方法的方法流程图,如图1所示,该信息推荐方法可以包括:
步骤101,获取目标键Key,目标Key包括用户标识ID和推荐信息的信息ID。
步骤102,读取n个内存空间的公共包头中的索引信息。
索引信息中存储有n个内存空间中当前处于有效读写状态的第i个内存空间的标识;i为整数且0≤i≤n-1。
步骤103,检测索引信息所对应的第i个内存空间是否达到存储上限。
步骤104,若第i个内存空间达到存储上限,则将当前处于有效读写状态的内存空间从第i个内存空间切换为第j个内存空间,删除第j个内存空间中存储的Key,存储目标Key至第j个内存空间,并推荐目标Key所对应的推荐信息至用户ID所对应的用户终端。
第j个内存空间是n个内存空间中按照预设轮询顺序轮询时第i个内存空间的后一个内存空间;j为整数且0≤j≤n-1。
步骤105,更新索引信息为第j个内存空间的标识。
比如,以n=3为例,当i=1时,在接收到目标Key之后,若第1个内存空间达到存储上限,则在第2个内存空间中已经存满Key时,服务器可以删除第2个内存空间中存储的Key,并将目标Key存储至第2个内存空间;当i=2时,在接收到目标Key之后,若第2个内存空间达到存储上限,则在第0个内存空间存满Key时,服务器可以删除第0个内存空间中存储的Key,并存储目标Key至第0个内存空间;类似的,若i=0,则在接收到目标Key之后,若第0个内存空间达到存储上限,则在第0个内存空间中已经存满Key时,服务器可以删除第1个内存空间中存储的Key,并存储目标Key至第1个内存空间。
综上所述,本实施例提供的信息推荐方法,通过在获取到包括用户ID和信息ID的目标Key之后,读取n个内存空间的公共包头中的索引信息,并在索引信息所对应的第i个内存空间达到存储上限时,将当前处于有效读写状态的内存空间从第i个内存空间切换为第j个内存空间,删除第j个内存空间中存储的Key,存储目标Key至第j个内存空间,并推荐目标Key所对应的推荐信息至用户ID所对应的用户终端;也即在信息推荐过程中当第j个内存空间已经在历史时间段存满较早时间的Key时,可以删除第j个内存空间中已经存储的较早时间的Key,并存储最新的目标Key,这样即使随着时间的推移Key不断增多,但是也只需占用n个内存空间进行存储,解决了现有技术中随着用户以及推荐信息的增多,服务器耗用的内存空间较大的问题;达到了可以减少所需耗用的内存空间的效果。
为了便于描述,首先对各个实施例中存储的Key的整体数据结构做简单介绍。请参考图2,该数据结构中包括公共包头21以及n个内存空间22,n为大于等于2的整数。公共包头21中包括索引信息211以及切换时间212。其中,
索引信息211中存储有n个内存空间22中当前处于有效读写状态的第i个内存空间的标识;i为整数且0≤i≤n-1。比如,当n=2时,该索引信息中可以存储有0或者1。其中,0为第0个内存空间的标识,1为第1个内存空间的标识。
通常情况下,在同一个时刻,n个内存空间中只有一个内存空间处于有效读写状态。
切换时间212为最近一次更新索引信息的时间,或者,从第h个内存空间切换至第i个内存空间时第一次存储Key的时间;第h个内存空间是n个内存空间中按照预设轮询顺序轮询时第i个内存空间的前一个内存空间。
其中,预设轮询顺序可以为按照n个内存空间的排序的顺序;比如n=3,则预设轮询顺序可以为第0个内存空间、第1个内存空间、第2个内存空间、第0个内存空间、第1个内存空间、第2个内存空间等等;可选地,预设轮询顺序还可以为其他顺序;比如,仍然以n=3为例,该预设轮询顺序可以为第0个内存空间、第2个内存空间、第1个内存空间、第0个内存空间、第2个内存空间、第1个内存空间等等。
第h个内存空间为第i个内存空间的前一个内存空间。比如,以预设轮询顺序为上述第一种顺序来举例,当i=2时,h=1;又比如,以预设轮询顺序为上述第二种顺序来举例,当i=2时,h=0。
以切换时间212为最近一次更新索引信息的时间为例,若最近一次更新索引信息的时间为2016年9月29日7:35,则该切换时间212即为2016年9月29日7:35。
以切换时间212为从第h个内存空间切换至第i个内存空间时第一次存储Key的时间,则当预设轮询顺序为上述第一种时,则在i为0时,该切换时间212可以为从第2个内存空间切换至第0个内存空间时第一次存储Key的时间如2016年9月28日12:00。又比如,在i为1时,该切换时间212可以为从第0个内存空间切换至第1个内存空间时第一次存储Key的时间如2016年9月29日8:00。
需要说明的是,在初始状态下,切换时间212可以为空,本实施例对此并不做限定。
内存空间22中用于存储Key。请参考图2,每个内存空间中包括数据包头221以及数据段222,数据包头221中包括内存空间的容量上限以及当前已用的容量,数据段222用于存储Key。
请参考图3A,其示出了本发明一个实施例提供的信息推荐方法的方法流程图,如图3A所示,该信息推荐方法可以包括:
步骤301,获取目标键Key,目标Key包括用户ID和推荐信息的信息ID。
服务器需要向某一用户推荐信息时,服务器可以获取到包括该用户的用户ID以及推荐信息的信息ID的目标Key。其中,推荐信息可以为视频信息、文本信息、图片信息或者其它类型的信息,对此不作限定。
其中,服务器可以自动生成该目标Key,或者接收其它服务器发送的目标Key。具体的,若该服务器独立实现信息推荐功能,比如,服务器为视频客户端的后台服务器,则该服务器可以根据用户的历史观看记录自动生成需要为该用户推荐的视频的视频ID,进而最终得到目标Key;而若该服务器与其他服务器联合实现推荐功能,比如,视频客户端的后台服务器在向用户推荐视频时,可以通过上述方法获得该目标Key,并发送该目标Key至服务器,相应的,服务器接收后台服务器发送的目标Key。
步骤302,读取n个内存空间的公共包头中的索引信息。
索引信息中存储有n个内存空间中当前处于有效读写状态的第i个内存空间的标识;i为整数且0≤i≤n-1。
步骤303,读取公共包头中的切换时间。
切换时间为最近一次更新索引信息的时间,或者,从第h个内存空间切换至第i个内存空间时第一次存储Key的时间;第h个内存空间是n个内存空间中按照预设轮询顺序轮询时第i个内存空间的前一个内存空间;h为整数且0≤h≤n-1。
需要说明的是,通常情况下,步骤302和步骤303同时执行,对此不做限定。
步骤304,获取切换时间与当前时刻之间的时间差。
服务器读取公共包头中存储的切换时间,并计算该切换时间与当前时刻的时间差,如1天。
步骤305,若时间差未达到时间阈值,则检测第i个内存空间以及第h个内存空间中是否存储有目标Key;若时间差达到时间阈值,则检测第i个内存空间中是否存储有目标Key。
时间阈值可以为预先设定的经验值,该经验值小于等于每个内存空间存满所需的总时长。并且,实际实现时,该经验值趋于该总时长。
如果时间差未达到时间阈值,则说明服务器刚切换至第i个内存空间中进行存储,此时最近一段时间段内接收到的Key可能存储在的前一个内存空间中,因此,此时服务器可以检测第i个内存空间以及第h个内存空间中是否包含目标Key。可选地,服务器可以通过BloomFilter(布隆过滤器)检测目标Key是否存储在上述内存空间中,本实施例对此并不做限定。
而若时间差达到时间阈值,则说明服务器最近一段时间内接收到的目标Key通常都存储在第i个内存空间中,此时服务器可以直接检测第i个内存空间中是否包含目标Key。其中,服务器可以同样采用BloomFilter进行检测,本实施例对此不再赘述。
步骤306,若检测结果为未存储有目标Key,检测索引信息所对应的第i个内存空间是否达到存储上限。
每个内存空间中包括数据包头以及数据段,数据包头中包括内存空间的容量上限以及当前已用的容量,数据段用于存储Key。可选地,如步骤305,当服务器采用BloomFilter进行检测时,容量上限可以为能够存储的集合(每个集合中存储有预定大小的Key)总数,当前已用的容量可以为已经存储的集合的数目,并且,基于BloomFilter的特性,该数据包头中还可以包括图3B所示的数据段中的最大bit长度以及哈希次数,本实施例在此不再赘述。其中,最大bit长度用于表示对应的内存空间中所能存储的最大位数,哈希次数是指在将目标Key存储至内存空间时,计算的哈希运算的次数。
相应的,本步骤可以包括:
第一,根据第i个内存空间的数据包头检测第i个内存空间已用的容量是否达到容量上限。
第二,若检测结果为达到容量上限,则确定第i个内存空间达到存储上限。
第三,若检测结果为未达到容量上限,则确定第i个内存空间未达到存储上限。
步骤307,若第i个内存空间达到存储上限,则将当前处于有效读写状态的内存空间从第i个内存空间切换为第j个内存空间,删除第j个内存空间中存储的Key,存储目标Key至第j个内存空间,并推荐目标Key所对应的推荐信息至用户ID所对应的用户终端。
第j个内存空间是n个内存空间中按照预设轮询顺序轮询时第i个内存空间的后一个内存空间;j为整数且0≤j≤n-1。第j个内存空间与第h个内存空间类似,不同的是,第h个内存空间为第i个内存空间的前一个内存空间,而第j个内存空间为第i个内存空间的后一个内存空间。
当第i个内存空间达到存储上限,则说明第i个内存空间不能继续存储Key,服务器需要存储Key至其他内存空间中,此时,服务器可以将当前处于有效读写状态的内存空间从第i个内存空间切换为第j个内存空间,删除第j个内存空间中存储的Key,存储目标Key至第j个内存空间,并推荐目标Key所对应的推荐信息至用户ID所对应的用户终端。
需要说明的是,若第j个内存空间为空,则服务器可以直接存储数据至第j个内存空间,本实施例对此并不做限定。
步骤308,更新索引信息为第j个内存空间的标识。
需要说明的是,本实施例只是以先执行步骤307后执行步骤308来举例,可选地,服务器还可以同时执行步骤307和步骤308,或者先执行步骤308后执行步骤307,在此不再赘述。
步骤309,若第i个内存空间未达到存储上限,则存储目标Key至第i个内存空间。
而第i个内存空间未达到存储上限,则说明第i个内存空间中还能继续写入Key,此时,服务器可以写入目标Key至第i个内存空间中,本实施例在此不再赘述。
步骤310,若检测结果为存储有该目标Key,则流程结束。
若步骤305的检测结果为存储有目标Key,则此时流程结束。
在本实施例的一个应用场景中,以n=2,索引信息为0来举例,服务器根据用户的兴趣为用户筛选出需要推荐的视频后,目标Key即为用户ID和视频ID,此后服务器可以执行如下步骤。服务器读取数据结构中公共包头中的切换时间;检测该切换时间与当前时刻的时间差是否达到时间阈值,若达到时间阈值,则服务器可以读取公共包头中的索引信息如0,通过BloomFilter检测第0个内存空间中是否存储有该用户ID和视频ID,若存储,则流程结束;若未存储,则服务器推荐该视频ID所对应的视频至用户ID所对应的用户终端,并存储用户ID和视频ID;而若检测结果为未达到时间阈值,则服务器通过BloomFilter检测第0个内存空间和第1个内存空间中是否存储有用户ID和视频ID,若存储,则流程结束,若未存储,则服务器推荐该视频ID所对应的视频至用户ID所对应的用户终端,并存储用户ID和视频ID。其中,服务器存储用户ID和视频ID的步骤可以包括:读取第0个内存空间的数据包头中的集合总数以及当前已经存储的集合的数目,若已存储的集合的数目未达到集合总数,则存储用户ID和视频ID至第0个内存空间的数据段;而若已存储的集合的数目达到集合总数,则存储用户ID和视频ID至第1个内存空间。其中,在存储用户ID和视频ID至第1个内存空间时,若第1个内存空间中已经存储有Key,则删除第1个内存空间中已经存储的全部Key,而若第1个内存空间中未存储有Key,则直接存储用户ID和视频ID至第1个内存空间,本实施例对此并不做赘述。
以新闻视频频道且内存空间为2个BloomFilter为例,在误判率为0.01的约束下(误判率是指未存储的数据被误判为已存储,对业务的影响可能是发送对应的新闻数据给用户时的分发损失),以一天内的总请求量如果是ReqPkg=5KW,平均每次请求视频内容为10条,则一天内下发的内容(用户+视频)的量为5KW*10=5亿,基于BloomFilter的内存空间的计算公式,在误判率为0.01的约束下所需的双内存空间的空间大小为1.26G。
对于时效性较强的新闻场景,内容实新度基本在最近三天,则n个内存空间中存储一周内的新闻数据,对超过一周的数据做历史淘汰,此时上述方案需要的内存空间的空间大小仅为1.26G*7=8.82G。由上述实验可知,本实施例提供的信息推荐方法相对于现有技术中提到的通过Key-List存储数据的信息推荐方法中需要几十G甚至几百G相比,极大的节省了内存开销。
需要说明的是,上述实施例中步骤303至步骤305为可选步骤,实际实现时可以执行也可以不执行,本实施例对此并不做限定。
综上所述,本实施例提供的信息推荐方法,通过在接收到包括用户ID和信息ID的目标Key之后,读取n个内存空间的公共包头中的索引信息,并在索引信息所对应的第i个内存空间达到存储上限时,将当前处于有效读写状态的内存空间从第i个内存空间切换为第j个内存空间,删除第j个内存空间中存储的Key,存储目标Key至第j个内存空间,并推荐目标Key所对应的推荐信息至用户ID所对应的用户终端;也即在信息推荐过程中当第j个内存空间已经在历史时间段存满较早时间的Key时,可以删除第j个内存空间中已经存储的较早时间的Key,并存储最新的目标Key,这样即使随着时间的推移Key不断增多,但是也只需占用n个内存空间进行存储,解决了现有技术中随着用户以及推荐信息的增多,服务器耗用的内存空间较大的问题;达到了可以减少所需耗用的内存空间的效果。
通过在存储目标Key之前,先根据公共包头中的时间差检测是否已经存储过该目标Key,避免了在短时间内对目标Key所对应的推荐信息重复推荐,耗费服务器网络资源以及可能会给用户造成困扰的问题。
需要说明的是,请参考图3C,当服务器300支持k个进程,k为大于等于2的整数时,每个进程可以对应于一个公共包头以及一组内存空间。其中,不同进程对应的一组内存空间的个数可以相同也可以不同。比如,以k=2为例,第0个进程对应于2个内存空间,第1个进程对应于3个内存空间。此时,服务器可以通过预设算法将目标Key分配至不同进程中,由不同进程进行存储,此时,请参考图3D,在步骤304之前,该信息推荐方法还可以包括如下步骤:
步骤311,确定目标Key在k个进程中所对应的目标进程。
具体的,本步骤可以包括:
第一,计算目标Key的哈希值。
服务器可以通过预设哈希算法计算目标Key的哈希值。
第二,计算哈希值和k的模值,将模值所对应的进程确定为目标进程。
比如,k为4,且4个进程分别为第0个进程、第1个进程、第2个进程以及第3个进程,哈希值与k的模值为2,则服务器可以确定第2个进程为目标进程。
步骤312,确定目标进程所对应的n个内存空间的公共包头中的索引信息。
结合图3C,在确定的进程为第2个进程时,服务器可以确定第2个进程所对应的索引信息,也即为1。
通过为不同进程分配不同的内存空间,也即每个进程独占一个共享内存,达到了进程可以对内存空间中的Key按序处理,避免了现有技术中多个进程在同一个内存空间中同时写入时可能会导致的加锁的问题。
此外,本实施例在存储目标Key至内存空间时,通过存储目标Key的哈希值,达到了对目标Key可以进行自定义封装,不论目标Key类型是否相同,服务器均可以存储的效果,也即达到了可以针对不同业务场景具有良好的可移植性的效果。避免了现有技术中通过key-List进行存储时,若key的类型不同,则服务器将无法进行存储,信息推荐方法的可移植性较差的问题。
实际应用中,为了避免服务器宕机后存储的数据丢失的问题,可以将Key在其他存储服务器中进行备份,也即上述各个实施例所说的服务器可以为一个服务器集群。具体的,请参考图4,该服务器集群可以包括控制服务器410、第一存储服务器420以及第二存储服务器430。
控制服务器410用于对目标Key进行写入并判断第一存储服务器420和第二存储服务器430中是否存储有该目标Key。实际实现时,该控制服务器410用于对目标Key进行封装,并且根据该目标Key的哈希值将该数据分发到对应的目标进程中。
第一存储服务器420和第二存储服务器430用于存储Key。实际实现时,两者类似且互为主备服务器。
下述以第一存储服务器420来举例,第一存储服务器420中可以包括时间窗口滑动切换控制层、BloomFilter算法控制层、Bitmap(位图文件)基础逻辑层以及异步同步工具层。其中:
时间窗口滑动切换控制层用于在索引信息对应的第i个内存空间达到存储上限时,将索引信息更新为第j个内存空间的标识。
BloomFilter算法控制层和Bitmap基础逻辑层用于将目标Key存储至内存空间中,并且,检测内存空间中是否包含目标Key,这与现有技术类似,在此不再赘述。可选地,BloomFilter算法控制层和Bitmap基础逻辑层在成功写入目标Key之后,生成Binlog(二进制日志)并保存至本地。同时,还可以定期将内存空间中存储的Key进行Dump切片并保存,以用于宕机重启中的数据恢复。
异步同步工具层用于根据Binlog将第一存储服务器420中存储的数据同步至第二存储服务器430。可选地,异步同步工具层中存储有第一存储服务器420与第二存储服务器430之间的同步进度,并定期将同步进度更新至MetaFile(图元文件)。通过将同步进度更新至MetaFile,使得在下次同步时,可以根据MetaFile中记录的同步进度继续同步,本实施例在此不再赘述。
实际实现时,在第一存储服务器420中的异步同步工具层将Key同步至第二存储服务器430之前,可以先与第二存储服务器430握手,进而降低同步过程中由于网络问题而导致的同步异常。具体的,第一存储服务器420可以通过ASK(询问)或者ACK(Acknowledgement,确认字符)数据包完成与第二存储服务器430握手。
可选地,在同步过程中,异步同步工具层可以根据预设的并发度进行发包。其中,该并发度为用户预先配置的在同一时刻能够发送的数据包的最大个数。通过配置并发度,实现了可以根据业务的流量需求进行调节,特别的,对于数据实时性要求不高的场景,可以通过降低该并发度来达到缓解高峰流量的问题。
请参考图5,其示出了本发明一个实施例提供的信息推荐装置的结构示意图,如图5所示,该信息推荐装置可以包括:第一获取模块510、第一读取模块520、第一检测模块530、推荐模块540和更新模块550。
第一获取模块510,用于接收目标键Key,所述目标Key包括用户标识ID和推荐信息的信息ID;
第一读取模块520,用于读取n个内存空间的公共包头中的索引信息,所述索引信息中存储有所述n个内存空间中当前处于有效读写状态的第i个内存空间的标识;i为整数且0≤i≤n-1;
第一检测模块530,用于检测所述索引信息所对应的所述第i个内存空间是否达到存储上限;
推荐模块540,用于在所述第一检测模块530的检测结果为所述第i个内存空间达到存储上限时,将当前处于有效读写状态的内存空间从所述第i个内存空间切换为第j个内存空间,删除所述第j个内存空间中存储的Key,存储所述目标Key至所述第j个内存空间,并推荐所述目标Key所对应的所述推荐信息至所述用户ID所对应的用户终端;所述第j个内存空间是所述n个内存空间中按照预设轮询顺序轮询时所述第i个内存空间的后一个内存空间;j为整数且0≤j≤n-1;
更新模块550,用于更新所述索引信息为所述第j个内存空间的标识。
综上所述,本实施例提供的信息推荐装置,通过在接收到包括用户ID和信息ID的目标Key之后,读取n个内存空间的公共包头中的索引信息,并在索引信息所对应的第i个内存空间达到存储上限时,将当前处于有效读写状态的内存空间从第i个内存空间切换为第j个内存空间,删除第j个内存空间中存储的Key,存储目标Key至第j个内存空间,并推荐目标Key所对应的推荐信息至用户ID所对应的用户终端;也即在信息推荐过程中当第j个内存空间已经在历史时间段存满较早时间的Key时,可以删除第j个内存空间中已经存储的较早时间的Key,并存储最新的目标Key,这样即使随着时间的推移Key不断增多,但是也只需占用n个内存空间进行存储,解决了现有技术中随着用户以及推荐信息的增多,服务器耗用的内存空间较大的问题;达到了可以减少所需耗用的内存空间的效果。
基于上述实施例提供的信息推荐装置,可选的,所述第一读取模块520,包括:
确定单元,用于确定所述目标Key在k个进程中所对应的目标进程,k为大于等于2的整数;
读取单元,用于读取所述确定单元确定的所述目标进程所对应的n个内存空间的公共包头中的所述索引信息。
可选的,所述确定单元,还用于:
计算所述目标Key的哈希值;
计算所述哈希值和k的模值,将所述模值所对应的进程确定为所述目标进程。
可选的,每个内存空间的数据包头中包括所述内存空间的容量上限以及当前已用的容量;
所述第一检测模块530,还用于:
根据所述第i个内存空间的数据包头检测所述第i个内存空间中已用的容量是否达到容量上限;
若检测结果为达到所述容量上限,则确定所述第i个内存空间达到所述存储上限;
若检测结果为未达到所述容量上限,则确定所述第i个内存空间未达到所述存储上限。
可选的,所述检测所述索引信息所对应的所述第i个内存空间是否达到存储上限之前,所述装置还包括:
第二读取模块,用于在所述第一检测模块530检测所述索引信息所对应的所述第i个内存空间是否达到存储上限之前,读取所述公共包头中的切换时间;所述切换时间为最近一次更新所述索引信息的时间,或者,从第h个内存空间切换至第i个内存空间时第一次存储Key的时间;所述第h个内存空间是所述n个内存空间中按照所述预设轮询顺序轮询时所述第i个内存空间的前一个内存空间;h为整数且0≤h≤n-1;
第二获取模块,用于获取所述切换时间与当前时刻之间的时间差;
第二检测模块,用于在所述时间差未达到时间阈值时,检测所述第i个内存空间以及所述第h个内存空间中是否存储有所述目标Key;在所述时间差达到所述时间阈值时,检测所述第i个内存空间中是否存储有所述目标Key;
所述第一检测模块530,还用于在所述第二检测模块的检测结果为未存储有所述目标Key时,执行所述检测所述索引信息所对应的所述第i个内存空间是否达到存储上限的步骤;
结束模块,用于在所述第二检测模块的检测结果为存储有所述目标Key时,流程结束。
需要说明的是:上述实施例提供的信息推荐装置,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将服务器的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的信息推荐装置和信息推荐方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中的存储器中所包含的计算机可读存储介质;也可以是单独存在,未装配入终端中的计算机可读存储介质。该计算机可读存储介质存储有一个或者一个以上程序,该一个或者一个以上程序被一个或者一个以上的处理器用来执行信息推荐方法。
请参考图6,其示出了本发明一个实施例提供的服务器的结构示意图。该服务器用于实施上述实施例中提供的信息推荐方法。具体来讲:
所述服务器600包括中央处理单元(CPU)601、包括随机存取存储器(RAM)602和只读存储器(ROM)603的系统存储器604,以及连接系统存储器604和中央处理单元601的系统总线605。所述服务器600还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统)606,和用于存储操作系统613、应用程序614和其他程序模块615的大容量存储设备607。
所述基本输入/输出系统606包括有用于显示信息的显示器608和用于用户输入信息的诸如鼠标、键盘之类的输入设备609。其中所述显示器608和输入设备609都通过连接到系统总线605的输入输出控制器610连接到中央处理单元601。所述基本输入/输出系统606还可以包括输入输出控制器610以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器610还提供输出到显示屏、打印机或其他类型的输出设备。
所述大容量存储设备607通过连接到系统总线605的大容量存储控制器(未示出)连接到中央处理单元601。所述大容量存储设备607及其相关联的计算机可读介质为服务器600提供非易失性存储。也就是说,所述大容量存储设备607可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。
不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器604和大容量存储设备607可以统称为存储器。
根据本发明的各种实施例,所述服务器600还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器600可以通过连接在所述系统总线605上的网络接口单元611连接到网络612,或者说,也可以使用网络接口单元611来连接到其他类型的网络或远程计算机系统(未示出)。
所述存储器还包括一个或者一个以上的程序,所述一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行。上述一个或者一个以上程序包含用于执行上述信息推荐方法的指令。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”(“a”、“an”、“the”)旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种信息推荐方法,其特征在于,所述方法包括:
获取目标Key,所述目标Key包括用户ID和推荐信息的信息ID;
读取n个内存空间的公共包头中的索引信息,所述索引信息中存储有所述n个内存空间中当前处于有效读写状态的第i个内存空间的标识;i为整数且0≤i≤n-1;
检测所述索引信息所对应的所述第i个内存空间是否达到存储上限;
若所述第i个内存空间达到存储上限,则将当前处于有效读写状态的内存空间从所述第i个内存空间切换为第j个内存空间,删除所述第j个内存空间中存储的Key,存储所述目标Key至所述第j个内存空间,并推荐所述目标Key所对应的所述推荐信息至所述用户ID所对应的用户终端;所述第j个内存空间是所述n个内存空间中按照预设轮询顺序轮询时所述第i个内存空间的后一个内存空间;j为整数且0≤j≤n-1;
更新所述索引信息为所述第j个内存空间的标识。
2.根据权利要求1所述的方法,其特征在于,所述读取n个内存空间的公共包头中的索引信息,包括:
确定所述目标Key在k个进程中所对应的目标进程,k为大于等于2的整数;
读取所述目标进程所对应的n个内存空间的公共包头中的所述索引信息。
3.根据权利要求2所述的方法,其特征在于,所述确定所述目标Key在k个进程中所对应的目标进程,包括:
计算所述目标Key的哈希值;
计算所述哈希值和k的模值,将所述模值所对应的进程确定为所述目标进程。
4.根据权利要求1至3任一所述的方法,其特征在于,每个内存空间的数据包头中包括所述内存空间的容量上限以及当前已用的容量;
所述检测所述索引信息所对应的所述第i个内存空间是否达到存储上限,包括:
根据所述第i个内存空间的数据包头检测所述第i个内存空间中已用的容量是否达到容量上限;
若检测结果为达到所述容量上限,则确定所述第i个内存空间达到所述存储上限;
若检测结果为未达到所述容量上限,则确定所述第i个内存空间未达到所述存储上限。
5.根据权利要求1至3任一所述的方法,其特征在于,所述检测所述索引信息所对应的所述第i个内存空间是否达到存储上限之前,所述方法还包括:
读取所述公共包头中的切换时间;所述切换时间为最近一次更新所述索引信息的时间,或者,从第h个内存空间切换至第i个内存空间时第一次存储Key的时间;所述第h个内存空间是所述n个内存空间中按照所述预设轮询顺序轮询时所述第i个内存空间的前一个内存空间;h为整数且0≤h≤n-1;
获取所述切换时间与当前时刻之间的时间差;
若所述时间差未达到时间阈值,则检测所述第i个内存空间以及所述第h个内存空间中是否存储有所述目标Key;若所述时间差达到所述时间阈值,则检测所述第i个内存空间中是否存储有所述目标Key;
若检测结果为未存储有所述目标Key,则执行所述检测所述索引信息所对应的所述第i个内存空间是否达到存储上限的步骤;
若检测结果为存储有所述目标Key,则流程结束。
6.一种信息推荐装置,其特征在于,所述装置包括:
第一获取模块,用于获取目标Key,所述目标Key包括用户ID和推荐信息的信息ID;
第一读取模块,用于读取n个内存空间的公共包头中的索引信息,所述索引信息中存储有所述n个内存空间中当前处于有效读写状态的第i个内存空间的标识;i为整数且0≤i≤n-1;
第一检测模块,用于检测所述索引信息所对应的所述第i个内存空间是否达到存储上限;
推荐模块,用于在所述第一检测模块的检测结果为所述第i个内存空间达到存储上限时,将当前处于有效读写状态的内存空间从所述第i个内存空间切换为第j个内存空间,删除所述第j个内存空间中存储的Key,存储所述目标Key至所述第j个内存空间,并推荐所述目标Key所对应的所述推荐信息至所述用户ID所对应的用户终端;所述第j个内存空间是所述n个内存空间中按照预设轮询顺序轮询时所述第i个内存空间的后一个内存空间;j为整数且0≤j≤n-1;
更新模块,用于更新所述索引信息为所述第j个内存空间的标识。
7.根据权利要求6所述的装置,其特征在于,所述第一读取模块,包括:
确定单元,用于确定所述目标Key在k个进程中所对应的目标进程,k为大于等于2的整数;
读取单元,用于读取所述确定单元确定的所述目标进程所对应的n个内存空间的公共包头中的所述索引信息。
8.根据权利要求7所述的装置,其特征在于,所述确定单元,还用于:
计算所述目标Key的哈希值;
计算所述哈希值和k的模值,将所述模值所对应的进程确定为所述目标进程。
9.根据权利要求6至8任一所述的装置,其特征在于,每个内存空间的数据包头中包括所述内存空间的容量上限以及当前已用的容量;
所述第一检测模块,还用于:
根据所述第i个内存空间的数据包头检测所述第i个内存空间中已用的容量是否达到容量上限;
若检测结果为达到所述容量上限,则确定所述第i个内存空间达到所述存储上限;
若检测结果为未达到所述容量上限,则确定所述第i个内存空间未达到所述存储上限。
10.根据权利要求6至8任一所述的装置,其特征在于,所述装置还包括:
第二读取模块,用于在所述第一检测模块检测所述索引信息所对应的所述第i个内存空间是否达到存储上限之前,读取所述公共包头中的切换时间;所述切换时间为最近一次更新所述索引信息的时间,或者,从第h个内存空间切换至第i个内存空间时第一次存储Key的时间;所述第h个内存空间是所述n个内存空间中按照所述预设轮询顺序轮询时所述第i个内存空间的前一个内存空间;h为整数且0≤h≤n-1;
第二获取模块,用于获取所述切换时间与当前时刻之间的时间差;
第二检测模块,用于在所述时间差未达到时间阈值时,检测所述第i个内存空间以及所述第h个内存空间中是否存储有所述目标Key;在所述时间差达到所述时间阈值时,检测所述第i个内存空间中是否存储有所述目标Key;
所述第一检测模块,还用于在所述第二检测模块的检测结果为未存储有所述目标Key时,执行所述检测所述索引信息所对应的所述第i个内存空间是否达到存储上限的步骤;
结束模块,用于在所述第二检测模块的检测结果为存储有所述目标Key时,流程结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610895111.2A CN106570068B (zh) | 2016-10-13 | 2016-10-13 | 信息推荐方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610895111.2A CN106570068B (zh) | 2016-10-13 | 2016-10-13 | 信息推荐方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106570068A CN106570068A (zh) | 2017-04-19 |
CN106570068B true CN106570068B (zh) | 2019-06-04 |
Family
ID=58532088
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610895111.2A Active CN106570068B (zh) | 2016-10-13 | 2016-10-13 | 信息推荐方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106570068B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110737854B (zh) * | 2018-07-02 | 2023-02-10 | 腾讯科技(深圳)有限公司 | 连续剧式投放信息的展示方法、装置、设备及存储介质 |
CN113407107B (zh) * | 2020-03-16 | 2023-03-24 | 杭州海康威视数字技术股份有限公司 | 一种数据存储方法、装置及设备 |
CN112540984B (zh) * | 2020-11-23 | 2023-10-03 | 成都佳华物链云科技有限公司 | 数据存储方法、查询方法、装置、电子设备及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7349925B2 (en) * | 2004-01-22 | 2008-03-25 | International Business Machines Corporation | Shared scans utilizing query monitor during query execution to improve buffer cache utilization across multi-stream query environments |
CN103019956B (zh) * | 2012-10-23 | 2015-11-25 | 北京奇虎科技有限公司 | 一种对缓存数据的操作方法和装置 |
CN109117087A (zh) * | 2018-07-19 | 2019-01-01 | 北京蜂盒科技有限公司 | 采集监控数据的方法、装置、存储介质及电子设备 |
-
2016
- 2016-10-13 CN CN201610895111.2A patent/CN106570068B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN106570068A (zh) | 2017-04-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2017232144B2 (en) | Systems and methods for managing content items having multiple resolutions | |
EP3111653B1 (en) | Systems and methods for providing a user with a set of interactivity features on a user device | |
JP2020038623A (ja) | データを記憶するための方法、装置及びシステム | |
CN108512876B (zh) | 数据的推送方法及装置 | |
WO2013159703A1 (en) | Offline download method, multimedia file download method and system thereof | |
CN112714359B (zh) | 视频推荐方法、装置、计算机设备及存储介质 | |
WO2019019642A1 (zh) | 应用信息推送方法、装置、计算机设备和存储介质 | |
CN108566370B (zh) | 一种数据回源的方法以及装置 | |
CN106570068B (zh) | 信息推荐方法及装置 | |
CN104348859B (zh) | 文件同步方法、装置、服务器、终端及系统 | |
US20190320212A1 (en) | Picture storage method, apparatus and video monitoring system | |
CN109981715B (zh) | 一种会话管理的方法及装置 | |
CN105653209A (zh) | 一种对象存储数据传输方法及装置 | |
CN103716384A (zh) | 跨数据中心实现云存储数据同步的方法和装置 | |
CN107040576A (zh) | 信息推送方法及装置、通讯系统 | |
US20160259494A1 (en) | System and method for controlling video thumbnail images | |
CN108777802B (zh) | 一种缓存vr视频的方法和装置 | |
CN112035413B (zh) | 元数据信息查询方法、装置及存储介质 | |
CN111147226B (zh) | 数据存储方法、装置及存储介质 | |
CN110737389A (zh) | 存储数据的方法和装置 | |
CN112764988A (zh) | 一种数据分段采集方法及装置 | |
CN105554134A (zh) | 信息同步方法及装置 | |
CN112783719B (zh) | 监控数据获取方法、服务器、系统及计算机可读存储介质 | |
CN106469166A (zh) | 一种信息处理方法及装置 | |
CN113449042B (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 |