一种播放记录入库方法及装置、存储介质及电子设备转让专利

申请号 : CN202210214211.X

文献号 : CN114282048B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘其政孙成新王金明

申请人 : 飞狐信息技术(天津)有限公司

摘要 :

本申请提供了一种播放记录入库方法及装置、存储介质及电子设备,该方法通过预设预存储队列和预删除列表,将待删除播放记录的索引记录写入至预删除列表中,将待储播放记录的元素写入至预存储队列中,在定时任务触发后,才基于预删除列表的索引记录中的主键标识,对数据库中与主键标识对应的播放记录进行删除,并基于预存储队列中满足预设存储规则的元素,将缓存中与满足预设存储规则的元素对应播放记录写入数据库中。而不是在写入在播放记录记录入缓存的同时,同步播放记录至数据库,从而解决了对数据库的吞吐性能产生压力,导致数据库崩溃,影响视频的播放,降低用户体验的问题。

权利要求 :

1.一种播放记录入库方法,其特征在于,包括:

在预设的定时任务触发后,获取预设的预删除列表中的索引记录;其中,所述预删除列表中预先写入待删除播放记录的索引记录,所述索引记录用于查询所述待删除列表中是否存在对应视频的记录;

基于索引记录中的主键标识,对数据库中与所述主键标识对应的播放记录和所述播放记录对应的主键标识进行删除;

判断预设的预存储队列中是否存在满足预设存储规则的元素;其中,所述预存储队列中预先写入待存储播放记录的元素;

若所述预存储队列中存在满足所述预设存储规则的元素,则获取所述预存储队列中满足所述预设存储规则的元素;

获取缓存中与第一目标元素对应的播放记录;其中,所述第一目标元素为满足所述预设存储规则的元素;

将与所述第一目标元素对应的播放记录写入所述数据库中,并生成所述播放记录的主键标识。

2.根据权利要求1所述方法,其特征在于,所述预存储队列中预先写入待存储播放记录的元素的过程,包括:在用户产生播放记录后,获取当前播放记录、以及所述当前播放记录的产生时间;

将所述当前播放记录确定为待存储播放记录,并对所述待存储播放记录执行第一操作;

所述第一操作包括:

判断所述预存储队列中是否存在第二目标元素;所述第二目标元素为与所述用户的用户标识和所述待存储播放记录的视频标识均对应的元素;

若所述预存储队列中存在第二目标元素,则将所述第二目标元素移动至所述预存储队列的队尾,并基于所述待存储播放记录的产生时间,对所述第二目标元素的上报时间进行更新;

若所述预存储队列中不存在第二目标元素,则基于所述用户的用户标识和所述待存储播放记录的视频标识,生成元素,并将所生成的元素写入至所述预存储队列中,基于所述待存储播放记录的产生时间,设置所写入的元素的上报时间。

3.根据权利要求2所述的方法,其特征在于,所述对所述待存储播放记录执行第一操作之后,还包括:将所述待存储播放记录写入缓存中;

判断预设的数据字典中是否存在第一目标播放记录;其中,所述第一目标播放记录为所述数据字典包括的所述用户关联的播放记录中与所述待存储播放记录归属于同一视频的播放记录;

若所述数据字典中存在第一目标播放记录,则将所述缓存中与所述第一目标播放记录对应的播放记录进行删除,并执行第二操作;

若所述数据字典中不存在第一目标播放记录,则判断预设的数据字典中是否存在第二目标播放记录;其中,所述第二目标播放记录为所述数据字典包括的所述用户关联的播放记录中与所述待存储播放记录归属于同一视频专辑的播放记录;

若所述数据字典中存在第二目标播放记录,则将所述预存储队列中与所述第二目标播放记录对应的元素进行删除,并将所述缓存中与所述第二目标播放记录对应的播放记录进行删除,并执行所述第二操作;

所述第二操作包括:

判断预设的预删除列表中是否存在目标索引记录;所述目标索引记录为所述用户对应的与所述待存储播放记录归属于同一视频或同一视频专辑的索引记录;

若所述预删除列表中不存在目标索引记录,则查找数据库中与所述第一目标播放记录或所述第二目标播放记录对应播放记录的主键标识;

基于所述用户的用户标识、所述待存储播放记录对应视频的视频标识和主键标识和所述主键标识,生成索引记录,并将所生成的索引记录写入所述预删除列表中。

4.根据权利要求3所述的方法,其特征在于,所述将所述待存储播放记录写入缓存中,包括:判断缓存中是否存在与所述用户关联的播放记录;

若所述缓存中不存在与所述用户关联的播放记录,则将数据库中与所述用户关联的播放记录同步至所述缓存中,并将所述待存储播放记录写入所述缓存中;

若所述缓存中存在与所述用户关联的播放记录,将所述待存储播放记录写入所述缓存中。

5.根据权利要求1所述的方法,其特征在于,所述判断预设的预存储队列中是否存在满足预设存储规则的元素,包括:针对预设的预存储队列中的每个元素,对所述元素的上报时间与当前时间进行计算,得到计算值,判断所述计算值是否大于预设阈值,若所述计算值大于预设阈值,则确定所述元素满足预设存储规则,若所述计算值不大于预设阈值,则确定所述元素不满足预设存储规则。

