掌桥专利:专业的专利平台
掌桥专利
首页

一种缓存管理方法、装置、电子设备及存储介质

文献发布时间:2023-06-19 11:27:38


一种缓存管理方法、装置、电子设备及存储介质

技术领域

本申请涉及智慧交通领域,尤其涉及一种缓存管理方法、装置、电子设备及存储介质。

背景技术

现有安防领域中,监控摄像头拍摄的视频数据通常会先存储至缓存中,再进行后续分析,来自监控摄像头的视频数据具有数据量大和数据产生频率高的特点,因此需要耗费的缓存也较大。当前在获取视频数据后,系统会对视频数据中的每一帧图像分配一个缓存块进行存储,然后在对图像分析完后再对该缓存块进行释放,系统对图像分析的能力在经过一段时间后会到达瓶颈,不会持续增加,而分配缓存块的工作会一直持续进行,此种方式会使得数据的存储和分析不平衡,造成系统的资源浪费,且系统在往复的分配和释放缓存上也耗费了大量资源,产生了大量的缓存碎片,使得缓存利用率也较低。

因此,现有的缓存分配方法存在资源浪费的技术问题,需要改进。

发明内容

本申请实施例提供一种缓存管理方法,用以缓解现有缓存分配中资源浪费的技术问题。

为解决上述技术问题,本申请实施例提供以下技术方案:

本申请提供一种缓存管理方法,包括:

接收所述前端设备发送的待存储数据;

根据所述待存储数据的数据量,为所述待存储数据分配至少一个缓存块,所述缓存块包括至少两个缓存单元,所述至少两个缓存单元形成单向链表;

从所述至少一个缓存块中确定初始缓存单元,为所述初始缓存单元生成待分配标识,将所述初始缓存单元分配给所述待存储数据进行存储;

按照预设顺序,控制所述待分配标识依次对应所述至少一个缓存块中未分配的各缓存单元设置,并依次将所述待分配标识对应的目标缓存单元分配给所述待存储数据进行存储;

当所述目标缓存单元的指针指空时,若所述分析服务器的分析速率在预设时间段内的变化值小于预设值,停止为所述待存储数据分配新的缓存块;

将分配后已释放的缓存单元中释放时间最短的缓存单元作为第一目标释放缓存单元,控制所述待分配标识对应所述第一目标释放缓存单元设置。

同时,本申请实施例还提供了一种缓存管理装置,包括:

接收模块,用于接收所述前端设备发送的待存储数据;

第一分配模块,用于根据所述待存储数据的数据量,为所述待存储数据分配至少一个缓存块,所述缓存块包括至少两个缓存单元,所述至少两个缓存单元形成单向链表;

第二分配模块,用于从所述至少一个缓存块中确定初始缓存单元,为所述初始缓存单元生成待分配标识,将所述初始缓存单元分配给所述待存储数据进行存储;

第三分配模块,用于按照预设顺序,控制所述待分配标识依次对应所述至少一个缓存块中未分配的各缓存单元设置,并依次将所述待分配标识对应的目标缓存单元分配给所述待存储数据进行存储;

停止模块,用于当所述目标缓存单元的指针指空时,若所述分析服务器的分析速率在预设时间段内的变化值小于预设值,停止为所述待存储数据分配新的缓存块;

控制模块,用于将分配后已释放的缓存单元中释放时间最短的缓存单元作为第一目标释放缓存单元,控制所述待分配标识对应所述第一目标释放缓存单元设置。

本申请还提供一种电子设备,包括存储器和处理器;所述存储器存储有应用程序,所述处理器用于运行所述存储器内的应用程序,以执行上述任一项所述的缓存管理方法中的操作。

本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行以实现上述任一项所述的缓存管理方法。

有益效果:本申请提供一种缓存管理方法、装置、电子设备及存储介质,缓存管理方法适用于智慧交通系统,智慧交通系统包括前端设备、存储服务器以及分析服务器,缓存管理方法应用于存储服务器,基于该方法,先接收前端设备发送的待存储数据;根据待存储数据的数据量,为待存储数据分配至少一个缓存块,缓存块包括至少两个缓存单元,至少两个缓存单元形成单向链表;从至少一个缓存块中确定初始缓存单元,为初始缓存单元生成待分配标识,将初始缓存单元分配给待存储数据进行存储;按照预设顺序,控制待分配标识依次对应至少一个缓存块中未分配的各缓存单元设置,并依次将待分配标识对应的目标缓存单元分配给待存储数据进行存储;当目标缓存单元的指针指空时,若分析服务器的分析速率在预设时间段内的变化值小于预设值,停止为待存储数据分配新的缓存块;将分配后已释放的缓存单元中释放时间最短的缓存单元作为第一目标释放缓存单元,控制待分配标识对应第一目标释放缓存单元设置。本申请在缓存块中根据待分配标识确定需要分配的缓存单元,当待分配标识对应的目标缓存单元的指针指向空时,表示当前其他缓存单元都已经被分配,此时如果分析服务器的分析速率在预设时间段内的变化值小于预设值,表示分析服务器的分析性能已到达瓶颈,可以分析的数据量有限,因此停止分配新的缓存块,可以使得存储服务器的存储量与分析服务器的分析量保持一致,不会造成存储服务器中存储空间的浪费,且通过将待分配标识分配给现有缓存块中已释放的缓存单元,实现了缓存单元的循环利用,从而减少了缓存碎片的产生,进一步节省了资源。

附图说明

