数据缓存方法、电子设备及计算机可读介质.pdf

上传人:刘** 文档编号:10110183 上传时间:2021-06-04 格式:PDF 页数:18 大小:588.35KB
收藏 版权申诉 举报 下载
数据缓存方法、电子设备及计算机可读介质.pdf_第1页
第1页 / 共18页
数据缓存方法、电子设备及计算机可读介质.pdf_第2页
第2页 / 共18页
数据缓存方法、电子设备及计算机可读介质.pdf_第3页
第3页 / 共18页
文档描述:

《数据缓存方法、电子设备及计算机可读介质.pdf》由会员分享,可在线阅读,更多相关《数据缓存方法、电子设备及计算机可读介质.pdf(18页完成版)》请在专利查询网上搜索。

1、(19)中华人民共和国国家知识产权局 (12)发明专利申请 (10)申请公布号 (43)申请公布日 (21)申请号 202010995699.5 (22)申请日 2020.09.21 (71)申请人 北京新唐思创教育科技有限公司 地址 100144 北京市石景山区八大处高科 技园区内6-C号地3号楼118室 (72)发明人 王世院季云英彭守业王龙 (74)专利代理机构 北京合智同创知识产权代理 有限公司 11545 代理人 李杰兰淑铎 (51)Int.Cl. G06F 16/2455(2019.01) G06F 16/953(2019.01) (54)发明名称 数据缓存方法、 电子设备及计算机。

2、可读介质 (57)摘要 本发明实施例公开了一种数据缓存方法、 电 子设备及计算机可读介质: 首先获取待缓存数据 的第一数据量大小和待缓存数据所属的数据集 的第二数据量大小; 其次确定与第一数据量大小 和第二数据量大小对应的缓存阈值; 然后确定与 缓存阈值对应的缓存模式, 以通过对应的缓存模 式对包括待缓存数据的数据集进行数据缓存。 由 于缓存模式是基于待缓存数据的第一数据量大 小和待缓存数据所属的数据集的第二数据量大 小确定的, 因此可以针对不同的数据集确定适合 该数据集的缓存模式, 实现根据数据集自身的属 性智能的进行数据集的缓存分配, 并且设置了多 种不同的缓存模式以适应不同的缓存情况, 。

3、因此 可以合理的将数据集分配至不同层级的缓存中, 提高了整体的搜索性能。 权利要求书2页 说明书10页 附图5页 CN 111831699 A 2020.10.27 CN 111831699 A 1.一种数据缓存方法, 其特征在于, 所述方法包括: 获取待缓存数据的第一数据量大小和所述待缓存数据所属的数据集的第二数据量大 小; 确定与所述第一数据量大小和所述第二数据量大小对应的缓存阈值; 确定与所述缓存阈值对应的缓存模式, 以通过所述对应的缓存模式对包括所述待缓存 数据的数据集进行数据缓存; 其中, 缓存模式根据预设的多级缓存生成, 所述缓存模式包括多种, 每种缓存模式中包 括至少一级缓存。 。

4、2.根据权利要求1所述的方法, 其特征在于, 所述确定与所述第一数据量大小和所述第 二数据量大小对应的缓存阈值, 包括: 根据待进行缓存的设备的内存容量以及所述设备中的虚拟设备的内存容量中的至少 一者, 确定本地内存缓存对应的第一缓存阈值; 和/或, 根据所述设备的文件系统容量, 确定本地文件缓存对应的第二缓存阈值。 3.根据权利要求2所述的方法, 其特征在于, 所述确定与所述缓存阈值对应的缓存模 式, 包括: 若所述第一数据量大小小于所述第一缓存阈值, 且所述第二数据量大小小于所述第二 缓存阈值, 则确定与所述缓存阈值对应的缓存模式为第一缓存模式, 其中, 所述第一缓存模 式包括三级缓存; 。

5、和/或, 若所述第一数据量大小大于或等于所述第一缓存阈值, 或者, 所述第二数据量大小大 于或等于所述第二缓存阈值并小于预设的第三缓存阈值, 则确定与所述缓存阈值对应的缓 存模式为第二缓存模式; 其中, 所述第二缓存模式包括二级缓存; 和/或, 若所述第二数据量大小大于或等于预设的第三缓存阈值, 则确定与所述缓存阈值对应 的缓存模式为第三缓存模式; 其中, 所述第三缓存模式包括一级缓存; 其中, 所述预设的第三缓存阈值大于所述第二缓存阈值, 所述第二缓存阈值大于所述 第一缓存阈值。 4.根据权利要求3所述的方法, 其特征在于, 所述第一缓存模式包括的三级缓存包括: 本地内存缓存、 本地文件缓存。