6.根据权利要求1所述的方法,其特征在于,所述预删除列表中还可以预先写入与删除请求对应的播放记录的索引记录;所述删除请求用于请求删除播放记录。

7.根据权利要求6所述的方法,其特征在于,所述预删除列表中预先写入与删除请求对应的播放记录的索引记录的过程,包括:接收用户的删除请求;

将缓存中与所述删除请求中的播放记录进行删除;

判断所述预删除列表中是否存在与所述删除请求对应的索引记录;

若所述预删除列表中不存在与所述删除请求对应的索引记录,则查找数据库中与所述删除请求对应的播放记录、以及对应播放记录的主键标识;

基于与所述删除请求对应的播放记录、以及对应播放记录的主键标识,生成所述删除请求对应播放记录的索引记录,并将所述删除请求对应播放记录的索引记录写入所述预删除列表中。

8.一种播放记录入库装置,其特征在于,包括:

第一获取单元,用于在预设的定时任务触发后,获取预设的预删除列表中的索引记录;

其中,所述预删除列表中预先写入待删除播放记录的索引记录,所述索引记录用于查询所述待删除列表中是否存在对应视频的记录;

删除单元,用于基于索引记录中的主键标识,对数据库中与所述主键标识对应的播放记录和所述播放记录对应的主键标识进行删除;

判断单元,用于判断预设的预存储队列中是否存在满足预设存储规则的元素;其中,所述预存储队列中预先写入待存储播放记录的元素;

第二获取单元,用于若所述预存储队列中存在满足所述预设存储规则的元素,则获取所述预存储队列中满足所述预设存储规则的元素;

第三获取单元,用于获取缓存中与第一目标元素对应的播放记录;其中,所述第一目标元素为满足所述预设存储规则的元素;

写入单元,用于将与所述第一目标元素对应的播放记录写入所述数据库中,并生成所述播放记录的主键标识。

9.一种存储介质,其特征在于,所述存储介质存储有指令集,其中,所述指令集被处理器执行时实现如权利要求1‑7任意一项所述的播放记录入库方法。

10.一种电子设备,其特征在于,包括:

存储器,用于存储至少一组指令集;

处理器,用于执行所述存储器中存储的指令集,通过执行所述指令集实现如权利要求

1‑7任意一项所述的播放记录入库方法。

说明书 :

一种播放记录入库方法及装置、存储介质及电子设备

技术领域

[0001] 本申请涉及视频播放技术领域,尤其涉及一种播放记录入库方法及装置、存储介质及电子设备。

背景技术

[0002] 播放记录用于记录用户的播放进度。在用户观看视频时,视频网站会将用户产生的播放记录写入缓存,以方便用户断点续播。
[0003] 由于缓存的容量及稳定性不如传统型数据库,故在播放记录记录入缓存的同时,同步播放记录至数据库,以备缓存数据丢失后可从数据库中进行恢复。然而,由于播放记录的特殊性,即同视频播放记录仅保留一条,因此,需要频繁的对数据库进行操作,例如,用户观看一个1h的视频,每10s触发一次上报,则正常观看完该视频需要上报360次,需要对数据库进行720次左右操作(删除原有播放记录,插入新播放记录)。因此,当同时活跃用户过多时,对数据库的吞吐性能产生压力,从而导致数据库崩溃,进而影响视频的播放,降低用户体验。

发明内容