下面结合附图,通过对本申请的具体实施方式详细描述,将使本申请的技术方案及其它有益效果显而易见。

图1是本申请实施例提供的缓存管理系统的场景示意图。

图2为本申请实施例提供的缓存管理方法的流程示意图。

图3为本申请实施例中待存储数据的处理模型示意图。

图4为图3中待存储数据为人脸图片时的处理模型示意图。

图5为本申请实施例的第一人脸单元缓存块中各缓存单元初始分配时的第一阶段示意图。

图6为本申请实施例的第一人脸单元缓存块中各缓存单元初始分配时的第二阶段示意图。

图7为本申请实施例中停止分配新的缓存块时各缓存单元分配的第一阶段示意图。

图8为本申请实施例中停止分配新的缓存块时各缓存单元分配的第二阶段示意图。

图9为本申请实施例中停止分配新的缓存块时各缓存单元分配的第三阶段示意图。

图10为本申请实施例中新增缓存块时各缓存单元分配的第一阶段示意图。

图11为本申请实施例中新增缓存块时各缓存单元分配的第二阶段的第一种示意图。

图12为本申请实施例中新增缓存块时各缓存单元分配的第二阶段的第二种示意图。

图13为本申请实施例中存储服务器和分析服务器处理能力平衡时整个系统的模型示意图。

图14为本申请实施例提供的缓存管理装置的结构示意图。

图15为本申请实施例提供的电子设备的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请实施例提供一种缓存管理方法、装置、电子设备及存储介质。其中,该缓存管理装置可以集成在电子设备中,该电子设备可以是服务器,也可以是终端等设备。

请参阅图1,图1为本申请实施例所提供的缓存管理系统的场景示意图,该系统可以包括终端以及服务器,终端之间、服务器之间、以及终端与服务器之间通过各种网关组成的互联网等方式连接通信,其中,该应用场景中包括前端设备11、存储服务器12和分析服务器13;其中:

前端设备11包括设置在监控现场的视频和图像采集设备;

存储服务器12和分析服务器13包括本地服务器和/或远程服务器等;

前端设备11、存储服务器12和分析服务器13位于无线网络或有线网络中,以实现三者之间的数据交互,其中:

存储服务器12接收前端设备11发送的待存储数据,根据待存储数据的数据量,为待存储数据分配至少一个缓存块,缓存块包括至少两个缓存单元,至少两个缓存单元形成单向链表;从至少一个缓存块中确定初始缓存单元,为初始缓存单元生成待分配标识,将初始缓存单元分配给待存储数据进行存储;按照预设顺序,控制待分配标识依次对应至少一个缓存块中未分配的各缓存单元设置,并依次将待分配标识对应的目标缓存单元分配给待存储数据进行存储;当目标缓存单元的指针指空时,若分析服务器13的分析速率在预设时间段内的变化值小于预设值,停止为待存储数据分配新的缓存块;将分配后已释放的缓存单元中释放时间最短的缓存单元作为第一目标释放缓存单元,控制待分配标识对应第一目标释放缓存单元设置,从而保证了存储服务器12的存储能力与分析服务器13的分析能力保持平衡,且实现缓存单元的循环利用,节省了整个系统的资源。

需要说明的是,图1所示的系统场景示意图仅仅是一个示例,本申请实施例描述的服务器以及场景是为了更加清楚地说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着系统的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。以下分别进行详细说明。需说明的是,以下实施例的描述顺序不作为对实施例优选顺序的限定。

请参阅图2,图2是本申请实施例提供的缓存管理方法的流程示意图,该方法包括:

S201:接收前端设备发送的待存储数据。

在大型的城市交通监控系统中,设置在监控场所的前端设备用于获取各监控场所的视频数据,从视频数据中提取到的有效数据可以为各类交通违法行为提供分析基础。根据前端设备的类别不同,采集到的每帧图片在后续分析时也会有不同的分类,如前端设备为人脸摄像头时,采集到的图片只做人脸识别,前端设备为车牌摄像头时,采集到的图片只做车牌识别等。在获取这些视频数据后,会统一将视频数据封装为图片,并以帧的形式存储在存储服务器的缓存中,因此根据前端设备的不同类别,将封装后的图片作为待存储数据分类发送给存储服务器。

S202:根据待存储数据的数据量,为待存储数据分配至少一个缓存块,缓存块包括至少两个缓存单元,至少两个缓存单元形成单向链表。

存储服务器获取到待存储数据后,根据待存储数据的不同类型,分配不同的缓存块,每个缓存块中的待存储数据再由对应的分析单元进行分析。对于每种类型的待存储数据,接收到的待存储数据都有对应的数据量,根据这些数据量,在存储服务器中分配预设数量个缓存块,如果数据量较少,在分配时可以先分配一个,如果数据量较大,也可以先分配两个或两个以上的缓存块。在分配缓存块后,待存储数据会依次存储至各缓存单元中,具体地,先存储至分配的第一个缓存单元中,如果第一个缓存单元已存满,而待存储数据还有未存储的部分,则会继续存储至下一个分配的缓存单元中,依次类推。

需要说明的是,由于前段设备发送的待存储数据是在动态变化的,在为待存储数据分配至少一个缓存块时,是根据对当前待存储数据的数据量的预估值或者经验值来确定一个初始的分配量,为了不浪费存储服务器的存储资源,在初始分配时分配的缓存块数量通常较少,后续如果所有缓存单元都存储满了,可以重新分配新的缓存块来继续存储,即分配缓存块时采用少量多次的方法,通常情况下,初始状态只分配一个缓存块,然后每次也只新增一个缓存块。