6、和分布式缓存。 5.根据权利要求3所述的方法, 其特征在于, 所述第二缓存模式包括的二级缓存包括: 本地文件缓存和分布式缓存。 6.根据权利要求3所述的方法, 其特征在于, 所述第三缓存模式包括的一级缓存包括分 布式缓存。 7.根据权利要求1所述的方法, 其特征在于, 在所述获取待缓存数据的第一数据量大小 和所述待缓存数据所属的数据集的第二数据量大小之前, 还包括: 获取历史搜索数据的热度信息, 根据所述热度信息确定待缓存数据及所述待缓存数据 所属的数据集。 8.根据权利要求7所述的方法, 其特征在于, 所述获取历史搜索数据的热度信息, 根据 所述热度信息确定待缓存数据及所述待缓存数据所属的数。

7、据集, 包括: 收集历史搜索数据, 并计算所述历史搜索数据中搜索关键字的热度值; 权利要求书 1/2 页 2 CN 111831699 A 2 获取热度值高于预设热度值的多个搜索关键字以及其对应的多个数据; 将所述多个数据确定为多个待缓存数据, 根据所述多个待缓存数据构建所述数据集。 9.根据权利要求8所述的方法, 其特征在于, 所述计算所述历史搜索数据中搜索关键字 的热度值, 包括: 通过滑动窗口方式采集搜索关键字, 得到所述搜索关键字的命中次数; 根据所述搜索关键字的命中次数以及所述搜索关键字对应信息所属的数据集的预计 最大命中阈值, 获取所述搜索关键字的热度值。 10.根据权利要求9所述。

8、的方法, 其特征在于, 所述根据所述搜索关键字的命中次数以 及所述搜索关键字对应的数据集的预计最大命中阈值, 获取所述搜索关键字的热度值, 包 括: 根据公式, 获取所述搜索关键字的热度值; 其中, m为所述预计最 大命中阈值, n为所述命中次数。 11.根据权利要求7所述的方法, 其特征在于, 所述获取历史搜索数据的热度信息, 根据 所述热度信息确定待缓存数据及所述待缓存数据所属的数据集之后, 还包括: 对根据所述热度信息确定的待缓存数据, 及所述待缓存数据所属的数据集进行参数过 滤, 得到最终的待缓存数据及所述最终的待缓存数据所属的数据集。 12.根据权利要求1所述的方法, 其特征在于, 。

9、所述多级缓存至少包括本地缓存和分布 式缓存, 所述本地缓存包括本地内存缓存和本地文件缓存。 13.一种电子设备, 其特征在于, 所述设备包括: 一个或多个处理器; 计算机可读介质, 配置为存储一个或多个程序, 当所述一个或多个程序被所述一个或多个处理器执行, 使得所述一个或多个处理器实 现如权利要求1-12中任一项所述的数据缓存方法。 14.一种计算机可读介质, 其上存储有计算机程序, 其特征在于, 该程序被处理器执行 时实现如权利要求1-12中任一项所述的数据缓存方法。 权利要求书 2/2 页 3 CN 111831699 A 3 数据缓存方法、 电子设备及计算机可读介质 技术领域 0001。

10、 本发明实施例涉及数据处理技术领域, 尤其涉及一种数据缓存方法、 电子设备及 计算机可读介质。 背景技术 0002 随着互联网的发展, 人们已经习惯于通过搜索引擎查询自己想要获取的知识, 搜 索引擎每天可能接到成千上万的请求, 其中有很大一部分是重复的。 为了提高访问速度, 可 以将这部分重复请求的结果缓存起来, 使得下次请求访问该结果时, 无需从源数据库访问, 直接将缓存中的结果反馈给用户。 0003 相关技术中的全文搜索引擎包括elasticsearch, solr, google等, 它们可以从互 联网提取各个网站的信息, 建立起数据库, 并能检索与用户查询条件相匹配的记录, 然后按 一。

11、定的排列顺序返回结果。 它们虽然自身存在缓存, 但是由于对数据的缓存分配不合理, 会 发生内存溢出等问题, 影响整体搜索性能。 发明内容 0004 本发明提供了一种数据缓存方案, 以至少部分解决上述问题。 0005 根据本发明实施例的第一方面, 提供了一种数据缓存方法, 所述方法包括: 获取待 缓存数据的第一数据量大小和所述待缓存数据所属的数据集的第二数据量大小; 然后确定 与所述第一数据量大小和所述第二数据量大小对应的缓存阈值; 最后确定与所述缓存阈值 对应的缓存模式, 以通过所述对应的缓存模式对包括所述待缓存数据的数据集进行数据缓 存; 其中, 缓存模式根据预设的多级缓存生成, 所述缓存模。

12、式包括多种, 每种缓存模式中包 括至少一级缓存。 0006 根据本发明实施例的第二方面, 提供了一种电子设备, 所述设备包括: 一个或多个 处理器; 计算机可读介质, 配置为存储一个或多个程序, 当所述一个或多个程序被所述一个 或多个处理器执行, 使得所述一个或多个处理器实现如第一方面所述的数据缓存方法。 0007 根据本发明实施例的第三方面, 提供了一种计算机可读介质, 其上存储有计算机 程序, 该程序被处理器执行时实现如第一方面所述的数据缓存方法。 0008 根据本发明实施例提供的方案: 首先获取待缓存数据的第一数据量大小和所述待 缓存数据所属的数据集的第二数据量大小; 其次确定与所述第一。