[0004] 本申请提供了一种播放记录入库方法及装置、存储介质及电子设备,目的在于解决现有的播放记录入库方案对数据库的吞吐性能产生压力,从而导致数据库崩溃,进而影响视频的播放,降低用户体验的问题。
[0005] 为了实现上述目的,本申请提供了以下技术方案:
[0006] 一种播放记录入库方法,包括:
[0007] 在预设的定时任务触发后,获取预设的预删除列表中的索引记录,其中,所述预删除列表中预先写入待删除播放记录的索引记录;
[0008] 基于索引记录中的主键标识,对数据库中与所述主键标识对应的播放记录和所述播放记录对应的主键标识进行删除;
[0009] 判断预设的预存储队列中是否存在满足预设存储规则的元素;其中,所述预存储队列中预先写入待存储播放记录的元素;
[0010] 若所述预存储队列中存在满足所述预设存储规则的元素,则获取所述预存储队列中满足所述预设存储规则的元素;
[0011] 获取缓存中与第一目标元素对应的播放记录;其中,所述第一目标元素为满足所述预设存储规则的元素;
[0012] 将与所述第一目标元素对应的播放记录写入所述数据库中,并生成所述播放记录的主键标识。
[0013] 上述的方法,可选的,所述预存储队列中预先写入待存储播放记录的元素的过程,包括:
[0014] 在用户产生播放记录后,获取当前播放记录、以及所述当前播放记录的产生时间;
[0015] 将所述当前播放记录确定为待存储播放记录,并对所述待存储播放记录执行第一操作;
[0016] 所述第一操作包括:
[0017] 判断所述预存储队列中是否存在第二目标元素;所述第二目标元素为与所述用户的用户标识和所述待存储播放记录的视频标识均对应的元素;
[0018] 若所述预存储队列中存在第二目标元素,则将所述第二目标元素移动至所述预存储队列的队尾,并基于所述待存储播放记录的产生时间,对所述第二目标元素的上报时间进行更新;
[0019] 若所述预存储队列中不存在第二目标元素,则基于所述用户的用户标识和所述待存储播放记录的视频标识,生成元素,并将所生成的元素写入至所述预存储队列中,基于所述待存储播放记录的产生时间,设置所写入的元素的上报时间。
[0020] 上述的方法,可选的,所述对所述待存储播放记录执行第一操作之后,还包括:
[0021] 将所述待存储播放记录写入缓存中;
[0022] 判断预设的数据字典中是否存在第一目标播放记录;其中,所述第一目标播放记录为所述数据字典包括的所述用户关联的播放记录中与所述待存储播放记录归属于同一视频的播放记录;
[0023] 若所述数据字典中存在第一目标播放记录,则将所述缓存中与所述第一目标播放记录对应的播放记录进行删除,并执行第二操作;
[0024] 若所述数据字典中不存在第一目标播放记录,则判断预设的数据字典中是否存在第二目标播放记录;其中,所述第二目标播放记录为所述数据字典包括的所述用户关联的播放记录中与所述待存储播放记录归属于同一视频专辑的播放记录;
[0025] 若所述数据字典中存在第二目标播放记录,则将所述预存储队列中与所述第二目标播放记录对应的元素进行删除,并将所述缓存中与所述第二目标播放记录对应的播放记录进行删除,并执行所述第二操作;
[0026] 所述第二操作包括:
[0027] 判断预设的预删除列表中是否存在目标索引记录;所述目标索引记录为所述用户对应的与所述待存储播放记录归属于同一视频或同一视频专辑的索引记录;
[0028] 若所述预删除列表中不存在目标索引记录,则查找数据库中与所述第一目标播放记录或所述第二目标播放记录对应播放记录的主键标识;
[0029] 基于所述用户的用户标识、所述待存储播放记录对应视频的视频标识和主键标识和所述主键标识,生成索引记录,并将所生成的索引记录写入所述预删除列表中。
[0030] 上述的方法,可选的,所述将所述待存储播放记录写入缓存中,包括:
[0031] 判断缓存中是否存在与所述用户关联的播放记录;
[0032] 若所述缓存中不存在与所述用户关联的播放记录,则将数据库中与所述用户关联的播放记录同步至所述缓存中,并将所述待存储播放记录写入所述缓存中;
[0033] 若所述缓存中存在与所述用户关联的播放记录,将所述待存储播放记录写入所述缓存中。
[0034] 上述的方法,可选的,所述判断预设的预存储队列中是否存在满足预设存储规则的元素,包括:
[0035] 针对预设的预存储队列中的每个元素,对所述元素的上报时间与当前时间进行计算,得到计算值,判断所述计算值是否大于预设阈值,若所述计算值大于预设阈值,则确定所述元素满足预设存储规则,若所述计算值不大于预设阈值,则确定所述元素不满足预设存储规则。
[0036] 上述的方法,可选的,所述预删除列表中还可以预先写入与删除请求对应的播放记录的索引记录;所述删除请求用于请求删除播放记录。
[0037] 上述的方法,可选的,所述预删除列表中预先写入与删除请求对应的播放记录的缩索引记录的过程,包括:
[0038] 接收用户的删除请求;
[0039] 将缓存中与所述删除请求中的播放记录进行删除;
[0040] 判断所述预删除列表中是否存在与所述删除请求对应的索引记录;
[0041] 若所述预删除列表中不存在与所述删除请求对应的索引记录,则查找数据库中与所述删除请求对应的播放记录、以及对应播放记录的主键标识;
[0042] 基于与所述删除请求对应的播放记录、以及对应播放记录的主键标识,生成所述删除请求对应播放记录的索引记录,并将所述删除请求对应播放记录的索引记录写入所述预删除列表中。
[0043] 一种播放记录入库装置,包括:
[0044] 第一获取单元,用于在预设的定时任务触发后,获取预设的预删除列表中的索引记录,其中,所述预删除列表中预先写入待删除播放记录的索引记录;
[0045] 删除单元,用于基于索引记录中的主键标识,对数据库中与所述主键标识对应的播放记录和所述播放记录对应的主键标识进行删除;
[0046] 判断单元,用于判断预设的预存储队列中是否存在满足预设存储规则的元素;其中,所述预存储队列中预先写入待存储播放记录的元素;
[0047] 第二获取单元,用于若所述预存储队列中存在满足所述预设存储规则的元素,则获取所述预存储队列中满足所述预设存储规则的元素;
[0048] 第三获取单元,用于获取缓存中与第一目标元素对应的播放记录;其中,所述第一目标元素为满足所述预设存储规则的元素;
[0049] 写入单元,用于将与所述第一目标元素对应的播放记录写入所述数据库中,并生成所述播放记录的主键标识。
[0050] 一种存储介质,所述存储介质存储有指令集,其中,所述指令集被处理器执行时实现如上述的播放记录入库方法。
[0051] 一种电子设备,包括:
[0052] 存储器,用于存储至少一组指令集;
[0053] 处理器,用于执行所述存储器中存储的指令集,通过执行所述指令集实现如上述的播放记录入库方法。
[0054] 与现有技术相比,本申请包括以下优点:
[0055] 本申请提供了一种播放记录入库方法及装置、存储介质及电子设备,该方法通过预设预存储队列和预删除列表,将待删除播放记录的索引记录写入至预删除列表中,将待储播放记录的元素写入至预存储队列中,在定时任务触发后,才基于预删除列表的索引记录中的主键标识,对数据库中与主键标识对应的播放记录进行删除,并基于预存储队列中满足预设存储规则的元素,将缓存中与满足预设存储规则的元素对应播放记录写入数据库中。而不是在写入在播放记录记录入缓存的同时,同步播放记录至数据库,从而解决了对数据库的吞吐性能产生压力,导致数据库崩溃,影响视频的播放,降低用户体验的问题。