在本申请中,每个缓存块均包括至少两个缓存单元,各缓存单元之间形成单向链表,即前一个缓存单元的指针域next指向后一个缓存单元。相邻的缓存块之间,前一个缓存块中单向链表的尾节点与后一个缓存块中单向链表的头节点,即前一个缓存块中最后一个缓存单元的指针域next指向后一个缓存块中第一个缓存单元。

如图3所示,监控系统10获取的视频数据按照帧的形式作为待存储数据发送至存储服务器,存储服务器分配至少一个人脸单元缓存块20用于存储人脸相关的图片,分配至少一个车牌单元缓存块30用于存储车牌相关的图片,分配至少一个交通卡口单元缓存块40用于存储交通卡口相关的图片。各缓存块中均包括至少两个缓存单元,且至少两个缓存单元形成单向链表,在每个缓存块中,各缓存单元之间整齐排布在一起,中间没有碎片的产生。

图3以每个缓存块20包括m个缓存单元为例,则人脸单元缓存块20包括m个人脸图片缓存单元,分别为人脸图片缓存单元1至人脸图片缓存单元m,车牌单元缓存块30包括m个车牌图片缓存单元,分别为车牌图片缓存单元1至车牌图片缓存单元m,交通卡口单元缓存块40包括m个交通卡口图片缓存单元,分别为交通卡口图片缓存单元1至交通卡口图片缓存单元m。在每个缓存块中的m个缓存单元均形成单向链表,即前一个缓存片单元的指针域next指向后一个图片缓存单元,在初始分配时可以按照单向链表的顺序依次分配各图片缓存单元1至m,在前一个图片缓存单元分配完成后才会分配后一个图片缓存单元来存储数据。

在分配后,待存储数据中人脸图片存储至人脸单元缓存块20的各人脸图片缓存单元中,人脸分析单元50包括人脸分析单元1至n,通过人脸分析单元50对人脸图片进行分析,得到分析结果后,再将对应的人脸图片缓存单元释放。同样地,待存储数据中车牌图片存储至车牌单元缓存块30的各车牌图片缓存单元中,车牌分析单元60包括车牌分析单元1至n,通过车牌分析单元60对车牌图片进行分析,得到分析结果后,再将对应的车牌图片缓存单元释放;待存储数据中交通卡口图片存储至交通卡口单元缓存块40的各交通卡口图片缓存单元中,交通卡口分析单元70包括交通卡口分析单元1至n,通过交通卡口分析单元70对交通卡口图片进行分析,得到分析结果后,再将对应的交通卡口图片缓存单元释放。

需要说明的是,图3中以待存储数据的类型包括人脸图片、车牌图片和交通卡口图片为例进行说明,但本申请不以此为限,待存储数据可以包括更多的类型,或者仅包括上述图片类型中的某一种,本领域的技术人员可根据需要选择待存储数据的类型和数量来进行分析,对于同一类型的待存储数据,均分配有至少一个缓存块。此外,图3中以每个缓存块包括m个缓存单元为例进行说明,m为不小于2的正整数,优选偶数来避免短时间的网络堵塞,本领域的技术人员可根据需要设置每个缓存块的大小以及缓存块内各缓存单元的数量。

S203:从至少一个缓存块中确定初始缓存单元,为初始缓存单元生成待分配标识,将初始缓存单元分配给待存储数据进行存储。

在为各类型的待存储数据分配缓存块中,从已分配的缓存块中确定初始缓存单元,当仅分配了一个缓存块时,初始缓存单元为该缓存块的单向链表中处于头节点的第一个缓存单元,当分配有两个或两个以上的缓存块时,初始缓存单元为第一个缓存块中的第一个缓存单元。存储服务器在进行待存储数据的存储时,根据待分配标识的设置位置来确定应该将待存储数据存储在哪个缓存单元中。其中,待分配标识可以用指针来表示,如使用指针m-FreePoint来表示,本申请以该种情况为例进行说明;可以理解地,还可以用其他方式来表示。

下面以待存储数据只有人脸图片为例,说明如何进行缓存管理。如图4所示,在初始状态,m-FreePoint指向空,也即指向NULL,在第一次获取待存储数据时,先为待存储数据分配第一个缓存块,也即第一人脸单元缓存块210,其包括4个人脸缓存单元,分别为第一人脸图片缓存单元21、第二人脸图片缓存单元22、第三人脸图片缓存单元23以及第四人脸图片缓存单元24,四者形成单向链表,则m-FreePoint首先对应第一人脸图片缓存单元21设置,表示在单向链表中优先把第一人脸图片缓存单元21作为目标缓存单元分配给待存储数据进行存储。

S204:按照预设顺序,控制待分配标识依次对应至少一个缓存块中未分配的各缓存单元设置,并依次将待分配标识对应的目标缓存单元分配给待存储数据进行存储。

当初始缓存单元分配出去后,存储服务器从已经分配的缓存块的未分配缓存单元中确定一个目标缓存单元,控制待分配标识对应该目标缓存单元设置,并将该缓存单元分配给待存储数据进行存储。在一种实施例中,该步骤具体包括:按照缓存块中单向链表的指向顺序,或者相邻缓存块之间的指向顺序,从至少一个缓存块的未分配缓存单元中依次确定目标缓存单元,控制待分配标识依次对应各目标缓存单元设置。