13、数据量大小和所述第二数 据量大小对应的缓存阈值; 然后确定与所述缓存阈值对应的缓存模式, 以通过所述对应的 缓存模式对包括所述待缓存数据的数据集进行数据缓存。 本方案由于缓存模式的确定是基 于待缓存数据的第一数据量大小和所述待缓存数据所属的数据集的第二数据量大小确定 的, 因此, 可以针对不同的数据集确定适合该数据集的缓存模式, 实现根据数据集自身的属 性智能的进行数据集的缓存分配, 并且设置了多种不同的缓存模式以适应不同的缓存情 况, 因此可以合理的将数据集分配至不同层级的缓存中, 提高了整体的搜索性能, 同时也能 够避免由于数据集缓存不合理导致的内存溢出等问题。 说明书 1/10 页 4 。

14、CN 111831699 A 4 附图说明 0009 通过阅读参照以下附图所作的对非限制性实施例所作的详细描述, 本发明的其它 特征、 目的和优点将会变得更明显: 图1为本发明实施例提供的三级缓存的缓存架构示意图; 图2为根据本发明实施例一的一种数据缓存方法的步骤流程图; 图3为本发明实施例提供的智能多级缓存模型示意图; 图4为本发明实施例提供的人工配置多级缓存模型示意图; 图5为根据本发明实施例二的一种数据缓存方法的步骤流程图; 图6为本发明实施例提供一种数据缓存流程的示意图; 图7为根据本发明实施例三的一种电子设备的结构示意图。 具体实施方式 0010 下面结合附图和实施例对本发明作进一步。

15、的详细说明。 可以理解的是, 此处所描 述的具体实施例仅仅配置为解释相关发明, 而非对该发明的限定。 另外还需要说明的是, 为 了便于描述, 附图中仅示出了与有关发明相关的部分。 0011 需要说明的是, 在不冲突的情况下, 本发明中的实施例及实施例中的特征可以相 互组合。 下面将参考附图并结合实施例来详细说明本发明。 0012 为便于理解本发明实施例的数据缓存方案, 以下首先以三级缓存为例, 对本发明 实施例的缓存架构进行说明, 如图1所示, 业务端通过路由转发集群将待缓存数据及其数据 集进行不同级别的缓存。 示例性地, 第一层级缓存和第二层级缓存可设置于本地设备中, 图 中示意为 “服务集。

16、群” , 但本领域技术人员应当明了, 一个服务集群可以包括至少一台服务 设备如服务器等, 每个服务集群中的每台服务设备均可采用该种本地两级缓存设置, 当然 也可以仅有部分服务设备采用该种缓存设置, 基于此, 图1中的服务集群意指包括设置有该 种缓存设备的服务设备形成的集群。 其中, 第一层级缓存可以为本地内存缓存, 图中以 “jvm-cache” 示出; 第二层级缓存可以为本地文件缓存, 图中以 “file-cache” 示出。 而第三 层级缓存可以为分布式缓存。 在进行搜索时, 图中的搜索引擎例如可以是elasticsearch搜 索引擎, 其可以基于上述多级缓存和其对应的数据库进行搜索, 。

17、其中, 所述数据库可以采用 倒排索引的形式存储数据。 此外, 路由转发集群还可以实时收集历史搜索数据 (或者搜索日 志等) , 然后传输至日志收集系统flume, 然后通过kafka对收集的历史搜索数据进行实时计 算, 做搜索关键字命中分析, 以及搜索关键字的热度分析, 以为进行数据缓存提供依据。 0013 但需要说明的是, 以上仅为示例性说明, 在实际应用中还可以增加更多层级的缓 存, 例如, CDN缓存, 代理服务器缓存等。 0014 基于上述示例性架构, 下面结合多个实施例对本发明的数据缓存方案进行说明。 0015 实施例一 参照图2, 示出了根据本发明实施例一提供的一种数据缓存方法的步。

18、骤流程图。 0016 本实施例的数据缓存方法包括以下步骤: 步骤101、 获取待缓存数据的第一数据量大小和所述待缓存数据所属的数据集的第二 数据量大小。 0017 在本实施例中, 以数据存储方案是K-V型存储方案作为示例, 上述待缓存数据可以 说明书 2/10 页 5 CN 111831699 A 5 理解为搜索关键字key以及其对应的值value, 当有很多数量的key时, 并且这些key属于很 多个业务时, 可以根据业务类型的不同, 将key以及其对应的value构建为一个数据集。 可以 理解, 不同的业务类型可以对应不同的数据集, 因此可以获取数据集中待缓存数据的第一 数据量大小, 以及。