附图说明

[0056] 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0057] 图1为本申请提供的一种播放记录入库方法的方法流程图;
[0058] 图2为本申请提供的一种播放记录入库方法的又一方法流程图;
[0059] 图3为本申请提供的一种播放记录入库方法的又一方法流程图;
[0060] 图4为本申请提供的一种播放记录入库方法的又一方法流程图;
[0061] 图5为本申请提供的一种播放记录入库方法的又一方法流程图;
[0062] 图6为本申请提供的一种播放记录入库方法的又一方法流程图;
[0063] 图7为本申请提供的一种播放记录入库方法的示例图;
[0064] 图8为本申请提供的一种播放记录入库装置的结构示意图;
[0065] 图9为本申请提供的一种电子设备的结构示意图。

具体实施方式

[0066] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0067] 本申请可用于众多通用或专用的计算装置环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器装置、包括以上任何装置或设备的分布式计算环境等等。
[0068] 本发明实施例提供了一种播放记录入库方法,该方法可以应用在视频播放系统,所述方法的方法流程图如图1所示,具体包括:
[0069] S101、在预设的定时任务触发后,获取预设的预删除列表中的索引记录。
[0070] 本实施例中,预设预存储队列和预删除列表,其中,预存储队列用于写入待存储播放记录的元素,元素包括待写入数据库的播放记录的相关信息,示例性的,元素为用户标识和视频标识,其中,用户标识用于唯一标识用户,视频标识用于唯一标识视频;预删除列表用于写入待删除播放记录的索引记录,可选的,索引记录包括数据库中待删除的播放记录的相关信息,示例性的,索引记录为键值对,其中,键为用户标识+视频标识,值为待删除播放记录的主键标识。
[0071] 本实施例中,参阅图2,预存储队列中预先写入待存储播放记录的元素的过程,具体包括以下步骤:
[0072] S201、在用户产生播放记录后,获取当前播放记录、以及当前播放记录的产生时间。
[0073] 本实施例中,在用户产生播放记录后,获取当前播放记录、以及播放记录的产生时间,其中,当前播放记录也就是用户当前产生的播放记录。
[0074] S202、将当前播放记录确定为待存储播放记录,并对待存储播放记录执行第一操作。
[0075] 本实施例中,将当前播放记录确定为待存储播放记录,并对待存储播放记录执行第一操作。
[0076] 参阅图3,对待存储播放记录执行第一操作的过程,具体包括以下步骤:
[0077] S301、判断预存储队列中是否存在第二目标元素,若是,执行S302,若否,执行S303。
[0078] 本实施例中,判断预存储队列中是否存在第二目标元素,其中,第二目标元素为与用户的用户标识和待存储播放记录的视频标识均对应的元素。也就是判断预存储队列中是否存储与用户的用户标识和待存储播放记录的视频标识均对应的元素。
[0079] S302、将第二目标元素移动至预存储队列的队尾,并基于待存储播放记录的产生时间,对第二目标元素的上报时间进行更新。
[0080] 本实施例中,若预存储队列中存在第二目标元素,则说明该用户一直观看同一视频,因此,无需再生成新的元素,直接将第二目标元素移动至元存储队列的队尾,并基于待存储播放记录的产生时间,对第二目标元素的上报时间进行更新。
[0081] 需要说明的,预存储队列中的各个元素按照上报时间进行排列。
[0082] 基于待存储播放记录的产生时间,对第二目标元素的上报时间进行更新的过程,具体为,将第二目标元素的上报时间变更为待存储播放记录的产生时间。
[0083] S303、基于用户的用户标识和待存储播放记录的视频标识,生成元素,并将所生成的元素写入至预存储队列中,基于待存储播放记录的产生时间,设置所写入的元素的上报时间。
[0084] 本实施例中,若预存储队列中存在第二目标元素,则说明该用户至少间隔预设时间未观看待存储播放记录对应的视频,其中,预设时间为定时任务的触发周期。
[0085] 本实施中,若预存储队列中不存在第二目标元素,则生成元素,并将所生成的元素写入至预存储队列中,以及基于待存储播放记录的产生时间,设置所写入元素的上报时间。
[0086] 其中,生成元素的过程,具体包括,将用户的用户标识和待存储播放记录对应视频的视频标识,组成元素。
[0087] 其中,将所生成的元素写入至预存储队列中,具体的,将所生成的元素写入至预存储队列中的队尾。
[0088] 其中,基于待存储播放记录的产生时间,设置所写入的元素的上报时间的过程,具体包括:在预存储队列中,将待存储播放记录的产生时间设置为所生成元素的上报时间。
[0089] 本实施例中,参阅图4,在步骤S202之后,还可以包括以下步骤:
[0090] S401、将待存储播放记录写入缓存中。
[0091] 本实施例中,将待存储播放记录写入至缓存中。
[0092] 具体的,将待存储播放记录写入至缓存中的过程,包括以下步骤:
[0093] 判断缓存中是否存在与用户关联的播放记录;
[0094] 若所述缓存中不存在与用户关联的播放记录,则将数据库中与用户关联的播放记录同步至缓存中,并将待存储播放记录写入缓存中;
[0095] 若缓存中存在与用户关联的播放记录,将待存储播放记录写入缓存中。
[0096] 本实施例中,在步骤S202之后,判断缓存中是否存在与用户关联的播放记录,若缓存中不存在与用户关联的播放记录,则说明该用户可能长时间未登陆目标视频应用程序,缓存中信息被清除,或者,说明该用户是目标视频应用程序的新用户。
[0097] 本实施例中,在缓存中不存在与用户关联的播放记录的情况下,若数据库中存在与该用户关联的播放记录,则将数据库中与用户关联的播放记录同步至缓存中,并将待存储播放记录写入缓存中。
[0098] 本实施例中,若缓存中存在与用户关联的播放记录,或在缓存中不存在与用户关联的播放记录的情况下,数据库中同样不存在与用户关联的播放记录,则直接将待存储播放记录写入缓存中。
[0099] S402、判断预设的数据字典中是否存在第一目标播放记录,若是,执行S403,若否,执行S404。
[0100] 本实施例中,判断预设的数据字典中是否存在第一目标播放记录,其中,第一目标播放记录为数据字典包括的用户关联的播放记录中与待存储播放记录归属于同一视频的播放记录,也就是判断数据字典中是否存在与该用户对应的,且与待存储播放视频归属于同一视频的播放记录。
[0101] S403、将缓存中与第一目标播放记录对应的播放记录进行删除,并执行第二操作。
[0102] 本实施例中,若数据字典中存在第一目标播放记录,则将缓存中与第一目标播放记录对应的播放记录进行删除,并执行第二操作。
[0103] 参阅图5,第二操作包括以下步骤:
[0104] S501、判断预设的预删除列表中是否存在目标索引记录,若否,直接结束,若是,执行S502。
[0105] 本实施例中,判断预设的预删除列表中是否存在目标索引记录,其中,目标索引记录为用户对应的与待存储播放记录归属于同一视频或同一视频专辑的索引记录。
[0106] 具体的,基于用户的用户标识和待存储播放记录对应视频的视频标识,与预删除列表中各个索引记录进行匹配,若预删除列表中存在与用户标识和待存储播放记录对应视频的视频标识均匹配索引记录,则确定预删除列表中存在目标索引记录,否则,确定预删除列表中不存在目标索引记录。
[0107] 本实施例中,若预删除列表中存在目标索引记录,则说明数据库中待删除的播放记录的主键标识已被记录至预删除列表中,若预删除列表中不存在目标索引记录,则说明数据库中待删除的播放记录的主键标识未被记录至预删除列表中,或数据库中不存在待删除的播放记录。
[0108] S502、查找数据库中与第一目标播放记录或第二目标播放记录对应播放记录的主键标识。
[0109] 本实施例中,若预删除列表中存在目标索引记录,则基于第一目标播放记录或第二目标播放记录,查找数据库中与第一目标播放记录或第二目标播放记录对应播放记录的主键标识。
[0110] S503、基于用户的用户标识、待存储播放记录对应视频的视频标识和主键标识,生成索引记录,并将所生成的索引记录写入预删除列表中。
[0111] 本实施例中,在查找到与第一目标播放记录或第二目标播放记录对应播放记录的主键标识的情况下,基于用户的用户标识、待存储播放记录对应视频的视频标识和主键标识,生成索引记录,具体的,将用户标识和待存储播放记录对应视频的视频标识作为待生成索引记录的键,将所查找到的主键标识作为待生成索引记录的值,基于待生成索引记录的键和值,生产成索引记录。
[0112] 本实施例中,将所生成的索引记录写入至预删除列表中。
[0113] S404、判断预设的数据字典中是否存在第二目标播放记录,若是,执行S405,若否,直接结束。
[0114] 本实施例中,判断预设的数据字典中是否存在第二目标播放记录,其中,第二目标播放记录为数据字典包括的用户关联的播放记录中与待存储播放记录归属于同一视频专辑的播放记录。
[0115] 本实施例中,若预设的数据字典中不存在第二目标播放记录,则直接结束。
[0116] S405、将预存储队列中与第二目标播放记录对应的元素进行删除,并将缓存中与第二播放记录对应的播放记录进行删除,并执行第二操作。
[0117] 本实施例中,若数据字典中存在第二目标播放记录,则将预存储队列中与第二目标播放记录对应的元素进行删除,并将缓存中与第二播放记录对应的播放记录进行删除,并执行第二操作。
[0118] 其中,执行第二操作的具体过程如实施例图5所示的各个步骤,此处不再赘述。
[0119] 本申请实施例中提供的播放记录方法中,预设定时任务,在预设的定时任务触发后,获取预设的预删除列表中的索引记录,具体的,获取预删除列表中的所有索引记录。
[0120] S102、基于索引记录中的主键标识,对数据库中与主键标识对应的播放记录和播放记录对应的主键标识进行删除。
[0121] 本实施例中,基于索引记录中的主键标识,对数据库中与主键标识对应的播放记录,和该播放记录对应的主键标识进行删除。
[0122] 本实施例中,基于索引记录中的主键标识,对数据库中与主键标识对应的播放记录,和该播放记录对应的主键标识进行删除,可以提高删除效率。
[0123] S103、判断预设的预存储队列中是否存在满足预设存储规则的元素,若否,直接结束,若是,执行S104。
[0124] 判断预设的预存储队列中是否存在满足预设存储规则的元素。
[0125] 具体的,针对预设的预存储队列中的每个元素,对元素的上报时间与当前时间进行计算,得到计算值,判断计算值是否大于预设阈值,若计算值大于预设阈值,则确定元素满足预设存储规则,若计算值不大于预设阈值,则确定元素不满足预设存储规则。
[0126] 可选的,对元素的上报时间与当前时间进行计算过程可以是,计算当前时间与上报时间的时间差。
[0127] 示例性的,预设阈值可以是5分钟。
[0128] 本实施例中,若预存储队列中是否不存在满足预设存储规则的元素,则直接结束。
[0129] S104、获取预存储队列中满足预设存储规则的元素。
[0130] 本实施例中,获取预存储队列中满足预设存储规则的元素,也就是将满足预设存储规则的元素从预存储队列中提取出来。
[0131] S105、获取缓存中与第一目标元素对应的播放记录;其中,第一目标元素为满足预设存储规则的元素。
[0132] 本实施例中,获取缓存中与第一目标元素对应的播放记录,其中,第一目标元素为满足预设存储规则的元素。
[0133] 也就是说,获取缓存中与满足预设存储规则的元素对应的播放记录。
[0134] 具体的,基于第一目标元素包括的用户标识和视频标识,查找缓存中与该用户标识和视频标识均对应的播放记录。
[0135] S106、将与第一目标元素对应的播放记录写入数据库中,并生成播放记录的主键标识。
[0136] 本实施例中,将与第一目标元素对应的播放记录写入数据库中,并在数据库中生成该播放记录的主键标识。
[0137] 本申请实施例提供的播放记录入库方法,通过预设预存储队列和预删除列表,将待删除播放记录的索引记录写入至预删除列表中,将待储播放记录的元素写入至预存储队列中,在定时任务触发后,才基于预删除列表的索引记录中的主键标识,对数据库中与主键标识对应的播放记录进行删除,并基于预存储队列中满足预设存储规则的元素,将缓存中与满足预设存储规则的元素对应播放记录写入数据库中。而不是在写入在播放记录记录入缓存的同时,同步播放记录至数据库,从而解决了对数据库的吞吐性能产生压力,导致数据库崩溃,影响视频的播放,降低用户体验的问题。
[0138] 本申请实施例提供的播放记录入库方法,通过引入队列的形式,将实时入库的播放记录进行智能筛选,实现在用户观看结束后再进行入库,大大减少了对数据库的操作频率,降低了数据库的压力,提高了系统的健壮性和可容灾性能。
[0139] 本申请实施例提供的播放记录入库方法,预删除列表中还可以预先写入与删除请求对应的播放记录的索引记录;删除请求用于请求删除播放记录。
[0140] 参阅图6,预删除列表中预先写入与删除请求对应的播放记录的索引记录的过程,具体包括以下步骤:
[0141] S601、获取用户的删除请求。
[0142] S602、将缓存中与删除请求对应的播放记录进行删除。
[0143] 本实施例中,查找缓存中与删除请求对应的播放记录,并将缓存中与删除请求对应的播放记录进行删除。
[0144] S603、判断预删除列表中是否存在与删除请求对应的索引记录,若是,直接结束,若否,执行S604。
[0145] S604、查找数据库中与删除请求对应的播放记录、以及对应播放记录的主键标识。
[0146] 本实施例中,若预存储列表中不存在与删除请求对应的播放记录,则查找数据库中与删除请求对应的播放记录、以及对应播放记录的主键标识。
[0147] S605、基于与删除请求对应的播放记录、以及对应播放记录的主键标识,生成删除请求对应播放记录的索引记录,并将删除请求对应播放记录的索引记录写入预删除列表中。
[0148] 本实施例中,基于与删除请求对应的播放记录、以及对应播放记录的主键标识,生成删除请求对应播放记录的索引记录,具体的,将与删除请求对应的播放记录对应视频的视频标识和该用户的用户标识作为待生成索引记录的键,将对应播放记录的主键标识作为待生成索引记录的值。基于待生成索引记录的键和值,生成删除请求对应播放记录的索引记录。其中,索引记录为键值对。
[0149] 本实施例中,将删除请求对应播放记录的索引记录写入预删除列表中。
[0150] 本申请实施例提供的播放记录入库方法,对用户主动删除的播放记录,同样在待删除列表中进行记录,减少实时操作数据库,以提高数据库响应效率。
[0151] 对本申请实施例提及的播放记录入库方法进行举例说明如下:
[0152] 1、增加一个预存储队列,预存储队列中各元素为播放记录相关信息(如用户id,上报的视频id等),预存储队列中各元素以上报时间排序,最新上报元素放在队尾,如图7中的a所示。元素5为最新上报的元素,因此,元素5放在预存储队列的队尾。
[0153] 2、若预存储队列中存储当前播放记录对应的元素,基于当前播放记录的产生时间,对该元素的上报时间进行更新,由于上报时间被更新,故该元素被移至队尾,如图7中的b所示,元素2是当前播放记录对应的元素,被移至队尾。
[0154] 3、因播放记录的特点,同一视频仅保留最新一条播放记录。故针对库中已存在的播放记录,在用户再次观看时,需对库中记录进行删除。故增加待删除列表。
[0155] 4、用户产生播放记录后,先看待删除列表中是否有该视频的记录(即为上述提及的索引记录),有则不重复添加,没有则将数据库中原有该视频的播放记录的主键id(即为上述提及的主键标识)进行记录入待删除列表,以避免实时操作数据库进行删除。
[0156] 5、对用户主动删除的播放记录,同样在待删除字典中进行记录,减少实时操作数据库,以提高接口响应效率。
[0157] 6、增加定时任务,定时从预存储队列中取出额定时间(如5min)前的所有元素(例:14:00执行定时任务,取出队列13:55前的元素,即取出元素,再13:55后无上报)。
[0158] 7、针对取出的元素,从缓存中获取该元素的播放记录进行入库操作。
[0159] 8、取出待删除字典中的所有索引记录,根据索引记录的主键id(即为上述提及的主键标识),对数据库中相应播放记录进行批量删除。
[0160] 需要说明的是,虽然采用特定次序描绘了各指令,但是这不应当理解为要求这些指令以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。
[0161] 应当理解,本申请公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本申请公开的范围在此方面不受限制。
[0162] 与图1所述的方法相对应,本申请实施例还提供了一种播放记录入库装置,用于对图1中方法的具体实现,其结构示意图如图8所示,具体包括:
[0163] 第一获取单元801,用于在预设的定时任务触发后,获取预设的预删除列表中的索引记录,其中,所述预删除列表中预先写入待删除播放记录的索引记录;
[0164] 删除单元802,用于基于索引记录中的主键标识,对数据库中与所述主键标识对应的播放记录和所述播放记录对应的主键标识进行删除;
[0165] 判断单元803,用于判断预设的预存储队列中是否存在满足预设存储规则的元素;其中,所述预存储队列中预先写入待存储播放记录的元素;
[0166] 第二获取单元804,用于若所述预存储队列中存在满足所述预设存储规则的元素,则获取所述预存储队列中满足所述预设存储规则的元素;
[0167] 第三获取单元805,用于获取缓存中与第一目标元素对应的播放记录;其中,所述第一目标元素为满足所述预设存储规则的元素;
[0168] 写入单元806,用于将与所述第一目标元素对应的播放记录写入所述数据库中,并生成所述播放记录的主键标识。
[0169] 本申请实施例提供的播放记录入库装置,通过预设预存储队列和预删除列表,将待删除播放记录的索引记录写入至预删除列表中,将待储播放记录的元素写入至预存储队列中,在定时任务触发后,才基于预删除列表的索引记录中的主键标识,对数据库中与主键标识对应的播放记录进行删除,并基于预存储队列中满足预设存储规则的元素,将缓存中与满足预设存储规则的元素对应播放记录写入数据库中。而不是在写入在播放记录记录入缓存的同时,同步播放记录至数据库,从而解决了对数据库的吞吐性能产生压力,导致数据库崩溃,影响视频的播放,降低用户体验的问题。
[0170] 在本申请的一个实施例中,基于前述方案,判断单元803在所述预存储队列中预先写入待存储播放记录的元素的过程时,具体用于:
[0171] 在用户产生播放记录后,获取当前播放记录、以及所述当前播放记录的产生时间;
[0172] 将所述当前播放记录确定为待存储播放记录,并对所述待存储播放记录执行第一操作;
[0173] 所述第一操作包括:
[0174] 判断所述预存储队列中是否存在第二目标元素;所述第二目标元素为与所述用户的用户标识和所述待存储播放记录的视频标识均对应的元素;
[0175] 若所述预存储队列中存在第二目标元素,则将所述第二目标元素移动至所述预存储队列的队尾,并基于所述待存储播放记录的产生时间,对所述第二目标元素的上报时间进行更新;
[0176] 若所述预存储队列中不存在第二目标元素,则基于所述用户的用户标识和所述待存储播放记录的视频标识,生成元素,并将所生成的元素写入至所述预存储队列中,基于所述待存储播放记录的产生时间,设置所写入的元素的上报时间。
[0177] 在本申请的一个实施例中,基于前述方案,判断单元803在所述预存储队列中预先写入元素的过程时,还用于:
[0178] 将所述待存储播放记录写入缓存中;
[0179] 判断预设的数据字典中是否存在第一目标播放记录;其中,所述第一目标播放记录为所述数据字典包括的所述用户关联的播放记录中与所述待存储播放记录归属于同一视频的播放记录;
[0180] 若所述数据字典中存在第一目标播放记录,则将所述缓存中与所述第一目标播放记录对应的播放记录进行删除,并执行第二操作;
[0181] 若所述数据字典中不存在第一目标播放记录,则判断预设的数据字典中是否存在第二目标播放记录;其中,所述第二目标播放记录为所述数据字典包括的所述用户关联的播放记录中与所述待存储播放记录归属于同一视频专辑的播放记录;
[0182] 若所述数据字典中存在第二目标播放记录,则将所述预存储队列中与所述第二目标播放记录对应的元素进行删除,并将所述缓存中与所述第二目标播放记录对应的播放记录进行删除,并执行所述第二操作;
[0183] 所述第二操作包括:
[0184] 判断预设的预删除列表中是否存在目标索引记录;所述目标索引记录为所述用户对应的与所述待存储播放记录归属于同一视频或同一视频专辑的索引记录;
[0185] 若所述预删除列表中不存在目标索引记录,则查找数据库中与所述第一目标播放记录或所述第二目标播放记录对应播放记录的主键标识;
[0186] 基于所述用户的用户标识、所述待存储播放记录对应视频的视频标识和主键标识和所述主键标识,生成索引记录,并将所生成的索引记录写入所述预删除列表中。
[0187] 在本申请的一个实施例中,基于前述方案,判断单元803在将所述待存储播放记录写入缓存中时,具体用于:
[0188] 判断缓存中是否存在与所述用户关联的播放记录;
[0189] 若所述缓存中不存在与所述用户关联的播放记录,则将数据库中与所述用户关联的播放记录同步至所述缓存中,并将所述待存储播放记录写入所述缓存中;
[0190] 若所述缓存中存在与所述用户关联的播放记录,将所述待存储播放记录写入所述缓存中。
[0191] 在本申请的一个实施例中,基于前述方案,判断单元803在判断预设的预存储队列中是否存在满足预设存储规则的元素时,具体用于:
[0192] 针对预设的预存储队列中的每个元素,对所述元素的上报时间与当前时间进行计算,得到计算值,判断所述计算值是否大于预设阈值,若所述计算值大于预设阈值,则确定所述元素满足预设存储规则,若所述计算值不大于预设阈值,则确定所述元素不满足预设存储规则。
[0193] 在本申请的一个实施例中,基于前述方案,所述预删除列表中还可以预先写入与删除请求对应的播放记录的索引记录;所述删除请求用于请求删除播放记录。
[0194] 在本申请的一个实施例中,基于前述方案,第一获取单元801在所述预删除列表中预先写入与删除请求对应的播放记录的索引记录的过程时,具体用于:
[0195] 接收用户的删除请求;
[0196] 将缓存中与所述删除请求中的播放记录进行删除;
[0197] 判断所述预删除列表中是否存在与所述删除请求对应的索引记录;
[0198] 若所述预删除列表中不存在与所述删除请求对应的索引记录,则查找数据库中与所述删除请求对应的播放记录、以及对应播放记录的主键标识;
[0199] 基于与所述删除请求对应的播放记录、以及对应播放记录的主键标识,生成所述删除请求对应播放记录的索引记录,并将所述删除请求对应播放记录的索引记录写入预删除列表中。
[0200] 本申请实施例还提供了一种存储介质,所述存储介质存储有指令集,其中,在所述指令集运行时执行如上文任一实施例公开的播放记录入库方法。
[0201] 本申请实施例还提供了一种电子设备,其结构示意图如图9所示,具体包括存储器901,用于存储至少一组指令集;处理器902,用于执行所述存储器中存储的指令集,通过执行所述指令集实现如上文任一实施例公开的播放记录入库方法。
[0202] 尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
[0203] 虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本申请公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
[0204] 以上描述仅为本申请公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。