如图5所示,由于此时只有一个缓存块,在第一人脸图片缓存单元21分配后,按照第一人脸单元缓存块210中单向链表各节点的指向顺序,控制m-FreePoint对应初始缓存单元之后的下一个缓存单元,也即第二人脸图片缓存单元22设置,则在下一次分配时优先将第二人脸图片缓存单元22作为目标缓存单元分配给待存储数据进行存储。在每次将目标缓存单元分配出去后,都会重新再确定下一个目标缓存单元,控制m-FreePoint对应下一个目标缓存单元设置,并将下一个目标缓存单元分配给待存储数据进行存储,依次类推。

S205:当目标缓存单元的指针指空时,若分析服务器的分析速率在预设时间段内的变化值小于预设值,停止为待存储数据分配新的缓存块。

在m-FreePoint每次对应一个目标缓存单元设置时,都需要先判断一下目标缓存单元的指针是否指空,如果指空,表示该目标缓存单元为已分配的缓存块中最后一个缓存单元,在该目标缓存单元分配后,存储服务器中将没有其他未分配的缓存单元,而由于前端设备还在不断发送待存储数据过来,还需要为这些待存储数据分配可存储的缓存单元。此时,如果分析服务器的分析速率在预设时间段内的变化值小于预设值,表示分析服务器的分析能力已到达瓶颈,只能处理当前存储服务器中可存储的数据量,如果存储服务器继续增加新的缓存块,则多余存储的数据量已经超过了分析服务器的分析能力,即使将这些待存储数据存储起来,也需要等待一段时间才能被分析,因此会造成存储资源的浪费。因此在本申请中,如果监测到分析服务器的分析速率在预设时间段内的变化值小于预设值,停止为待存储数据分配新的缓存块,则存储服务器的当前存储能力与分析服务器的分析能力达到平衡的状态,存储服务器存储多少数据分析服务器就能处理多少数据,过程中没有多余的数据需要等待一段时间才能被处理,整个系统此时的状态最佳,效率也最高,且没有造成资源的浪费。

在m-FreePoint对应第二人脸图片缓存单元22设置时,由于第二人脸图片缓存单元22的指针不指向空,在第二人脸图片缓存单元22分配后,m-FreePoint又对应第三人脸图片缓存单元23设置。依次类推,如图6所示,在依次完成对第一人脸图片缓存单元21、第二人脸图片缓存单元22以及第三人脸图片缓存单元23的分配后,m-FreePoint对应第四人脸图片缓存单元24设置,此时第四人脸图片缓存单元24为目标缓存单元,且第四人脸图片缓存单元24的指针指向空,也即指向NULL,表示当第四人脸图片缓存单元24分配后,不存在未分配的缓存单元。

在图6的状态下,判断此时分析服务器的分析速率在预设时间段内的变化值是否小于预设值,如果是,则停止为待存储数据分配新的缓存块,即存储服务器中只会有第一人脸单元缓存块210。如果不是,则表示此时分析服务器的分析能力还没有达到瓶颈,当存储服务器中存储更多的数据时,分析服务器也可以立刻对这些存储数据进行分析,因此可以为待存储数据分配新的缓存块。

在一种实施例中,在S205之后还包括:停止获取增量待存储数据。当缓存块分配给待存储数据进行存储的分配速率与缓存单元的释放速率持平时,表明整个系统处于较为稳定的状态,系统中目前分配的缓存单元的数量、图片分析单元的处理能力以及待存储数据的获取量处于动态平衡,当维持当前的状态时,整个系统的运转效率最高。因此,在分配速率与释放速率的差值在预设时间段内小于预设值时,停止获取增量待存储数据,即维持现有前端设备拍摄的视频数据量,同时停止接入新的设备,保证不会有其他新接入的前端设备产生新的增量待存储数据来打破平衡,此外,还可以将一些不重要的前端设备从系统中移除,以减小缓存的负担。监测的线程可以以预设时间间隔进行监测,例如每隔五秒进行一次监测。

S206:将分配后已释放的缓存单元中释放时间最短的缓存单元作为第一目标释放缓存单元,控制待分配标识对应第一目标释放缓存单元设置。

当不需要分配新的缓存块时,如图7所示,第一人脸单元缓存块210中之前已分配的缓存单元,在分析服务器对其中存储的数据分析完后,会逐渐释放出来,则在需要存储新的待存储数据时,这些已释放的缓存单元可以再次进行分配。具体地,图6中m-FreePoint对应第四人脸图片缓存单元24设置时,表示第三人脸图片缓存单元23已经被分配出去正在存储,且第四人脸图片缓存单元24即将被分配,此时如果在第三人脸图片缓存单元23存储满之前,第一人脸图片缓存单元21、第二人脸图片缓存单元22和第三人脸图片缓存单元23中有部分缓存单元已经被逐渐释放出来,则在下一次分配时,m-FreePoint会先对应释放时间最短的缓存单元设置。各缓存单元的释放顺序由分析单元的处理能力来决定,即释放的顺序可以是任意的,不一定按照原来单向链表的顺序释放。

当m-FreePoint对应的目标缓存单元进行分配后,需要确定下一个目标缓存单元时,如果分配后已释放的缓存单元有两个或多个,则将所有已释放的缓存单元中释放时间最短的缓存单元作为第一目标释放缓存单元,控制m-FreePoint对应该第一目标释放缓存单元设置,如果分配后已释放的缓存单元只有一个时,则该缓存单元也相当于释放时间最短的缓存单元,此时直接将该缓存单元作为第一目标释放缓存单元。