19、数据集的第二数据量大小, 进而可以基于这两个参数选择合适的缓存模 式。 0018 以业务类型为查询考试成绩为例, 若一个班级有50名同学, 则可以将50名同学中 每个学生的学号作为key, 每个学生的各科考试成绩作为value, 则待缓存数据的第一数据 量大小可以理解为某一个学生的key-value数据量大小, 所述待缓存数据所属的数据集的 第二数据量大小, 可以理解为包括该学生的50名学生的key-value数据量大小。 0019 步骤102、 确定与所述第一数据量大小和所述第二数据量大小对应的缓存阈值。 0020 在本实施例中, 可以根据待进行缓存的设备的容量情况对上述数据集中的待缓存 数。

20、据设置合适的缓存阈值。 0021 进一步地, 在一可选的实施方式中, 可以根据待进行缓存的设备的内存容量以及 所述设备中的虚拟设备的内存容量中的至少一者, 确定本地内存缓存对应的第一缓存阈 值; 和/或, 根据所述设备的文件系统容量, 确定本地文件缓存对应的第二缓存阈值。 0022 在本实施例中, 待进行缓存的设备可以是本地设备, 也可以是分布式缓存集群中 的设备, 本实施例不做限制。 在进行阈值设置时, 可以从以下几点考虑: 第一点: 可以基于当前待进行缓存的设备的内存大小, 进行本地内存缓存对应的第一 缓存阈值调整。 0023 作为一种示例, 可以将占用量最大值不超过待进行缓存的设备的可用。

21、内存的1/3 作为第一缓存阈值的上限。 举例而言, 若当前待进行缓存的设备内存大小为16G, 则设置第 一缓存阈值的最大值不超过16/3, 即, 当此时有多个内存占用量大约是0.05G的数据集需要 进行本地内存缓存时, 可以缓存100个这样的数据集。 可以理解, 该第一缓存阈值可以根据 实际情况进行设置。 第一缓存阈值还可以根据当前待进行缓存的设备的内存大小和该设备 中的JVM内存设置大小进行设置, 原理同上, 此处不再赘述。 其中, JVM内存为待进行缓存的 设备中的虚拟设备的内存容量。 0024 第二点: 基于当前待进行缓存的设备的文件系统容量, 确定本地文件缓存对应的 第二缓存阈值。 0。

22、025 作为一种示例, 考虑到系统文件中有日志等很多数据产生, 可以将占用量最大值 不超过待进行缓存的设备的系统文件容量大小的1/8, 作为第二缓存阈值的上限。 举例而 言, 若当前待进行缓存的设备的文件系统容量是200G, 则设置第二缓存阈值的最大值不超 过25, 即, 当此时有多个内存占用量大约是0.05G的数据集需要进行本地文件缓存时, 可以 缓存100个这样的数据集。 可以理解, 该第二缓存阈值同样也是可以根据实际情况进行设 置。 0026 在实际数据缓存过程中, 例如在虚拟设备的数据缓存过程中, 通常可以利用垃圾 收集机制 (Garbage Collection, GC) 自动监测所。

23、有正在使用的对象, 对内存中已死亡或长 久无使用的对象进行清除和回收, 从而实现内存的自动管理。 虚拟设备的内存包括年轻代 空间和老年代空间, GC在垃圾清理过程中会将数据量较大的对象直接分配到老年代空间, 若分配的数据量过大则容易造成老年代空间不足, 久而久之会造成fullGC, 因此待缓存数 说明书 3/10 页 6 CN 111831699 A 6 据的数据量大小超过一定的阈值时 (该阈值可以根据本地设备的属性进行设置) , 最好不进 行本地内存缓存, 而通过上述实施例可以根据待进行缓存的设备的容量情况, 对待缓存的 数据设置合适的缓存阈值, 通过该缓存阈值设置进行待缓存数据的合理分配,。

24、 不仅能够防 止内存溢出, 还能避免造成频繁的fullGC。 0027 步骤103、 确定与所述缓存阈值对应的缓存模式, 以通过所述对应的缓存模式对包 括所述待缓存数据的数据集进行数据缓存; 其中, 缓存模式根据预设的多级缓存生成, 所述 缓存模式包括多种, 每种缓存模式中包括至少一级缓存。 0028 在本实施例中, 如图3所示, 可以根据确定的缓存阈值, 基于步骤101中获取的所述 第一数据量大小和所述第二数据量大小, 选择对应的缓存模式。 可选地, 在所述第一数据量 大小和所述第二数据量大小的基础上, 还可以服务为维度 (图中以appid表示一个服务进 程) , 通过智能缓存选取器选择对应。

