本发明涉及数据读取技术领域,特别是涉及一种客户端数据读取时的缓存管理方法及其装置。
背景技术:
从事分布式存储产品的客户端软件开发时,往往会用到缓存的概念,它其实是程序在内存中申请的一块空间,将用户将要写入或者刚刚读取到的数据暂存,既可以提高写入性能,又能在用户对最近访问过的数据再次发起请求时迅速返回,降低延迟。
而针对读取操作,当同时存在若干客户端进程时,每个客户端进程均会开辟一个缓存空间来暂存来自后端存储设备的数据,这样可能会导致同样的数据重复存储在不同的内存空间中,不仅造成了内存空间资源的浪费,并且同样的数据重复读取也会造成带宽的浪费,内存的使用效率低。
因此,如何提供一种内存使用效率高的客户端数据读取时的缓存管理方法及其装置是本领域技术人员目前需要解决的问题。
技术实现要素:
本发明的目的是提供一种客户端数据读取时的缓存管理方法及其装置,能够避免相同的数据多次存储的情况出现,减少内存空间资源的浪费;且能够避免重复读取后端存储设备,减少带宽资源的浪费,内存的使用效率高。
为解决上述技术问题,本发明提供了一种客户端数据读取时的缓存管理方法,用于服务器,包括:
步骤s101:接收客户端发送的数据读取请求后,判断所述服务器内预先建立的共享内存空间内是否存储有所述客户端请求读取的数据;若是,进入步骤s104;若否,进入步骤s102;
步骤s102:返回所述共享内存空间内的一个空白数据块的地址,供所述客户端将从后端存储设备内读取出来的数据写入所述空白数据块内并返回状态更新信息;
步骤s103:根据所述状态更新信息将所述空白数据块标记为缓存数据块;进入步骤s104;
步骤s104:从所述共享内存空间内将所述客户端请求的数据返回所述客户端。
优选地,所述步骤s104的过程具体为:
将所述客户端请求的数据拷贝至所述客户端的本地进程空间内,供所述客户端对应的前端应用对所述数据进行调取。
优选地,还包括:
当判断所述共享内存空间内存在有缓存数据块的生命期超出预设时间阈值时,释放所述缓存数据块内的数据并将其标记为空白数据块。
优选地,所述生命期具体为连续未被调用的时间。
优选地,所述生命期具体为所述缓存数据块的存在时间。
优选地,所述空白数据块的地址为所述共享内存空间的地址偏移以及所述空白数据块所处的空白内存页的页码ID。
为解决上述技术问题,本发明还提供了一种客户端数据读取时的缓存管理装置,用于服务器,包括:
判断模块,用于接收客户端发送的数据读取请求后,判断所述服务器内预先建立的共享内存空间内是否存储有所述客户端请求读取的数据;若是,触发数据返回模块;若否,触发地址返回模块;
所述地址返回模块,用于返回所述共享内存空间内的一个空白数据块的地址,供所述客户端将从后端存储设备内读取出来的数据写入所述空白数据块内并返回状态更新信息;
标记模块,用于根据所述状态更新信息将所述空白数据块标记为缓存数据块,并触发所述数据返回模块;
所述数据返回模块,用于从所述共享内存空间内将所述客户端请求的数据返回所述客户端。
优选地,还包括:
老化处理模块,用于当判断所述共享内存空间内存在有缓存数据块的生命期超出预设时间阈值时,释放所述缓存数据块内的数据,并发送释放信息至所述标记模块;
所述标记模块还用于将释放后的所述缓存数据块标记为空白数据块。
本发明提供了一种客户端数据读取时的缓存管理方法及其装置,接收客户端发送的数据读取请求后,先判断预先建立的共享内存空间内是否存储有相应的数据,若有,直接返回该数据至客户端,若没有,才需要对后端存储设备进行数据读取,并将读取出来的数据存储至共享内存空间内。可见,对于多个客户端,本发明不需要单独开辟内存空间,同时避免了相同的数据多次存储的情况出现,减少了内存空间资源的浪费;且能够避免重复读取后端存储设备,减少了带宽资源的浪费,内存的使用效率高。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的一种客户端数据读取时的缓存管理方法的过程的流程图;
图2为本发明提供的一种客户端数据读取时的缓存管理装置的结构示意图。
具体实施方式
本发明的核心是提供一种客户端数据读取时的缓存管理方法及其装置,能够避免相同的数据多次存储的情况出现,减少内存空间资源的浪费;且能够避免重复读取后端存储设备,减少带宽资源的浪费,内存的使用效率高。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供了一种客户端数据读取时的缓存管理方法,用于服务器,参见图1所示,图1为本发明提供的一种客户端数据读取时的缓存管理方法的过程的流程图;该方法包括:
步骤s101:接收客户端发送的数据读取请求后,判断服务器内预先建立的共享内存空间内是否存储有客户端请求读取的数据;若是,进入步骤s104;若否,进入步骤s102;
步骤s102:返回共享内存空间内的一个空白数据块的地址,供客户端将从后端存储设备内读取出来的数据写入空白数据块内并返回状态更新信息;
步骤s103:根据状态更新信息将空白数据块标记为缓存数据块;进入步骤s104;
步骤s104:从共享内存空间内将客户端请求的数据返回客户端。
其中,步骤s104的过程具体为:
将客户端请求的数据拷贝至客户端的本地进程空间内,供客户端对应的前端应用对数据进行调取。
可以理解的是,前端应用是无法直接从共享内存空间获取数据的,需要先将共享内存空间中的部分数据块拷入本地进程空间中,前端应用才能够从发起的读取进程中获取相应的数据。
另外,预设的共享内存空间的大小及内存页数均可自定义,本发明不做限定,当一个共享内存空间未被任何进程引用的时间超出预设空白时间阈值时,共享内存空间可被系统回收,该操作是为了避免无用的共享内存空间长时间占用内存资源,当然该操作仅为优选方案,本发明不限定是否采用上述操作,也不限定预设空白时间阈值的具体数值。
作为优选地,该方法还包括:
当判断共享内存空间内存在有缓存数据块的生命期超出预设时间阈值时,释放缓存数据块内的数据并将其标记为空白数据块。
其中,上述判断操作可以为周期性进行的,即周期性的对各个缓存数据块的生命期进行检测;可以理解的是,为进行上述判断,需要对各个缓存数据块的生命期进行时间记录,该时间记录是由计时器完成的,故也可以在当计时器记录的时间达到预设时间阈值时,自动触发释放缓存数据块的操作。
进一步可知,这里的生命期具体为连续未被调用的时间。
另外,生命期具体为缓存数据块的存在时间。具体采用以上哪种生命期的定义本发明并不做限定,也可采用其他时间作为生命期。
可以理解的是,通过释放老化的缓存数据块,能够避免生命期过长的缓存数据块持续存在,长时间占用内存资源而导致的新数据无法写入的情况出现,即上述操作能够尽可能保证共享内存空间内的数据的更新实时性。
具体的,这里的空白数据块的地址为共享内存空间的地址偏移以及空白数据块所处的空白内存页的页码ID。
本发明提供了一种客户端数据读取时的缓存管理方法,接收客户端发送的数据读取请求后,先判断预先建立的共享内存空间内是否存储有相应的数据,若有,直接返回该数据至客户端,若没有,才需要对后端存储设备进行数据读取,并将读取出来的数据存储至共享内存空间内。可见,对于多个客户端,本发明不需要单独开辟内存空间,同时避免了相同的数据多次存储的情况出现,减少了内存空间资源的浪费;且能够避免重复读取后端存储设备,减少了带宽资源的浪费,内存的使用效率高。
本发明还提供了一种客户端数据读取时的缓存管理装置,用于服务器,参见图2所示,图2为本发明提供的一种客户端数据读取时的缓存管理装置的结构示意图。该装置包括:
判断模块11,用于接收客户端发送的数据读取请求后,判断服务器内预先建立的共享内存空间内是否存储有客户端请求读取的数据;若是,触发数据返回模块13;若否,触发地址返回模块12;
地址返回模块12,用于返回共享内存空间内的一个空白数据块的地址,供客户端将从后端存储设备内读取出来的数据写入空白数据块内并返回状态更新信息;
标记模块14,用于根据状态更新信息将空白数据块标记为缓存数据块,并触发数据返回模块13;
数据返回模块13,用于从共享内存空间内将客户端请求的数据返回客户端。
作为优选地,该装置还包括:
老化处理模块15,用于当判断共享内存空间内存在有缓存数据块的生命期超出预设时间阈值时,释放缓存数据块内的数据,并发送释放信息至标记模块14;
标记模块14还用于将释放后的缓存数据块标记为空白数据块。
可以理解的是,前端应用发送读取请求至客户端后,客户端需要首先与上述缓存管理装置的socket(插座)建立连接。
作为优选地,客户端与缓存管理装置还可以通过心跳反馈确定对方的存活状态,具体的方式即为客户端与缓存管理装置定期发送预设的信号至对方,若未接到对方信号的持续时间超出预设时间段,则判定对方已无法工作,进而发送反馈信息至前端应用。当然,以上仅为优选实施例,也可采用其他方式进行心跳反馈。
本发明提供了一种客户端数据读取时的缓存管理装置,接收客户端发送的数据读取请求后,先判断预先建立的共享内存空间内是否存储有相应的数据,若有,直接返回该数据至客户端,若没有,才需要对后端存储设备进行数据读取,并将读取出来的数据存储至共享内存空间内。可见,对于多个客户端,本发明不需要单独开辟内存空间,同时避免了相同的数据多次存储的情况出现,减少了内存空间资源的浪费;且能够避免重复读取后端存储设备,减少了带宽资源的浪费,内存的使用效率高。
需要说明的是,在本说明书中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。