假设在下一次分配时,共有两个缓存单元属于分配后已释放的缓存单元,则控制m-FreePoint对应释放时间最短的第一目标释放缓存单元设置。在一种实施例中,控制待分配标识对应已释放的缓存单元中释放时间最短的第一目标释放缓存单元设置的步骤,包括:将已释放缓存单元中释放时间最短的缓存单元作为第一目标释放缓存单元,控制待分配标识对应第一目标释放缓存单元设置;按照释放时间由短到长的顺序,控制前一个已释放缓存单元的指针指向后一个已释放缓存单元,以使各已释放缓存单元之间依次建立连接。

假设两个分配后已释放的缓存单元的释放顺序为第二人脸图片缓存单元22-第一人脸图片缓存单元21,且在二者释放完成之前第四人脸图片缓存单元24还没有被分配出去,则第一人脸图片缓存单元21为第一目标释放缓存单元,如图7所示,在第二人脸图片缓存单元22释放后,先控制m-FreePoint对应第二人脸图片缓存单元22设置,同时控制第二人脸图片缓存单元22的指针域next指向第四人脸图片缓存单元24,使得第二人脸图片缓存单元22与第四人脸图片缓存单元24之间建立连接,且第二人脸图片缓存单元22与第三人脸图片缓存单元23之间断开连接。如图8所示,在第一人脸图片缓存单元21又释放后,控制m-FreePoint对应第一人脸图片缓存单元21设置,由于第一人脸图片缓存单元21的指针域next原本就指向第二人脸图片缓存单元22,第一人脸图片缓存单元21与第二人脸图片缓存单元22之间保持连接即可。在上述两个缓存单元都释放完成后,m-FreePoint最终对应释放时间最短的第一人脸图片缓存单元21设置。此时,如果第三人脸图片缓存单元23在上一次分配后已存储满,即将开始新一次的分配,则将以第一人脸图片缓存单元21作为新的目标缓存单元进行分配。

第一人脸单元缓存块210中原本的单向链表的顺序为第一人脸图片缓存单元21-第二人脸图片缓存单元22-第三人脸图片缓存单元23-第四人脸图片缓存单元24,当通过图7至图8中操作使上述两个缓存单元都释放过一遍后,第一人脸单元缓存块210中形成新的单向链表,新的单向链表的顺序为第一人脸图片缓存单元21-第二人脸图片缓存单元22-第四人脸图片缓存单元24,当进行下一次分配时,将会按照新的单向链表中的顺序进行分配。

在后续过程中,已经分配的所有缓存单元都可以循环进行释放-分配-释放的过程,如图9所示,假设在图8中状态下,第一人脸图片缓存单元21被分配出去,从第一人脸图片缓存单元21被分配出去至存储满的时间段内,只有第三人脸图片缓存单元23被释放,则第三人脸图片缓存单元23作为新的目标缓存单元,m-FreePoint对应第三人脸图片缓存单元23设置,此时新的单向链表的顺序又变成了第三人脸图片缓存单元23-第二人脸图片缓存单元22-第四人脸图片缓存单元24。依次类推,后面的所有分配和释放操作均与前面实施例中类似,在此不再赘述。

由上述实施例可知,无论在两次分配之间释放了多个缓存单元还是仅释放了一个缓存单元,整个过程中都没有增加新的缓存单元,只是单向链表中各节点的顺序发生了而变化,下一次分配时仍然可以按照新的单向链表的顺序进行目标缓存单元的确定、分配后已释放缓存单元的判断、待分配标识的设置等操作,因此本申请的缓存块具有极大的灵活性,通过各缓存单元释放顺序和释放数量的不同,可以获得自动可伸缩的多种不同的单向链表,且缓存块中所有的缓存单元均可重复使用,因此减小了缓存碎片的产生,提高了缓存利用率。

上述实施例以图6中第四人脸图片缓存单元24的指针指空时,分析服务器的分析速率在预设时间段内的变化值小于预设值为例,说明了停止分配新的缓存块的情况下,系统如何进行缓存管理。在一种实施例中,在S204之后还包括:当目标缓存单元的指针指空时,若分析服务器的分析速率在预设时间段内的变化值不小于预设值,则为待存储数据分配新的缓存块,目标缓存单元连接并指向新的缓存块中单向链表的头节点。

如图10所示,在第四人脸图片缓存单元24的指针指空时,分析服务器的分析速率在预设时间段内的变化值不小于预设值,则对第四人脸图片缓存单元24进行分配,且为待存储数据分配新的缓存块,也即第二人脸单元缓存块220,第二人脸单元缓存块220包括形成单向链表的第五人脸图片缓存单元25、第六人脸图片缓存单元26、第七人脸图片缓存单元27以及第八人脸图片缓存单元28,第四人脸图片缓存单元24连接并指向第二人脸单元缓存块220中单向链表的头节点,也即第五人脸图片缓存单元25。采用图10中的方案,只在目标缓存单元的指针指向空时才进行扩容,生成新的缓存块,即采用少量多次分配的方案,按需生成缓存块,可以使得生成的每个缓存块都能得到合理利用,不会造成缓存资源的浪费和不必要的缓存碎片的产生,从而提高了缓存利用率。

在一种实施例中,为待存储数据分配新的缓存块的步骤之后,还包括:按照相邻缓存块之间的指向顺序,将所述新的缓存块中单向链表首节点的缓存单元确定为下一个目标缓存单元,控制所述待分配标识对应下一个目标缓存单元设置。如图10所示,将第五人脸图片缓存单元25作为下一个目标缓存单元,控制m-FreePoint对应第五人脸图片缓存单元25设置。