25、的缓存模式, 该缓存模式可以是预先根据多级缓存配置 好的缓存模式, 每种缓存模式中包括至少一个层级的缓存。 可选地, 上述多级缓存至少包括 本地缓存和分布式缓存, 所述本地缓存包括本地内存缓存和本地文件缓存。 0029 在本实施例中, 对待缓存数据进行多级缓存包括但不限于本地内存缓存和/或本 地文件缓存和/或分布式缓存, 例如还可以包括CDN缓存和/或代理服务器缓存等, 本实施例 不做限制。 0030 本实施例的本地内存缓存的优势是应用和Cache是在同一个进程内部, 请求缓存 非常快速, 没有过多的网络开销; 本地文件缓存相比于本地内存缓存容量会大一些, 但是请 求缓存速度会慢一些; 而分布。

26、式缓存中可以缓存更大容量的数据。 因此通过上述多级缓存 配置的缓存模式, 可以将适合放在本地内存中的数据缓存在本地内存中, 将数据量太大的 数据, 缓存在分布式缓存集群中, 能够实现合理的对待缓存的数据进行缓存。 0031 作为一种示例, 预先配置的缓存模式可以包括以下三种: 第一缓存模式可以包括三级缓存, 该三级缓存可以包括本地内存缓存、 本地文件缓存 和分布式缓存。 0032 第二缓存模式可以包括二级缓存, 该二级缓存可以包括本地文件缓存和分布式缓 存。 0033 第三缓存模式可以包括一级缓存, 该一级缓存可以包括分布式缓存。 0034 在本实施例中, 通过配置的第一缓存模式, 能够适合缓。

27、存待缓存数据的第一数据 量大小较小, 且待缓存数据所属的数据集的第二数据量大小较小的数据。 0035 通过配置的第二缓存模式, 能够适合缓存待缓存数据的第一数据量大小较大, 或 者待缓存数据所属的数据集的第二数据量大小较大的数据。 0036 通过配置的第三缓存模式, 能够适合待缓存数据所属的数据集的第二数据量大小 很大的数据。 0037 具体地, 参照图3, 若所述第一数据量大小小于所述第一缓存阈值, 且所述第二数 据量大小小于所述第二缓存阈值, 则确定与所述缓存阈值对应的缓存模式为第一缓存模 式, 其中, 所述第一缓存模式包括三级缓存; 和/或, 若所述第一数据量大小大于或等于所述 第一缓存。

28、阈值, 或者, 所述第二数据量大小大于或等于所述第二缓存阈值并小于预设的第 三缓存阈值, 则确定与所述缓存阈值对应的缓存模式为第二缓存模式; 其中, 所述第二缓存 模式包括二级缓存; 和/或, 若所述第二数据量大小大于或等于预设的第三缓存阈值, 则确 说明书 4/10 页 7 CN 111831699 A 7 定与所述缓存阈值对应的缓存模式为第三缓存模式; 其中, 所述第三缓存模式包括一级缓 存; 其中, 所述预设的第三缓存阈值大于所述第二缓存阈值, 所述第二缓存阈值大于所述第 一缓存阈值。 0038 举例而言, 上述步骤102获得的第一缓存阈值为16/3, 第二缓存阈值为25, 则, 若所 。

