[发明专利]一种数据缓存处理方法、系统及数据缓存装置有效
申请号: | 200710077039.3 | 申请日: | 2007-09-11 |
公开(公告)号: | CN101122885A | 公开(公告)日: | 2008-02-13 |
发明(设计)人: | 姚星;毛剑;谢明 | 申请(专利权)人: | 腾讯科技(深圳)有限公司 |
主分类号: | G06F12/08 | 分类号: | G06F12/08;G06F12/12;G06F12/06;G06F17/30 |
代理公司: | 深圳中一专利商标事务所 | 代理人: | 张全文 |
地址: | 518044广东省深圳市*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 数据 缓存 处理 方法 系统 装置 | ||
技术领域
本发明属于数据缓存领域,尤其涉及一种数据缓存处理方法、系统及数据缓存装置。
背景技术
在计算机与互联网应用中,为了提高用户的访问速度并降低后端服务器的压力,在数据库、磁盘等慢速系统或设备的前端,一般采用缓存(Cache)技术,利用内存等访问速度较快的设备存储用户经常访问的数据,由于内存的访问速度比磁盘等快得多,既可以减轻后端设备的压力,又能够及时响应用户请求。
缓存中可以存储各种数据类型,例如用户的属性数据、图片数据以及用户需要保存的各种文件等。图1示出了现有缓存的结构,包含头部结构、哈希(Hash)桶和多个节点(Node)。其中,头部结构中保存有哈希桶(Hash Bucket)的位置,Hash桶的桶深(hash值个数),节点数,已经使用的节点数等。Hash桶中存储各hash值对应的节点链表头指针,该指针指向一个节点,由于每个节点都指向下一个节点直至最后一个节点,因此从该指针可以得到整条节点链。
节点中存储关键字(Key)、数据(Data)和指向下一节点的指针,是缓存的主要操作单元。在某个hash值所对应的节点链表长度不够时,设立由多个节点组成的附加节点链表备用,其头指针保存在附加头部。附加节点链表与节点链表的组织形式一致。
当插入一条记录时,得到需要写入缓存的数据及其对应的关键字,根据该关键字通过Hash散列算法确定对应的hash值,顺序遍历该hash值对应的节点链表,查找是否存在对应于该关键字的记录,如果有则更新该记录,如果没有则将数据插入到该节点链表的最后一个节点。如果该节点链表中的节点已经用完,则将该关键字和数据存储在附加节点链表头指针指向的附加节点链表中。
当读取一条记录时,根据该记录的关键字通过Hash散列算法确定对应的hash值,顺序遍历该hash值对应的节点链表,查找是否存在对应于该关键字的记录,如果没有查找到再去查找附加节点链表,如果已经查找到,则将相应数据返回。
当删除一条记录时,根据该记录的关键字通过Hash散列算法确定对应的hash值,顺序遍历该hash值对应的节点链表,查找是否存在对应于该关键字的记录,如果没有查找到再去查找附加节点链表,查找到后删除此关键字和相应数据。
在现有缓存中,由于一块数据必须存储在一个节点内,因此节点内的数据空间必须大于所需要存储的数据长度,这就需要在缓存使用之前对缓存的数据大小有一个较为明确的认识,避免较大的数据无法存入缓存。同时,由于实际应用中数据的大小一般存在较大的差别,但每个数据都需要占用一个节点,容易造成内存空间的浪费,在数据较小时浪费的内存空间更大。另外,记录的查找效率低,查找完单个节点链表后,如果没有查找到相应记录还需要查找附加节点链表,在附加节点链表较长的情况下查找消耗的时间较多。
发明内容
本发明实施例的目的在于提供一种数据缓存处理方法,旨在解决采用现有缓存的结构对数据进行缓存处理时,容易导致内存空间浪费,记录查找效率低的问题。
本发明实施例是这样实现的,一种数据缓存处理方法,所述方法包括下述步骤:
配置缓存中的节点,以及所述节点对应的内存分片,所述节点用于存储数据的索引信息和指向对应内存分片的指针,所述内存分片用于存储写入缓存的数据;
根据配置的节点以及对应的内存分片对数据进行缓存处理。
本发明实施例的另一目的在于提供一种数据缓存处理系统,所述系统包括:
缓存配置单元,用于配置缓存中的节点,以及所述节点对应的内存分片,所述节点用于存储数据的索引信息和指向对应内存分片的指针,所述内存分片用于存储写入缓存的数据;以及
缓存处理操作单元,用于根据配置的节点以及对应的内存分片对数据进行缓存处理。
本发明实施例的另一目的在于提供一种数据缓存装置,所述装置包括节点区和内存分片区,所述节点区包括:
头部结构,用于存储哈希桶的位置,哈希桶的桶深,节点区的节点总数,已使用的节点数,哈希桶使用数,以及空闲节点链表头指针;
哈希桶,用于存储每个哈希值对应的节点链表头指针;以及
至少一个节点,用于存储记录的关键字,节点中的数据长度,节点对应的内存分片链表头指针,节点链表前指针,以及节点链表后指针;
所述内存分片区包括:
头部结构,用于存储所述内存分片区的内存分片总数,内存分片大小,空闲内存分片总数,空闲内存分片链表头指针,以及内存分片链表头指针;以及
至少一个内存分片,用于存储写入缓存的数据,以及下一内存分片指针。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(深圳)有限公司,未经腾讯科技(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200710077039.3/2.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置