如图11所示,如果后续也始终没有新的分配后已释放的缓存单元,则m-FreePoint会按照第二人脸单元缓存块220中单向链表的顺序,依次对应第五人脸图片缓存单元25、第六人脸图片缓存单元26、第七人脸图片缓存单元27以及第八人脸图片缓存单元28设置,直至第八人脸图片缓存单元28作为目标缓存单元,指针再次指向空,则需要再一次判断分析服务器的分析速率在预设时间段内的变化值是否小于预设值,从而确定是否需要再次新增缓存块。

如图12所示,如果在m-FreePoint对应第五人脸图片缓存单元25设置后,第五人脸图片缓存单元25还未被分配出去时,第一人脸单元缓存块210中有分配后已释放的缓存单元,则将分配后已释放的缓存单元中释放时间最短的缓存单元作为第一目标释放缓存单元,控制待分配标识对应第一目标释放缓存单元设置,并按照释放时间由短到长的顺序,控制前一个已释放缓存单元的指针指向后一个已释放缓存单元,以使各已释放缓存单元之间依次建立连接。如果分配后已释放的缓存单元有两个或多个,则将所有已释放的缓存单元中释放时间最短的缓存单元作为第一目标释放缓存单元,如果分配后已释放的缓存单元只有一个时,则该缓存单元也相当于释放时间最短的缓存单元,此时直接将该缓存单元作为第一目标释放缓存单元。

在确定出第一目标释放缓存单元,将m-FreePoint对应第一目标释放缓存单元设置,且在各已释放缓存单元之间建立连接后,如果缓存块中还有未分配的缓存单元,则按照未分配缓存单元的节点位置,控制已释放缓存单元中释放时间最长的第二目标释放缓存单元的指针指向未分配缓存单元中节点位置最前的目标未分配缓存单元,以使第二目标释放缓存单元和目标未分配缓存单元建立连接。如果分配后已释放的缓存单元有两个或多个,则将所有已释放的缓存单元中释放时间最长的缓存单元作为第二目标释放缓存单元,如果分配后已释放的缓存单元只有一个时,则该缓存单元也相当于释放时间最长的缓存单元,此时直接将该缓存单元作为第二目标释放缓存单元。即,当存储服务器中仅存在一个分配后已释放的缓存单元,则该缓存单元同时作为第一目标释放缓存单元和第二目标释放缓存单元。

图12中以仅第二人脸图片缓存单元22为分配后已释放的缓存单元为例,则第二人脸图片缓存单元22同时作为第一目标释放缓存单元和第二目标释放缓存单元,控制m-FreePoint对应第二人脸图片缓存单元22设置,同时控制第二人脸图片缓存单元22的指针域next指向第二人脸单元缓存块220中节点位置最前的未分配缓存单元,也即第五人脸图片缓存单元25。此时,第二人脸图片缓存单元22和第五人脸图片缓存单元25之间建立连接,同时第二人脸图片缓存单元22与第三人脸图片缓存单元23之间断开连接,第二人脸图片缓存单元22、第五人脸图片缓存单元25、第六人脸图片缓存单元26、第七人脸图片缓存单元27以及第八人脸图片缓存单元28之间形成新的单向链表,且第二人脸图片缓存单元22为该单向链表的头节点。如果后续始终没有新的分配后已释放的缓存单元,则m-FreePoint会按照该单向链表的顺序,依次对应第五人脸图片缓存单元25、第六人脸图片缓存单元26、第七人脸图片缓存单元27以及第八人脸图片缓存单元28设置,直至第八人脸图片缓存单元28作为目标缓存单元,指针再次指向空,则需要进行又一次对分析服务器分析能力的判断操作。如果后续在对某个目标缓存单元分配后,第一人脸单元缓存块210和第二人脸单元缓存块220中又存在分配后已释放的缓存单元,则m-FreePoint又会对应该已释放的缓存单元设置,在下次分配时仍然优先分配设置有m-FreePoint的目标缓存单元。

假设经过上述各步骤,发现当待存储数据为人脸图片时,设置两个缓存块可以使得存储服务器和分析服务器的处理能力保持一致,则整个系统的架构如图13所示,监控系统10中的前端设备发送人脸图片,存储服务器中缓存块包括第一人脸单元缓存块210和第二人脸单元缓存块220,分析服务器中包括n各人脸分析单元50。其中,第一人脸单元缓存块210中包括4个缓存单元,分别为第一人脸图片缓存单元21、第二人脸图片缓存单元22、第三人脸图片缓存单元23以及第四人脸图片缓存单元24,第二人脸单元缓存块220中也包括4个缓存单元,分别为第五人脸图片缓存单元25、第六人脸图片缓存单元26、第七人脸图片缓存单元27以及第八人脸图片缓存单元28。第一人脸单元缓存块210和第二人脸单元缓存块220相互连接,且第一人脸单元缓存块210中单向链表的尾节点连接第二人脸单元缓存块220中单向链表的头节点,即第四人脸图片缓存单元24与第五人脸图片缓存单元25连接,第四人脸图片缓存单元24的指针域next指向第五人脸图片缓存单元25。在该架构下,存储服务器的存储量与分析服务器的分析量保持一致,不会造成存储服务器中存储空间的浪费,且两个缓存块之间的所有缓存单元都可以循环使用,减少了缓存碎片的产生,进一步节省了资源。