29、述第一数据量大小用 “Value(key)” 表示, 所述第二数据量大小用 “value(keys)” 表示, 则当 Value(key)16/3 & value(keys)25, 可以确定对应的缓存模式为第一缓存模式, 当 Value(key)16/3 | (value(keys)25 & value(keys)100, 可以确定对应的缓存模 式为第二缓存模式, 当value(keys)100, 可以确定对应的缓存模式为第三缓存模式。 其 中, 第三缓存阈值可以根据人工经验进行设置, 可以理解, 此处的100仅仅是作为一种示例。 0039 可选地, 还可以为第一缓存阈值以及第二缓存阈值配置默。

30、认值 (兜底策略) , 例如, 第一缓存阈值为1M, 第二缓存阈值为50M。 则当Value(key)1M & value(keys)1M | (value(keys)50M & value (keys)100M, 可以确定对应的缓存模式为第二缓存模式, 当value(keys)100M, 可以确定 对应的缓存模式为第三缓存模式。 此处的100M可以是根据缓存设备的文件系统容量大小的 1/4计算得到的。 0040 当还考虑服务维度时, 不同服务的阈值可以不同。 例如, 对于服务1来说, 其第一缓 存阈值为1M, 第二缓存阈值为50M; 而对于服务2来说, 其第一缓存阈值为2M, 第二缓存阈值 。

31、为70M, 等等, 具体设置可由本领域技术人员适当设置。 0041 上述实施例通过配置的三种智能缓存模式, 当获取的待缓存数据的第一数据量大 小较小, 且待缓存数据所属的数据集的第二数据量大小较小时, 可以确定对应的缓存模式 可以包括三级缓存。 当待缓存数据的第一数据量大小较大, 或者待缓存数据所属的数据集 的第二数据量大小较大时, 可以确定对应的缓存模式可以包括二级缓存。 当待缓存数据所 属的数据集的第二数据量大小很大时, 可以确定对应的缓存模式可以包括一级缓存。 即, 可 以通过上述三种智能缓存模式, 将适合缓存在本地内存的数据进行本地内存缓存, 将适合 缓存在本地文件系统的数据进行本地文。

32、件缓存, 将适合缓存在分布式集群中的数据进行分 布式缓存, 提高了数据缓存分配的合理性。 0042 本发明实施例提供的方案: 首先获取待缓存数据的第一数据量大小和所述待缓存 数据所属的数据集的第二数据量大小; 其次确定与所述第一数据量大小和所述第二数据量 大小对应的缓存阈值; 然后确定与所述缓存阈值对应的缓存模式, 以通过所述对应的缓存 模式对包括所述待缓存数据的数据集进行数据缓存。 本方案由于缓存模式的确定是基于待 缓存数据的第一数据量大小和所述待缓存数据所属的数据集的第二数据量大小确定的, 因 此, 可以针对不同的数据集确定适合该数据集的缓存模式, 实现根据数据集自身的属性智 能的进行数据。

33、集的缓存分配, 并且设置了多种不同的缓存模式 (每种缓存模式中包括至少 一级缓存) 以适应不同的缓存情况, 因此可以合理的将数据集分配至不同层级的缓存中, 提 高了整体的搜索性能, 同时也能够避免由于数据集缓存不合理导致的内存溢出等问题。 0043 可选地, 当发生特殊情况时, 例如出现内存溢出等情况时, 可以通过监听器进行报 警, 运维人员收到报警信息后, 可以调整缓存模式配置, 如调整本地内存缓存、 本地文件缓 存、 分布式缓存等各个层级的缓存的任意组合, 从而可以得到多种缓存模式, 如本地内存缓 存+分布式缓存模式等等。 缓存级数越多, 可配置的模式也越多, 如图4所示, 通过配置缓存 。

34、说明书 5/10 页 8 CN 111831699 A 8 模式的方式灵活性更高。 0044 本实施例的数据缓存方法可以由任意适当的具有数据处理能力的电子设备执行, 包括但不限于: 服务器、 移动终端 (如手机、 PAD等) 和PC机等。 0045 实施例二 在实施例一的步骤101之前, 可以先确定待缓存的数据及所述待缓存数据所属的数据 集, 包括图5所示的步骤。 图6为数据缓存流程的示意图, 下面结合图6对本方案进行详细的 描述。 0046 步骤201、 获取历史搜索数据的热度信息, 根据所述热度信息确定待缓存数据及所 述待缓存数据所属的数据集。 0047 在本实施例中, 历史搜索数据可以通。

35、过 “异步多线程打点” 的方式获得, 即, 可以通 过埋点的方式收集用户的历史搜索数据, 并回流到大数据库以进行热度信息分析, 根据分 析得到的热度信息, 确定待缓存数据及所述待缓存数据所属的数据集, 可以使得没有及时 出现在缓存中的热点数据能够及时暴露。 0048 具体地, 可以收集历史搜索数据, 并计算所述历史搜索数据中搜索关键字的热度 值; 然后获取热度值高于预设热度值的多个搜索关键字以及其对应的多个数据; 并将所述 多个数据确定为多个待缓存数据, 根据所述多个待缓存数据构建所述数据集。 0049 在本实施例中, 可以通过kafka系统先对收集到的历史搜索数据进行聚合或者加 工处理, 然。

36、后计算历史搜索数据中各个搜索关键字key的热度值。 预设热度值可以动态配 置, 例如, 满分值为100的话, 那么可以将预设热度值设置为95, 可以理解, 当历史搜索数据 中各个搜索关键字key的热度值有超出95的, 则可以确定其为热度关键字, 各个热度关键字 对应的数据即为热点数据, 可以将热度关键字以及其对应的热度数据, 确定为待缓存数据, 可选地, 可以将这些待缓存数据按照业务类型的不同, 构建为不同的数据集。 0050 上述实施例通过对历史搜索数据进行热度分析, 能够得到各个搜索关键字key的 热度值, 从而可以根据key的热度值确定热度数据value, 进而可以把没有及时出现在缓存 。

37、中的热点数据拉取到缓存中, 提高了缓存的命中率。 0051 可选地, 可以通过以下方式计算所述历史搜索数据中搜索关键字的热度值: 通过 滑动窗口方式采集搜索关键字, 得到所述搜索关键字的命中次数; 然后根据所述搜索关键 字的命中次数以及所述搜索关键字对应信息所属的数据集的预计最大命中阈值, 获取所述 搜索关键字的热度值。 0052 在本实施例中, 滑动窗口的大小可以根据实际情况进行设置, 本实施例不做限制, 上述搜索关键字对应信息所属的数据集的预计最大命中阈值, 也可以基于人工经验进行设 置, 历史搜索数据中存在大量的搜索关键字, 通过滑动窗口的方式采集搜索关键字, 使得不 会遗漏搜索关键字,。

38、 从而使得得到的搜索关键字的热度值更加准确。 0053具体地, 可以根据公式, 获取所述搜索关键字的热度值; 其 中, m为所述预计最大命中阈值, n为所述命中次数。 0054 上述公式为一种归一化计算公式, 即n超过m后, 可以使得热度值为1, 可以将热度 值为1的key, 作为热度关键字。 通过上述公式计算key的热度值, 使得热度值的计算更加准 确方便。 0055 步骤202、 对根据所述热度信息确定的待缓存数据, 及所述待缓存数据所属的数据 说明书 6/10 页 9 CN 111831699 A 9 集进行参数过滤, 得到最终的待缓存数据及所述最终的待缓存数据所属的数据集。 0056 。

39、在本实施例中, 可以对根据所述热度信息确定的待缓存数据, 及所述待缓存数据 所属的数据集进行参数过滤。 其中, 参数过滤条件可以通过任意适当的配置工具如apllo配 置平台等进行动态配置, 可以根据具体业务类型, 将各个业务类型对应的业务参数过滤, 以 减少不必要的数据流量进入缓存, 还可以将系统参数过滤掉, 例如, 系统参数可以是 searchid, userid等不影响查询结果的参数, 由于searchid作用是跟踪系统调用, 每次请求 不同所以不需要参与到计算key值。 上述业务参数的过滤, 可以根据具体的业务背景灵活配 置, 本实施例不做限制。 在参数过滤后, 得到了最终的待缓存数据及。

40、所述最终的待缓存数据 所属的数据集, 解决了全量缓存浪费资源的问题。 0057 参见图6, 在通过kafka对收集的历史搜索数据进行实时计算, 做搜索关键字命中 分析, 以及搜索关键字的热度分析并进行参数过滤后, 可以将分析结果输入数据库hbase, 智能缓存拉取模块可以从数据库hbase中拉取需要进行缓存的热点数据, 并通过智能缓存 选取器选择合适的缓存模式, 对热点数据进行缓存。 0058 在实际查询中, 查询条件往往是多个组合, 可选地, 可以通过进行多条件合并hash 哈希算法, 完成key值归一化, 即可以将上述最终的待缓存数据所属的数据集中, 针对查询 事件, 将查询事件对应的关键。

41、字进行归一化处理, 得到目标关键字, 使得查询的结果命中率 更高。 0059 本实施例通过对历史搜索数据进行热度搜索关键字的热度计算, 基于热度关键字 得到热点数据, 使得缓存的命中率得到提高, 然后对热点数据进行参数过滤, 使得能够节省 缓存空间。 0060 实施例三 图7为本发明实施例三中电子设备的硬件结构; 如图7所示, 该电子设备可以包括: 处理 器(processor)301、 通信接口(Communications Interface)302、 存储器(memory)303、 以及 通信总线304。 0061 其中: 处理器301、 通信接口302、 以及存储器303通过通信总线3。

42、04完成相互间的通信。 0062 通信接口302, 用于与其它电子设备或服务器进行通信。 0063 处理器301, 用于执行程序305, 具体可以执行上述数据缓存方法实施例中的相关 步骤。 0064 具体地, 程序305可以包括程序代码, 该程序代码包括计算机操作指令。 0065 处理器301可能是中央处理器CPU, 或者是特定集成电路ASIC (Application Specific Integrated Circuit) , 或者是被配置成实施本发明实施例的一个或多个集成电 路。 智能设备包括的一个或多个处理器, 可以是同一类型的处理器, 如一个或多个CPU; 也可 以是不同类型的处理器。

43、, 如一个或多个CPU以及一个或多个ASIC。 0066 存储器303, 用于存放程序305。 存储器303可能包含高速RAM存储器, 也可能还包括 非易失性存储器 (non-volatile memory) , 例如至少一个磁盘存储器。 0067 程序305具体可以用于使得处理器301执行以下操作: 获取待缓存数据的第一数据 量大小和所述待缓存数据所属的数据集的第二数据量大小; 确定与所述第一数据量大小和 所述第二数据量大小对应的缓存阈值; 确定与所述缓存阈值对应的缓存模式, 以通过所述 说明书 7/10 页 10 CN 111831699 A 10 对应的缓存模式对包括所述待缓存数据的数据。

44、集进行数据缓存; 其中, 缓存模式根据预设 的多级缓存生成, 所述缓存模式包括多种, 每种缓存模式中包括至少一级缓存。 0068 在一种可选的实施方式中, 程序305还用于使得处理器301在确定与所述第一数据 量大小和所述第二数据量大小对应的缓存阈值时: 根据待进行缓存的设备的内存容量以及 所述设备中的虚拟设备的内存容量中的至少一者, 确定本地内存缓存对应的第一缓存阈 值; 和/或, 根据所述设备的文件系统容量, 确定本地文件缓存对应的第二缓存阈值。 0069 在一种可选的实施方式中, 程序305还用于使得处理器301在确定与所述缓存阈值 对应的缓存模式时: 若所述第一数据量大小小于所述第一缓。

45、存阈值, 且所述第二数据量大 小小于所述第二缓存阈值, 则确定与所述缓存阈值对应的缓存模式为第一缓存模式, 其中, 所述第一缓存模式包括三级缓存; 和/或, 若所述第一数据量大小大于或等于所述第一缓存 阈值, 或者, 所述第二数据量大小大于或等于所述第二缓存阈值并小于预设的第三缓存阈 值, 则确定与所述缓存阈值对应的缓存模式为第二缓存模式; 其中, 所述第二缓存模式包括 二级缓存; 和/或, 若所述第二数据量大小大于或等于预设的第三缓存阈值, 则确定与所述 缓存阈值对应的缓存模式为第三缓存模式; 其中, 所述第三缓存模式包括一级缓存; 其中, 所述预设的第三缓存阈值大于所述第二缓存阈值, 所述。

46、第二缓存阈值大于所述第一缓存阈 值。 0070 在一种可选的实施方式中, 第一缓存模式包括的三级缓存包括: 本地内存缓存、 本 地文件缓存和分布式缓存。 0071 在一种可选的实施方式中, 第二缓存模式包括的二级缓存包括: 本地文件缓存和 分布式缓存。 0072 在一种可选的实施方式中, 第三缓存模式包括的一级缓存包括分布式缓存。 0073 在一种可选的实施方式中, 程序305还用于使得处理器301在所述获取待缓存数据 的第一数据量大小和所述待缓存数据所属的数据集的第二数据量大小之前: 获取历史搜索 数据的热度信息, 根据所述热度信息确定待缓存数据及所述待缓存数据所属的数据集。 0074 在一。

47、种可选的实施方式中, 程序305还用于使得处理器301在获取历史搜索数据的 热度信息, 根据所述热度信息确定待缓存数据及所述待缓存数据所属的数据集时: 收集历 史搜索数据, 并计算所述历史搜索数据中搜索关键字的热度值; 获取热度值高于预设热度 值的多个搜索关键字以及其对应的多个数据; 将所述多个数据确定为多个待缓存数据, 根 据所述多个待缓存数据构建所述数据集。 0075 在一种可选的实施方式中, 程序305还用于使得处理器301在计算所述历史搜索数 据中搜索关键字的热度值时: 通过滑动窗口方式采集搜索关键字, 得到所述搜索关键字的 命中次数; 根据所述搜索关键字的命中次数以及所述搜索关键字对。

48、应信息所属的数据集的 预计最大命中阈值, 获取所述搜索关键字的热度值。 0076 在一种可选的实施方式中, 程序305还用于使得处理器301在根据所述搜索关键字 的命中次数以及所述搜索关键字对应的数据集的预计最大命中阈值, 获取所述搜索关键字 的热度值时: 根据公式, 获取所述搜索关键字的热度值; 其中, m为所述 预计最大命中阈值, n为所述命中次数。 0077 在一种可选的实施方式中, 程序305还用于使得处理器301在所述获取历史搜索数 据的热度信息, 根据所述热度信息确定待缓存数据及所述待缓存数据所属的数据集之后: 说明书 8/10 页 11 CN 111831699 A 11 对根据。

49、所述热度信息确定的待缓存数据, 及所述待缓存数据所属的数据集进行参数过滤, 得到最终的待缓存数据及所述最终的待缓存数据所属的数据集。 0078 在一种可选的实施方式中, 所述多级缓存至少包括本地缓存和分布式缓存, 所述 本地缓存包括本地内存缓存和本地文件缓存。 0079 程序305中各步骤的具体实现可以参见上述数据缓存方法实施例中的相应步骤中 对应的描述, 在此不赘述。 所属领域的技术人员可以清楚地了解到, 为描述的方便和简洁, 上述描述的设备和模块的具体工作过程, 可以参考前述方法实施例中的对应过程描述, 在 此不再赘述。 0080 通过本实施例的电子设备, 由于缓存模式的确定是基于待缓存数。

50、据的第一数据量 大小和所述待缓存数据所属的数据集的第二数据量大小确定的, 因此, 可以针对不同的数 据集确定适合该数据集的缓存模式, 实现根据数据集自身的属性智能的进行数据集的缓存 分配, 并且由于每种缓存模式中包括至少一级缓存, 因此可以合理的将数据集分配至不同 层级的缓存中, 提高了整体的搜索性能, 同时也能够避免由于数据集缓存不合理导致的内 存溢出等问题。 0081 特别地, 根据本发明的实施例, 上文参考流程图描述的过程可以被实现为计算机 软件程序。 例如, 本发明的实施例包括一种计算机程序产品, 其包括承载在计算机可读介质 上的计算机程序, 该计算机程序包含配置为执行流程图所示的方法。

展开阅读全文
内容关键字: 数据 缓存 方法 电子设备 计算机 可读 介质
关于本文
本文标题:数据缓存方法、电子设备及计算机可读介质.pdf
链接地址:https://www.zhuanlichaxun.net/pdf/10110183.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1