在一种实施例中,在S206之后还包括:监测不同类型待存储数据的待存储数据量;当存在目标类型待存储数据的待存储数据量大于预设数据量时,从其他类型待存储数据已分配缓存块中确定目标缓存块,将目标缓存块释放后分配给目标类型待存储数据进行存储。在缓存管理的整个系统中,对不同类型的待存储数据,都会如图3所示,分配有不同类型的缓存块进行数据存储,在实际场景中,前端设备的接入量是在动态变化的,因此不同类型待存储数据的待存储数据量也在发生变化,例如原本根据人脸图片、车牌图片以及交通卡口图片的待存储数据量,为三者分配有对应数量的缓存块,如果在某段时间内人脸图片的待存储数据量变得较多,超过了预设数据量,则已经分配的人脸单元缓存块20的不能满足人脸图片的存储需求,此时,将人脸图片作为目标类型待存储数据,再获取其他类型的待存储数据如车牌图片和交通卡口图片的待存储数据量,从中确定待存储数据量减小的图片类型,例如车牌图片,由于车牌图片的待存储量减小,而车牌分析单元60的处理水平不变,则之前为其分配的缓存块中必然存在释放后未分配的缓存单元。此时,可以将该缓存单元对应的缓存块确定为目标缓存块,将目标缓存块中的各缓存单元逐渐释放出来,并分配给人脸图片进行存储。采用此种方式,在某种类型的待存储数据的待存储数据量增大时,不需要再为其生成新的缓存块,而是将其他类型待存储数据对应的缓存块中相对空闲的缓存块调用过来,从而实现了缓存块在不同类型待存储数据之间的复用,进一步减小了缓存碎片的产生。

在整个系统中,在生成每个缓存块时,都需要为该缓存块生成一个附加存储块,用于存储该缓存块的配置信息,当每个缓存块中不设置缓存单元,直接通过整个缓存块的形式进行分配和释放时,对整个系统的来讲,需要较多的附加存储块来存储每个缓存块的配置信息,而当每个缓存块中设置多个缓存单元时,属于同一个缓存块的多个缓存单元的配置信息也只需要一个附加存储块即可实现存储,则以缓存单元的形式可以大大降低附加存储块的数量,降低整个系统的负担。例如用8个缓存块来进行分配和释放,则需要8个附加存储块,如果用2个缓存块,每个缓存块包括4个缓存单元来参与分配和释放,则只需要2个附加存储块。即本申请除了可以减小碎片产生外,还减小了附加存储块的数量,进一步节省了资源。

由上述实施例可知,本申请提供的缓存管理方法,在缓存块中根据待分配标识确定需要分配的缓存单元,当待分配标识对应的目标缓存单元的指针指向空时,表示当前其他缓存单元都已经被分配,此时如果分析服务器的分析速率在预设时间段内的变化值小于预设值,表示分析服务器的分析性能已到达瓶颈,可以分析的数据量有限,因此停止分配新的缓存块,可以使得存储服务器的存储量与分析服务器的分析量保持一致,不会造成存储服务器中存储空间的浪费,且通过将待分配标识分配给现有缓存块中已释放的缓存单元,实现了缓存单元的循环利用,从而减少了缓存碎片的产生,进一步节省了资源。

在上述实施例所述方法的基础上,本实施例将从缓存管理装置的角度进一步进行描述,请参阅图14,图14具体描述了本申请实施例提供的缓存管理装置,其可以包括:

接收模块110,用于接收前端设备发送的待存储数据;

第一分配模块120,用于根据待存储数据的数据量,为待存储数据分配至少一个缓存块,缓存块包括至少两个缓存单元,至少两个缓存单元形成单向链表;

第二分配模块130,用于从至少一个缓存块中确定初始缓存单元,为初始缓存单元生成待分配标识,将初始缓存单元分配给待存储数据进行存储;

第三分配模块140,用于按照预设顺序,控制待分配标识依次对应至少一个缓存块中未分配的各缓存单元设置,并依次将待分配标识对应的目标缓存单元分配给待存储数据进行存储;

停止模块150,用于当目标缓存单元的指针指空时,若分析服务器的分析速率在预设时间段内的变化值小于预设值,停止为待存储数据分配新的缓存块;

控制模块160,用于将分配后已释放的缓存单元中释放时间最短的缓存单元作为第一目标释放缓存单元,控制待分配标识对应第一目标释放缓存单元设置。

在一种实施例中,第三分配模块140用于,按照缓存块中单向链表的指向顺序,或者相邻缓存块之间的指向顺序,从至少一个缓存块的未分配缓存单元中依次确定目标缓存单元,控制待分配标识依次对应各目标缓存单元设置。

在一种实施例中,缓存管理装置还包括第四分配模块,第四分配模块在第三分配模块140之后工作,第四分配模块用于,当目标缓存单元的指针指空时,若分析服务器的分析速率在预设时间段内的变化值不小于预设值,则为待存储数据分配新的缓存块,目标缓存单元连接并指向新的缓存块中单向链表的头节点。

在一种实施例中,第四分配模块还用于,按照相邻缓存块之间的指向顺序,将新的缓存块中单向链表首节点的缓存单元确定为下一个目标缓存单元,控制待分配标识对应下一个目标缓存单元设置。

在一种实施例中,控制模块160包括:

第一控制单元,用于将已释放缓存单元中释放时间最短的缓存单元作为第一目标释放缓存单元,控制所述待分配标识对应所述第一目标释放缓存单元设置;

第二控制单元,用于按照所述释放时间由短到长的顺序,控制前一个已释放缓存单元的指针指向后一个已释放缓存单元,以使各已释放缓存单元之间依次建立连接。

在一种实施例中,缓存管理装置还包括第二停止模块,第二停止模块在停止模块150之后工作,第二停止模块用于停止获取增量待存储数据。

在一种实施例中,缓存管理装置还包括监测模块,监测模块在控制模块160之后工作,监测模块用于监测不同类型待存储数据的待存储数据量;当存在目标类型待存储数据的待存储数据量大于预设数据量时,从其他类型待存储数据已分配缓存块中确定目标缓存块,将所述目标缓存块释放后分配给所述目标类型待存储数据进行存储。

区别于现有技术,本申请提供的缓存管理装置,在缓存块中根据待分配标识确定需要分配的缓存单元,当待分配标识对应的目标缓存单元的指针指向空时,表示当前其他缓存单元都已经被分配,此时如果分析服务器的分析速率在预设时间段内的变化值小于预设值,表示分析服务器的分析性能已到达瓶颈,可以分析的数据量有限,因此停止分配新的缓存块,可以使得存储服务器的存储量与分析服务器的分析量保持一致,不会造成存储服务器中存储空间的浪费,且通过将待分配标识分配给现有缓存块中已释放的缓存单元,实现了缓存单元的循环利用,从而减少了缓存碎片的产生,进一步节省了资源。

相应的,本申请实施例还提供一种电子设备,如图15所示,该电子设备可以包括射频(RF,Radio Frequency)电路1501、包括有一个或一个以上计算机可读存储介质的存储器1502、输入单元1503、显示单元1504、传感器1505、音频电路1506、WiFi模块1507、包括有一个或者一个以上处理核心的处理器1508、以及电源1509等部件。本领域技术人员可以理解,图15中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:

射频电路1501可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器1508处理;另外,将涉及上行的数据发送给基站。存储器1502可用于存储软件程序以及模块,处理器1508通过运行存储在存储器1502的软件程序以及模块,从而执行各种功能应用以及数据处理。输入单元1503可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。

显示单元1504可用于显示由用户输入的信息或提供给用户的信息以及服务器的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。

电子设备还可包括至少一种传感器1505,比如光传感器、运动传感器以及其他传感器。音频电路1506包括扬声器,扬声器可提供用户与电子设备之间的音频接口。

WiFi属于短距离无线传输技术,电子设备通过WiFi模块1507可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图15示出了WiFi模块1507,但是可以理解的是,其并不属于电子设备的必须构成,完全可以根据需要在不改变申请的本质的范围内而省略。

处理器1508是电子设备的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器1502内的软件程序和/或模块,以及调用存储在存储器1502内的数据,执行电子设备的各种功能和处理数据,从而对手机进行整体监控。

电子设备还包括给各个部件供电的电源1509(比如电池),优选的,电源可以通过电源管理系统与处理器1508逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。

尽管未示出,电子设备还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,服务器中的处理器1508会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器1502中,并由处理器1508来运行存储在存储器1502中的应用程序,从而实现以下功能:

接收前端设备发送的待存储数据;根据待存储数据的数据量,为待存储数据分配至少一个缓存块,缓存块包括至少两个缓存单元,至少两个缓存单元形成单向链表;从至少一个缓存块中确定初始缓存单元,为初始缓存单元生成待分配标识,将初始缓存单元分配给待存储数据进行存储;按照预设顺序,控制待分配标识依次对应至少一个缓存块中未分配的各缓存单元设置,并依次将待分配标识对应的目标缓存单元分配给待存储数据进行存储;当目标缓存单元的指针指空时,若分析服务器的分析速率在预设时间段内的变化值小于预设值,停止为待存储数据分配新的缓存块;将分配后已释放的缓存单元中释放时间最短的缓存单元作为第一目标释放缓存单元,控制待分配标识对应第一目标释放缓存单元设置。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见上文的详细描述,此处不再赘述。

本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。

为此,本申请实施例提供一种计算机可读存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以实现以下功能:

接收前端设备发送的待存储数据;根据待存储数据的数据量,为待存储数据分配至少一个缓存块,缓存块包括至少两个缓存单元,至少两个缓存单元形成单向链表;从至少一个缓存块中确定初始缓存单元,为初始缓存单元生成待分配标识,将初始缓存单元分配给待存储数据进行存储;按照预设顺序,控制待分配标识依次对应至少一个缓存块中未分配的各缓存单元设置,并依次将待分配标识对应的目标缓存单元分配给待存储数据进行存储;当目标缓存单元的指针指空时,若分析服务器的分析速率在预设时间段内的变化值小于预设值,停止为待存储数据分配新的缓存块;将分配后已释放的缓存单元中释放时间最短的缓存单元作为第一目标释放缓存单元,控制待分配标识对应第一目标释放缓存单元设置。

以上各个操作的具体实施可参见前面的实施例,在此不再赘述。

其中,该计算机可读存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。

由于该计算机可读存储介质中所存储的指令,可以执行本申请实施例所提供的任一种方法中的步骤,因此,可以实现本申请实施例所提供的任一种方法所能实现的有益效果,详见前面的实施例,在此不再赘述。

以上对本申请实施例所提供的一种缓存管理方法、装置、电子设备及存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的技术方案及其核心思想;本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例的技术方案的范围。

相关技术
  • 一种缓存管理方法、装置、电子设备及存储介质
  • 一种缓存管理方法、装置、电子设备及存储介质
技术分类

06120112934845