WO2009033419A1 - Procédé de traitement de mise en antémémoire de données, système et dispositif de mise en antémémoire de données - Google Patents
Procédé de traitement de mise en antémémoire de données, système et dispositif de mise en antémémoire de données Download PDFInfo
- Publication number
- WO2009033419A1 WO2009033419A1 PCT/CN2008/072302 CN2008072302W WO2009033419A1 WO 2009033419 A1 WO2009033419 A1 WO 2009033419A1 CN 2008072302 W CN2008072302 W CN 2008072302W WO 2009033419 A1 WO2009033419 A1 WO 2009033419A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- node
- data
- memory
- cache
- keyword
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
Definitions
- the present invention belongs to the field of data caching, and in particular, to a data buffer processing method, system, and data cache device.
- the cache In computer and Internet applications, in order to improve user access speed and reduce the pressure on the back-end server, in the slow system of the database, disk, or the front end of the device, the cache is generally used, and the access speed is faster.
- the device stores data that users frequently access. Memory access speed is much faster than disk, which can reduce the pressure on the back-end device and respond to user requests in time.
- FIG. 1 shows the structure of an existing cache.
- the cache 11 contains a header structure, a hash bucket, and a plurality of nodes (Nodes).
- the header structure stores the location of the hash bucket (Hash Bucket), the bucket depth of the Hash bucket (the number of hash values), the number of nodes, and the number of nodes that have been used.
- the Hash bucket stores a node chain header pointer corresponding to each hash value, and the pointer points to a node. Since each node points to the next node up to the last node, the entire node chain can be obtained from the pointer.
- the node stores the key (Key), data (Data), and pointer to the next node, which is the main operating unit of the cache.
- Key key
- Data data
- pointer pointer to the next node, which is the main operating unit of the cache.
- an additional node list composed of a plurality of nodes is set up, and the head pointer is stored in the attached header.
- the additional node linked list is consistent with the node linked list.
- the data to be written into the cache and its corresponding keyword are obtained.
- the corresponding hash value is determined by a hash hash algorithm, and the node linked list corresponding to the hash value is sequentially traversed to find whether there is a corresponding
- the record for this keyword if there is one, updates the record, if not, inserts the data into the last node of the node list. If the node in the node list has been exhausted, the keyword and data are stored in an additional node list pointed to by the additional node chain header pointer.
- the corresponding hash value is determined by the Hash hash algorithm according to the keyword of the record, and the node linked list corresponding to the hash value is sequentially traversed to find whether there is a record corresponding to the keyword, if not found again To find the attached node list, if it has been found, return the corresponding data.
- the corresponding hash value is determined by the Hash hash algorithm according to the keyword of the record, and the node linked list corresponding to the hash value is sequentially traversed to find whether there is a record corresponding to the keyword, and if not found, Find the attached node list and delete it and find the corresponding data.
- the data space in the node must be larger than the length of the data to be stored. This requires a clearer understanding of the size of the cached data before the cache is used. Avoid large data that cannot be cached. At the same time, because the size of the data in the actual application generally has a large difference, each piece of data needs to occupy one node, which is easy to waste the memory space, and the memory space was wasted when the data is small. In addition, the search efficiency of the record is low. After searching a single node linked list, if the corresponding record is not found, it is necessary to find the attached node linked list, and the search takes more time in the case where the attached node linked list is long.
- the purpose of the embodiments of the present invention is to provide a data cache processing method, which aims to solve the problem that when the data is cached by the structure of the existing cache, the memory space is wasteful and the record search efficiency is low.
- the embodiment of the present invention is implemented as a data cache processing method, and the method includes the following steps:
- the node is used to store a keyword of the data, a data length in the node, and a pointer to the corresponding memory fragment, and the data length in the node is used for Representing the size of the actual stored data in the node, the memory fragment is used to store data written in the cache;
- the data is cached according to the configured node and the corresponding memory slice.
- Another object of the embodiments of the present invention is to provide a data cache processing system, where the system includes:
- a cache configuration unit configured to configure a node in the cache, and a memory slice corresponding to the node,
- the node is configured to store a keyword of the data, a data length in the node, and a pointer to the corresponding memory fragment, where the data length is used to indicate the size of the actually stored data in the node, and the memory fragment is used for Store data written to the cache;
- the cache processing operation unit is configured to cache data according to the configured node and the corresponding memory slice.
- Another object of the embodiments of the present invention is to provide a data cache device, where the device includes a node area and a memory fragment area, and the node area includes:
- Head structure the location for storing the hash bucket, the bucket depth of the hash bucket, the total number of nodes in the node area, the number of used nodes, the hash bucket usage number, and the idle node chain header pointer;
- a hash bucket for storing a node chain header pointer corresponding to each hash value
- At least one node a key for storing the record, a length of the data in the node, a pointer to the memory slice header of the node, a pointer to the front of the node list, and a pointer after the node list;
- the memory fragment area includes:
- a header structure a total number of memory fragments for storing the memory fragment area, a memory fragment size, a total number of free memory fragments, and a free memory fragment chain header pointer;
- At least one memory slice used to store data written to the cache, and the next memory slice pointer.
- the cached node and the memory fragment corresponding to the node, the key of the data stored in the node, the data length in the node, and a pointer to the corresponding memory fragment are stored, and the data is stored in the memory fragment.
- various data cache processing operations are performed.
- the embodiment of the invention has low requirements on data size, good versatility, and does not require prior knowledge of the size distribution of a single stored data, thereby improving the cache. The versatility can effectively reduce memory waste and improve memory usage.
- FIG. 1 is a structural diagram of a cache provided by the prior art
- FIG. 2 is a structural diagram of a cache provided by an embodiment of the present invention.
- FIG. 3 is a flowchart of an implementation of inserting a record in a cache according to an embodiment of the present invention
- FIG. 4 is a flowchart of an implementation of reading a record from a cache according to an embodiment of the present invention
- FIG. 6 is a structural diagram of a data cache processing system according to an embodiment of the present invention. detailed description
- the cached node and the memory fragment corresponding to the node, the keyword of the data stored in the node, the data length in the node, and a pointer to the corresponding memory fragment are configured, and the data length in the node is used for Indicates the size of the actual data stored in the node, stores the data in the memory slice, and performs various data cache processing operations, such as inserting a record, reading a record, or deleting a record, according to the node and the memory slice corresponding to the node.
- FIG. 2 shows a structure of a cache provided by an embodiment of the present invention.
- the cache 21 includes two areas, a node area and a memory chunk (Chunk) area.
- the memory fragment area is a shared memory area allocated in the memory.
- the shared memory area is divided into at least one memory slice for storing data, and the data corresponding to the same node can be stored in multiple memory slices, and the required memory is needed.
- the number of shards is allocated according to the size of the data.
- the node stores the key, the length of the data in the node, and a pointer to the corresponding memory slice.
- the node area contains a header structure, a Hash bucket, and at least one node.
- the head structure mainly stores the following information:
- the bucket depth of the Hash bucket indicates the number of hash values in the Hash bucket.
- Hash buckets used, indicating the number of current node linked lists in the Hash bucket
- the least recently used (Least Recently Used, LRU) operation adds a linked list head pointer to the LRU to operate the head of the attached linked list;
- the LRU operation attaches a linked list tail pointer to the end of the LRU operation additional linked list
- the idle node chain header pointer points to the head of the free node list. Each time a node needs to be allocated, the node is taken from the idle node list and the idle node header pointer is pointed to the next node.
- the Hash bucket mainly stores the node chain header pointer corresponding to each hash value. Determine the corresponding hash value by the Hash hash algorithm according to the keyword corresponding to the data, and obtain the bit of the hash value in the Hash bucket. Set, find the corresponding node chain header pointer, and find the entire node chain corresponding to the hash value.
- the node mainly stores the following information:
- a keyword is used to uniquely identify a record. Keywords with different records cannot be duplicated;
- the length of the data in the node indicating the length of the actual stored data in a node, based on which the number of memory fragments used can be calculated;
- the memory fragment chain header pointer points to a memory fragment on the memory fragment linked list storing the node data, and the entire memory fragment chain corresponding to the node can be obtained by using the pointer;
- the node uses the state chain table front pointer to point to the node using the previous node on the state list;
- the node uses the state chain table post pointer to point to the node using the next node on the state list;
- Last access time record the last access time of the record
- a flexible node insertion or deletion configuration may be performed on the node linked list according to the pointer of the node list and the pointer of the node list, for example, when a node is deleted, according to the node pointer of the node and the node list of the node
- the pointer adjusts the pointer of the node list of the adjacent previous node and the pointer of the node list of the next node, so that the node list after the node is deleted is continuous.
- the node uses the state chain header pointer
- the node uses the state chain tail pointer
- the node uses the state chain table front pointer
- the node uses the state chain table back pointer
- the node last access time and the number of accesses can implement the cached LRU, and the like. Operation, remove the least recently used data from the node out of memory, and recycle the corresponding memory fragments and nodes to save memory space.
- the usage status of the node is recorded, and the LRU operation is performed according to the last access time and the number of accesses of the node, and the node is eliminated.
- the node of the previous node of the node uses the state chain table and the pointer points to the next node of the node, and the node of the node after the node uses the front pointer of the state list to point to the previous node of the node.
- the nodes of the node are connected, and then the node of the node uses the state chain table and the pointer points to the node pointed by the node using the state chain header pointer, and the node uses the state chain header pointer to point to the node, thereby inserting the node into the node.
- Similar processing occurs when other nodes are accessed, and the node uses the state chain tail pointer to point to the least visited node.
- Delete node usage when performing LRU operations The data in the memory fragment corresponding to the node currently pointed to by the state chain end pointer is collected, and the memory fragment of the node is reclaimed.
- the memory fragment area mainly stores the linked list structure and data of the data fragment, including the header structure and at least one memory fragment.
- the head structure mainly stores the following information:
- Memory fragment size indicating the length of data that a memory slice can store
- the free memory slice chain header pointer points to the head of the free memory slice list.
- the memory slice contains a data area and a memory slice pointer, which are used to store the actual recorded data and the next memory slice pointer, respectively. If a memory slice is not enough to store one record of data, multiple memory slices can be linked together, and the data slice is stored in the data storage area corresponding to each memory slice.
- FIG. 3 is a flowchart showing an implementation process of inserting a record in a cache according to an embodiment of the present invention.
- step S301 the data that needs to be written into the cache and its corresponding keyword are obtained, and the corresponding hash value is obtained by the Hash hash algorithm according to the keyword;
- step S302 the node chain header pointer corresponding to the hash value is obtained according to the location of the hash value in the Hash bucket.
- step S303 according to the node chain header pointer, traversing the node list in the Hash bucket to find out whether the keyword already exists, if yes, step S304 is performed; otherwise, step S308 is performed;
- step S304 it is determined whether the total capacity of the free memory fragment can accommodate the data of the write buffer after the node and the memory fragment storing the record corresponding to the keyword are reclaimed, and if yes, step S305 is performed; otherwise, the process ends;
- step S305 the data in the record corresponding to the keyword is deleted, and the memory slice after the data is deleted is recovered.
- step S306 the required memory segments are re-allocated according to the data length in the node; in step S307, the data is sliced and sequentially written into the allocated memory segments to form a memory. Storing the data slice list of the data, and pointing the node's memory slice chain header pointer to the head of the memory slice list;
- step S308 it is determined whether the capacity of the free total memory fragment can accommodate the data of the write buffer, if yes, step S309 is performed, otherwise the process ends;
- step S309 a node is taken out from the idle node list
- step S310 a corresponding number of memory fragments are allocated according to the length of the data to be stored and the size of the memory fragment, and the allocated memory fragments are taken out from the free memory fragment list, and step S307 is performed to slice the data sequentially.
- step S307 is performed to slice the data sequentially.
- the user data fragment when a record is added, if the user data exceeds the amount of data that can be stored by one memory slice, the user data fragment needs to be stored into multiple memory slices.
- the size of the first n-1 data fragments is equal to the capacity of the memory fragment to save data.
- the last memory fragment saves the remaining data, which may be less than the capacity of the memory fragment.
- the process of reading a record is reversed. It is necessary to read the memory slice data in turn and restore it to a complete data block.
- FIG. 4 is a flowchart showing an implementation process for reading a record from a cache according to an embodiment of the present invention.
- step S401 a keyword of the data to be read is obtained, and a hash value corresponding to the keyword is obtained by using a Hash hash algorithm according to the keyword;
- step S402 searching for a corresponding node chain header pointer according to the location of the hash value in the Hash bucket;
- step S403 according to the node chain header pointer, traversing the node linked list in the Hash bucket to find out whether the keyword already exists, if yes, step S404 is performed; otherwise, the process ends;
- step S404 searching for a memory slice chain header pointer corresponding to the node
- step S405 the memory segment data is sequentially read from the memory slice list pointed to by the memory slice header pointer, and restored to a complete data block, and returned to the user.
- FIG. 5 is a flowchart showing an implementation process for deleting a record from a cache according to an embodiment of the present invention.
- step S501 a keyword that needs to be deleted from the cache is obtained, and a hash value corresponding to the keyword is obtained by using a Hash hash algorithm according to the keyword;
- step S502 searching for a corresponding node chain header pointer according to the location of the hash value in the Hash bucket;
- step S503 according to the node chain header pointer, traversing the node linked list in the Hash bucket to find whether the keyword already exists, if yes, step S504 is performed; otherwise, the process ends;
- step S504 searching for a memory slice chain header pointer corresponding to the node
- step S505 the data saved in the memory slice list is deleted, and the memory sliced pointers of the memory fragments in the memory slice list are all pointed to the free memory slice list, thereby recovering the memory fragments to Free memory slice list;
- step S506 the node fragmentation header pointer of the node is pointed to the idle node list, and the node is recycled to the idle node list.
- FIG. 6 shows the structure of the data cache processing system provided by the embodiment of the present invention, which is described in detail as follows:
- the cache configuration unit 61 configures the nodes in the cache 63 and the memory fragments corresponding to the nodes.
- the key of the data stored in the node, the data length in the node, and the pointer to the corresponding memory fragment, and the data length memory fragment in the node stores the data written in the cache 63.
- the node contains the data key, the data length in the node, the memory fragment chain header pointer corresponding to the node, the front pointer of the node linked list, and the pointer after the node linked list.
- the node area configuration module 611 configures information stored in the node area, where the node area includes a header structure, a Hash bucket, and at least one node, a node area header structure, a Hash bucket, and information stored in the node. As mentioned before, it will not be repeated.
- the memory fragmentation area configuration module 612 configures information stored in the memory fragmentation area, and the memory fragmentation area includes a header structure and at least one memory fragment, and the information stored in the memory fragmentation header structure and the memory fragment is as described above. Narration.
- the cache processing operation unit 62 performs cache processing on the data according to the configured node and the corresponding memory slice.
- the record inserting module 621 queries the node linked list according to the keyword corresponding to the data that needs to be written into the cache 63.
- the keyword exists in the node linked list
- the data in the memory slice corresponding to the keyword is deleted. Recycling the memory fragments after deleting the data, and allocating the corresponding memory fragments according to the size of the data, and then writing the data into the allocated memory fragments in sequence, and when the keyword does not exist in the node linked list, the allocation is performed.
- a free node, and a memory slice corresponding to the length of the data sequentially writes the data slice into the allocated memory slice.
- the record reading module 622 queries the node linked list according to the keyword corresponding to the data that needs to be written into the cache 63.
- the keyword exists in the node linked list, the memory corresponding to the keyword is sequentially read. The data in the slice is restored to a complete block of data.
- the record deletion module 623 queries the node linked list according to the keyword corresponding to the data that needs to be written into the cache 63.
- the keyword exists in the node linked list, the data in the memory slice corresponding to the keyword is deleted.
- Delete reclaim the memory fragment after deleting the data and the corresponding node.
- the least-used processing module 624 can perform LRU operations on the data in the cache 63 according to the recorded access time and the number of accesses, and move the least recently used data out of the memory to recover the corresponding memory fragments. And nodes to save memory space.
- the embodiment of the invention has low requirements on data size, good versatility, and does not require a priori knowledge of the size distribution of a single stored data, which not only improves the versatility of the cache, but also effectively reduces memory waste and improves memory usage.
- data search efficiency is relatively high, supporting operations such as LRU.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
一种数据緩存处理方法、 ***及数据緩存装置
本申请要求于 2007 年 9 月 11 日提交中国专利局、 申请号为 200710077039.3、发明名称为 "一种数据緩存处理方法、 ***及数据緩存装置" 的中国专利申请的优先权, 其全部内容通过引用结合在本申请中。
技术领域
本发明属于数据緩存领域, 尤其涉及一种数据緩存处理方法、 ***及数据 緩存装置。
背景技术
在计算机与互联网应用中,为了提高用户的访问速度并降低后端服务器的 压力, 在数据库、 磁盘等慢速***或设备的前端, 一般釆用緩存(Cache )技 术, 利用内存等访问速度较快的设备存储用户经常访问的数据, 内存的访问速 度比磁盘等快得多, 既可以减轻后端设备的压力, 又能够及时响应用户请求。
緩存中可以存储各种数据类型, 例如用户的属性数据、 图片数据以及用户 需要保存的各种文件等。 图 1示出了现有緩存的结构,緩存 11包含头部结构、 哈希(Hash )桶和多个节点(Node )。 其中, 头部结构中保存有哈希桶(Hash Bucket ) 的位置, Hash桶的桶深(hash值个数) , 节点数, 已经使用的节点 数等。 Hash桶中存储各 hash值对应的节点链表头指针,该指针指向一个节点, 由于每个节点都指向下一个节点直至最后一个节点,因此从该指针可以得到整 条节点链。
节点中存储关键字 (Key ) 、 数据(Data )和指向下一节点的指针, 是緩 存的主要操作单元。 在某个 hash值所对应的节点链表长度不够时, 设立由多 个节点组成的附加节点链表备用, 其头指针保存在附加头部。 附加节点链表与 节点链表的组织形式一致。
当***一条记录时,得到需要写入緩存的数据及其对应的关键字,根据该 关键字通过 Hash散列算法确定对应的 hash值, 顺序遍历该 hash值对应的节 点链表, 查找是否存在对应于该关键字的记录, 如果有则更新该记录, 如果没 有则将数据***到该节点链表的最后一个节点。如果该节点链表中的节点已经 用完, 则将该关键字和数据存储在附加节点链表头指针指向的附加节点链表 中。
当读取一条记录时, 根据该记录的关键字通过 Hash散列算法确定对应的 hash值, 顺序遍历该 hash值对应的节点链表, 查找是否存在对应于该关键字 的记录, 如果没有查找到再去查找附加节点链表, 如果已经查找到, 则将相应 数据返回。
当删除一条记录时, 根据该记录的关键字通过 Hash散列算法确定对应的 hash值, 顺序遍历该 hash值对应的节点链表, 查找是否存在对应于该关键字 的记录,如果没有查找到再去查找附加节点链表, 查找到后删除此关键字和相 应数据。
在现有緩存中, 由于一块数据必须存储在一个节点内, 因此节点内的数据 空间必须大于所需要存储的数据长度,这就需要在緩存使用之前对緩存的数据 大小有一个较为明确的认识, 避免较大的数据无法存入緩存。 同时, 由于实际 应用中数据的大小一般存在较大的差别,但每块数据都需要占用一个节点, 容 易造成内存空间的浪费, 在数据较小时浪费的内存空间更大。 另外, 记录的查 找效率低, 查找完单个节点链表后,如果没有查找到相应记录还需要查找附加 节点链表, 在附加节点链表较长的情况下查找消耗的时间较多。
发明内容
本发明实施例的目的在于提供一种数据緩存处理方法,旨在解决釆用现有 緩存的结构对数据进行緩存处理时, 容易导致内存空间浪费,记录查找效率低 的问题。
本发明实施例是这样实现的, 一种数据緩存处理方法, 所述方法包括下述 步骤:
配置緩存中的节点, 以及所述节点对应的内存分片, 所述节点用于存储数 据的关键字、节点中的数据长度和指向对应内存分片的指针, 所述节点中的数 据长度用于表示节点中实际存储数据的大小,所述内存分片用于存储写入緩存 的数据;
根据配置的节点以及对应的内存分片对数据进行緩存处理。
本发明实施例的另一目的在于提供一种数据緩存处理***, 所述***包 括:
緩存配置单元, 用于配置緩存中的节点, 以及所述节点对应的内存分片,
所述节点用于存储数据的关键字、节点中的数据长度和指向对应内存分片的指 针, 所述节点中的数据长度用于表示节点中实际存储数据的大小, 所述内存分 片用于存储写入緩存的数据; 以及
緩存处理操作单元,用于根据配置的节点以及对应的内存分片对数据进行 緩存处理。
本发明实施例的另一目的在于提供一种数据緩存装置,所述装置包括节点 区和内存分片区, 所述节点区包括:
头部结构, 用于存储哈希桶的位置, 哈希桶的桶深, 节点区的节点总数, 已使用的节点数, 哈希桶使用数, 以及空闲节点链表头指针;
哈希桶, 用于存储每个哈希值对应的节点链表头指针; 以及
至少一个节点, 用于存储记录的关键字, 节点中的数据长度, 节点对应的 内存分片链表头指针, 节点链表前指针, 以及节点链表后指针;
所述内存分片区包括:
头部结构, 用于存储所述内存分片区的内存分片总数, 内存分片大小, 空 闲内存分片总数以及空闲内存分片链表头指针; 以及
至少一个内存分片, 用于存储写入緩存的数据, 以及下一内存分片指针。 在本发明实施例中, 配置緩存的节点以及节点对应的内存分片, 节点中存 储数据的关键字、 节点中的数据长度和指向对应内存分片的指针,将数据存储 在内存分片中, 根据节点以及节点对应的内存分片执行各种数据緩存处理操 作, 该发明实施例对数据的大小要求较低, 通用性好, 不需要对单个存储数据 大小分布的先验知识, 既提高了緩存的通用性, 又可以有效减少内存的浪费, 提高内存使用率。
附图说明
图 1是现有技术提供的緩存的结构图;
图 2是本发明实施例提供的緩存的结构图;
图 3是本发明实施例提供的在緩存中***一条记录的实现流程图; 图 4是本发明实施例提供的从緩存中读出一条记录的实现流程图; 图 5是本发明实施例提供的从緩存中删除一条记录的实现流程图; 图 6是本发明实施例提供的数据緩存处理***的结构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白, 以下结合附图及实 施例, 对本发明进行进一步详细说明。 应当理解, 此处所描述的具体实施例仅 仅用以解释本发明, 并不用于限定本发明。
在本发明实施例中, 配置緩存的节点以及节点对应的内存分片, 节点中存 储数据的关键字、 节点中的数据长度和指向对应内存分片的指针, 所述节点中 的数据长度用于表示节点中实际存储数据的大小, 将数据存储在内存分片中, 并根据节点以及节点对应的内存分片执行各种数据緩存处理操作,例如***记 录、 读取记录或者删除记录等。
图 2示出了本发明实施例提供的緩存的结构, 緩存 21包括节点区和内存 分片 (Chunk ) 区两个区。 内存分片区是在内存中分配的一个共享内存区, 该 共享内存区划分为至少一个内存分片, 用于存储数据, 同一个节点对应的数据 可以存储在多个内存分片中, 需要的内存分片数量根据数据的大小分配。 节点 中存储关键字、 节点中的数据长度和指向对应内存分片的指针。
节点区包含头部结构, Hash桶和至少一个节点。 头部结构主要存储如下 信息:
1. Hash桶的位置, 指向 Hash桶的起始位置;
2. Hash桶的桶深, 表示 Hash桶内 hash值的个数;
3. 节点总数, 表示该緩存最多可以存储的记录个数;
4. 已使用的节点数;
5. Hash桶使用数, 表示 Hash桶中当前节点链表的个数;
6. 最近最少使用 (Least Recently Used, LRU )操作附加链表头指针, 指 向 LRU操作附加链表的头部;
7. LRU操作附加链表尾指针, 指向 LRU操作附加链表的尾部;
8. 空闲节点链表头指针, 指向空闲节点链表的头部, 每次需要分配节点 时, 从空闲节点链表上取下一个节点使用, 并将空闲节点链表头指针 指向下一个节点。
Hash桶主要存储每个 hash值对应的节点链表头指针。 根据数据对应的关 键字通过 Hash散列算法确定对应的 hash值, 获取该 hash值在 Hash桶中的位
置, 查找对应的节点链表头指针, 从而查找到该 hash值对应的整条节点链。 节点主要存储以下信息:
1. 关键字, 用来唯一确定一条记录, 不同记录的关键字不能重复;
2. 节点中的数据长度, 表示一个节点中实际存储数据的长度, 可以据此 计算所使用的内存分片数量;
3. 内存分片链表头指针, 指向存储该节点数据的内存分片链表上的一个 内存分片, 通过该指针可以得到该节点对应的整条内存分片链;
4. 节点链表前指针, 指向当前节点链表上的前一个节点;
5. 节点链表后指针, 指向当前节点链表上的后一个节点;
6. 节点使用状态链表前指针, 指向节点使用状态链表上的前一个节点;
7. 节点使用状态链表后指针, 指向节点使用状态链表上的后一个节点;
8. 最后访问时间, 记录该条记录的最后访问时间;
9. 访问次数, 记录该条记录在緩存中被访问的次数。
在本发明实施例中,可以根据节点链表前指针和节点链表后指针对节点链 表进行灵活的节点***或者删除等配置, 例如将一个节点删除时,根据该节点 的节点链表前指针和节点链表后指针调整其相邻的上一节点的节点链表后指 针和下一节点的节点链表前指针, 使得删除了该节点后的节点链表连续。
另外, 本发明实施例通过节点使用状态链表头指针、节点使用状态链表尾 指针、 节点使用状态链表前指针、 节点使用状态链表后指针, 以及节点的 最后访问时间、访问次数可以实现緩存的 LRU等操作, 将节点中最近最少 使用的数据移出内存, 回收相应的内存分片和节点, 以节省内存空间。
本发明实施例中, 记录节点的使用状态,按照节点的最后访问时间和访问 次数执行 LRU操作, 对节点进行淘汰。 当一个节点被访问时, 将该节点的前 一个节点的节点使用状态链表后指针指向该节点的后一个节点,将该节点后一 个节点的节点使用状态链表前指针指向该节点的前一个节点,这样就将该节点 的前后节点连接起来,然后将该节点的节点使用状态链表后指针指向节点使用 状态链表头指针指向的节点,将节点使用状态链表头指针指向该节点,从而将 该节点插到使用状态链表的头部。 当其他节点被访问时作类似处理, 节点使用 状态链表尾指针指向最少被访问的节点。 在执行 LRU操作时, 删除节点使用
状态链表尾指针当前指向的节点对应的内存分片中的数据,将该节点的内存分 片回收。
内存分片区主要存储数据分片的链表结构和数据,包括头部结构和至少一 个内存分片。
头部结构主要保存如下信息:
1. 内存分片总数, 表示内存分片区中的总内存分片数;
2. 内存分片大小, 表示一个内存分片能够存储的数据长度;
3. 空闲内存分片总数, 表示緩存还可以增加存储的最大数据长度;
4. 空闲内存分片链表头指针, 指向空闲内存分片链表的头部, 每次需要 分配节点内存分片时 ,从空闲内存分片链表上取空闲的内存分片使用。 内存分片包含数据区和内存分片后指针,分别用于存储实际记录的数据和 下一内存分片指针。如果一个内存分片不够存储一条记录的数据, 则可以将多 个内存分片链接起来, 将数据分片存储在每个内存分片对应的数据存储区域 中。
图 3示出了本发明实施例提供的在緩存中***一条记录的实现流程,详述 下:
在步骤 S301中, 获取需要写入緩存的数据及其对应的关键字, 根据该关 键字通过 Hash散列算法获取对应的 hash值;
在步骤 S302中, 根据该 hash值在 Hash桶中的位置, 获取该 hash值对应 的节点链表头指针;
在步骤 S303中,根据该节点链表头指针, 遍历 Hash桶中的节点链表, 查 找该关键字是否已存在, 是则执行步骤 S304, 否则执行步骤 S308;
在步骤 S304中,判断回收存储该关键字对应的记录的节点和内存分片后, 空闲内存分片的总容量是否能够容纳该写入緩存的数据, 是则执行步骤 S305 , 否则结束;
在步骤 S305中, 将该关键字对应的记录中的数据删除, 回收删除了数据 后的内存分片。
在步骤 S306中, 根据节点中的数据长度重新分配需要的内存分片; 在步骤 S307中, 将数据进行分片后依次写入分配的内存分片中, 形成存
储该数据的内存分片链表,并将节点的内存分片链表头指针指向该内存分片链 表的头部;
在步骤 S308中, 判断空闲的总内存分片的容量是否能够容纳该写入緩存 的数据, 是则执行步骤 S309, 否则结束;
在步骤 S309中, 从空闲节点链表上取出一个节点;
在步骤 S310中, 根据需要存储的数据长度和内存分片的大小分配相应数 量的内存分片,从空闲内存分片链表上取出所分配的内存分片,执行步骤 S307 将数据进行分片后依次写入所分配的内存分片中,形成存储该数据的内存分片 链表, 并将节点的内存分片链表头指针指向该内存分片链表的头部。
在本发明实施例中, 添加一条记录时, 如果用户数据超过一个内存分片所 能存储的数据量, 则需要将用户数据分片存储到多个内存分片中去。假设需要 n个内存分片, 前 n-1个数据分片的大小都等于内存分片保存数据的容量, 最 后一个内存分片保存剩余数据, 可能小于该内存分片的容量。读取一条记录的 过程则相反, 需要依次读取内存分片数据, 恢复成完整的数据块。
图 4示出了本发明实施例提供的从緩存中读出一条记录的实现流程,详述 下:
在步骤 S401中, 获取需要读取的数据的关键字, 根据该关键字通过 Hash 散列算法获取该关键字对应的 hash值;
在步骤 S402中, 根据 hash值在 Hash桶中的位置, 查找对应的节点链表 头指针;
在步骤 S403中,根据该节点链表头指针, 遍历 Hash桶中的节点链表, 查 找该关键字是否已存在, 是则执行步骤 S404, 否则结束;
在步骤 S404中, 查找该节点对应的内存分片链表头指针;
在步骤 S405中, 从该内存分片链表头指针指向的内存分片链表中依次读 取内存分片数据, 恢复成完整的数据块, 返回给用户。
图 5示出了本发明实施例提供的从緩存中删除一条记录的实现流程,详述 下:
在步骤 S501中, 获取需要从緩存中删除的数据的关键字, 根据该关键字 通过 Hash散列算法获取该关键字对应的 hash值;
在步骤 S502中, 根据 hash值在 Hash桶中的位置, 查找对应的节点链表 头指针;
在步骤 S503中,根据该节点链表头指针, 遍历 Hash桶中的节点链表, 查 找该关键字是否已存在, 是则执行步骤 S504, 否则结束;
在步骤 S504中, 查找该节点对应的内存分片链表头指针;
在步骤 S505中, 将该内存分片链表中保存的数据删除, 并将该内存分片 链表中的内存分片的内存分片后指针全部指向空闲内存分片链表,从而将内存 分片回收至空闲内存分片链表中;
在步骤 S506中, 将该节点的内存分片链表头指针指向空闲节点链表, 从 而将该节点回收至空闲节点链表中。
图 6示出了本发明实施例提供的数据緩存处理***的结构, 详述如下: 緩存配置单元 61对緩存 63中的节点,以及节点对应的内存分片进行配置。 其中, 节点中存储数据的关键字、 节点中的数据长度和指向对应内存分片的指 针, 所述节点中的数据长度内存分片中存储写入緩存 63的数据。 如前所述, 节点中包含有数据的关键字, 节点中的数据长度, 节点对应的内存分片链表头 指针, 节点链表前指针, 以及节点链表后指针等信息。
在对緩存 63进行配置时, 节点区配置模块 611配置节点区存储的信息, 节点区中包括头部结构、 Hash桶以及至少一个节点, 节点区头部结构、 Hash 桶和节点中存储的信息如前所述, 不再赘述。 内存分片区配置模块 612配置内 存分片区存储的信息, 内存分片区中包括头部结构和至少一个内存分片, 内存 分片区头部结构和内存分片中存储的信息如前所述, 不再赘述。
緩存处理操作单元 62根据配置的节点以及对应的内存分片对数据进行緩 存处理。
当***一条记录时, 记录***模块 621根据需要写入緩存 63的数据所对 应的关键字, 查询节点链表, 当节点链表中存在该关键字时, 删除该关键字对 应的内存分片中的数据, 回收删除数据后的内存分片, 并根据数据的大小分配 相应的内存分片, 将数据分片后依次写入所分配的内存分片中, 当节点链表中 不存在该关键字时,分配一个空闲节点,以及与该数据的长度对应的内存分片, 将数据分片依次写入所分配的内存分片中。
当读取一条记录时, 记录读取模块 622根据需要写入緩存 63的数据所对 应的关键字, 查询节点链表, 当节点链表中存在该关键字时, 依次读取该关键 字对应的内存分片中的数据, 恢复成完整的数据块。
当删除一条记录时, 记录删除模块 623根据需要写入緩存 63的数据所对 应的关键字, 查询节点链表, 当节点链表中存在该关键字时, 将该关键字对应 的内存分片中的数据删除, 回收删除数据后的内存分片以及对应的节点。
作为本发明的一个实施例, 通过最近最少使用处理模块 624 , 可以根据记 录的访问时间和访问次数对緩存 63中的数据进行 LRU操作,将最近最少使用 的数据移出内存, 回收相应的内存分片和节点, 以节省内存空间。
本发明实施例对数据的大小要求较低, 通用性好, 不需要对单个存储数据 大小分布的先验知识, 既提高了緩存的通用性, 又可以有效减少内存的浪费, 提高内存使用率。 同时, 数据查找效率比较高, 支持 LRU等操作。
以上所述仅为本发明的较佳实施例而已, 并不用以限制本发明, 凡在本发 明的精神和原则之内所作的任何修改、等同替换和改进等, 均应包含在本发明 的保护范围之内。
Claims
1、 一种数据緩存处理方法, 其特征在于, 所述方法包括下述步骤: 配置緩存中的节点, 以及所述节点对应的内存分片, 所述节点存储数据的 关键字、节点中的数据长度和指向对应内存分片的指针, 所述节点中的数据长 度用于表示节点中实际存储数据的大小, 所述内存分片存储写入緩存的数据; 根据配置的节点以及对应的内存分片对数据进行緩存处理。
2、 如权利要求 1所述的方法, 其特征在于, 当***一条记录时, 所述根 据配置的节点以及对应的内存分片对数据进行緩存处理的步骤具体为:
根据需要写入緩存的数据所对应的关键字,查询节点链表中是否存在该关 键字;
当节点链表中存在该关键字,且回收该关键字对应的内存分片后, 空闲内 存分片的总容量能够容纳所述写入緩存的数据时,回收该关键字对应的内存分 片,根据所述节点中的数据长度分配相应的内存分片,将所述写入緩存的数据 分片后依次写入所分配的内存分片中;
当节点链表中不存在该关键字时,且空闲内存分片的总容量能够容纳所述 写入緩存的数据时, 分配一个空闲节点, 以及与所述节点中的数据长度对应的 内存分片, 将所述写入緩存的数据分片后依次写入所分配的内存分片中。
3、 如权利要求 1所述的方法, 其特征在于, 当读取一条记录时, 所述根 据配置的节点以及对应的内存分片对数据进行緩存处理的步骤具体为:
根据需要从緩存中读取的数据所对应的关键字,查询节点链表中是否存在 该关键字,是则根据指向对应内存分片的指针和节点中的数据长度依次读取该 关键字对应的内存分片中的数据, 恢复成完整的数据块, 否则结束。
4、 如权利要求 1所述的方法, 其特征在于, 当删除一条记录时, 所述根 据配置的节点以及对应的内存分片对数据进行緩存处理的步骤具体为:
根据需要从緩存中删除的数据所对应的关键字,查询节点链表中是否存在 该关键字,是则根据指向对应内存分片的指针和节点中的数据长度将该关键字 对应的内存分片中的数据删除, 回收删除数据后的内存分片以及对应的节点, 否则结束。
5、 如权利要求 1所述的方法, 其特征在于, 所述配置的节点中还存储有
记录的最后访问时间和访问次数,所述根据配置的节点以及对应的内存分片对 数据进行緩存处理的步骤进一步包括:
根据所述记录的访问时间和访问次数对緩存中的数据进行最近最少使用
LRU操作。
6、 一种数据緩存处理***, 其特征在于, 所述***包括:
緩存配置单元, 用于配置緩存中的节点, 以及所述节点对应的内存分片, 所述节点存储数据的关键字、 节点中的数据长度和指向对应内存分片的指针, 所述节点中的数据长度用于表示节点中实际存储数据的大小,所述内存分片存 储写入緩存的数据; 以及
緩存处理操作单元,用于根据配置的节点以及对应的内存分片对数据进行 緩存处理。
7、 如权利要求 6所述的***, 其特征在于, 所述緩存配置单元包括: 节点区配置模块,用于配置节点区存储的信息,所述节点区包括头部结构、 哈希桶以及至少一个节点;
内存分片区配置模块,用于配置内存分片区存储的信息, 所述内存分片区 包括头部结构以及至少一个内存分片。
8、 如权利要求 6所述的***, 其特征在于, 所述緩存处理操作单元包括: 记录***模块,用于根据需要写入緩存的数据所对应的关键字, 查询节点 链表,当节点链表中存在该关键字时,删除该关键字对应的内存分片中的数据, 回收删除数据后的内存分片, 并根据节点中的数据长度分配相应的内存分片, 将数据分片后依次写入所分配的内存分片中, 当节点链表中不存在该关键字 时, 分配一个空闲节点, 以及与该节点中的数据长度对应的内存分片, 将数据 分片依次写入所分配的内存分片中。
9、 如权利要求 6所述的***, 其特征在于, 所述緩存处理操作单元包括: 记录读取模块,用于根据需要从緩存中读取的数据所对应的关键字, 查询 节点链表, 当节点链表中存在该关键字时,根据指向对应内存分片的指针和节 点中的数据长度依次读取该关键字对应的内存分片中的数据,恢复成完整的数 据块。
10、如权利要求 6所述的***,其特征在于,所述緩存处理操作单元包括:
记录删除模块, 用于根据需要从緩存中删除的数据所对应的关键字, 查询 节点链表, 当节点链表中存在该关键字时,根据指向对应内存分片的指针和节 点中的数据长度将该关键字对应的内存分片中的数据删除,回收删除数据后的 内存分片以及对应的节点。
11、如权利要求 6所述的***,其特征在于,所述緩存处理操作单元包括: 最近最少使用处理模块,用于根据记录的访问时间和访问次数对緩存中的 数据进行最近最少使用 LRU操作。
12、一种数据緩存装置,其特征在于,所述装置包括节点区和内存分片区, 所述节点区包括:
头部结构, 用于存储哈希桶的位置, 哈希桶的桶深, 节点区的节点总数, 已使用的节点数, 哈希桶使用数, 以及空闲节点链表头指针;
哈希桶, 用于存储每个哈希值对应的节点链表头指针; 以及
至少一个节点, 用于存储记录的关键字, 节点中的数据长度, 节点对应的 内存分片链表头指针, 节点链表前指针, 以及节点链表后指针;
所述内存分片区包括:
头部结构, 用于存储所述内存分片区的内存分片总数, 内存分片大小, 空 闲内存分片总数以及空闲内存分片链表头指针; 以及
至少一个内存分片, 用于存储写入緩存的数据, 以及下一内存分片指针。
13、 如权利要求 12所述的装置, 其特征在于, 所述节点区的头部结构中 进一步存储有最近最少使用 LRU操作附加链表头指针和 LRU操作附加链表尾 指针;
所述节点中进一步存储有节点使用状态链表前指针、节点使用状态链表后 指针、 节点的最后访问时间以及节点的访问次数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/707,735 US20100146213A1 (en) | 2007-09-11 | 2010-02-18 | Data Cache Processing Method, System And Data Cache Apparatus |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007100770393A CN100498740C (zh) | 2007-09-11 | 2007-09-11 | 一种数据缓存处理方法、***及数据缓存装置 |
CN200710077039.3 | 2007-09-11 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/707,735 Continuation US20100146213A1 (en) | 2007-09-11 | 2010-02-18 | Data Cache Processing Method, System And Data Cache Apparatus |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2009033419A1 true WO2009033419A1 (fr) | 2009-03-19 |
Family
ID=39085224
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2008/072302 WO2009033419A1 (fr) | 2007-09-11 | 2008-09-09 | Procédé de traitement de mise en antémémoire de données, système et dispositif de mise en antémémoire de données |
Country Status (3)
Country | Link |
---|---|
US (1) | US20100146213A1 (zh) |
CN (1) | CN100498740C (zh) |
WO (1) | WO2009033419A1 (zh) |
Families Citing this family (50)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100498740C (zh) * | 2007-09-11 | 2009-06-10 | 腾讯科技(深圳)有限公司 | 一种数据缓存处理方法、***及数据缓存装置 |
CN101656659B (zh) * | 2008-08-19 | 2012-05-23 | 中兴通讯股份有限公司 | 一种混合业务流的缓存处理方法、存储转发方法及装置 |
US10558705B2 (en) * | 2010-10-20 | 2020-02-11 | Microsoft Technology Licensing, Llc | Low RAM space, high-throughput persistent key-value store using secondary memory |
CN102196298A (zh) * | 2011-05-19 | 2011-09-21 | 广东星海数字家庭产业技术研究院有限公司 | 一种分布式视频点播***与方法 |
CN102999434A (zh) * | 2011-09-15 | 2013-03-27 | 阿里巴巴集团控股有限公司 | 一种内存管理方法及装置 |
CN104598390B (zh) * | 2011-11-14 | 2019-06-04 | 北京奇虎科技有限公司 | 一种数据存储方法及装置 |
CN102521161B (zh) * | 2011-11-21 | 2015-01-21 | 华为技术有限公司 | 一种数据的缓存方法、装置和服务器 |
CN103139224B (zh) * | 2011-11-22 | 2016-01-27 | 腾讯科技(深圳)有限公司 | 一种网络文件***及网络文件***的访问方法 |
CN103136278B (zh) * | 2011-12-05 | 2016-10-05 | 腾讯科技(深圳)有限公司 | 一种读取数据的方法及装置 |
KR101434887B1 (ko) * | 2012-03-21 | 2014-09-02 | 네이버 주식회사 | 네트워크 스위치를 이용한 캐시 시스템 및 캐시 서비스 제공 방법 |
CN102647251A (zh) * | 2012-03-26 | 2012-08-22 | 北京星网锐捷网络技术有限公司 | 数据传输方法及***、发送端设备与接收端设备 |
CN102880628B (zh) * | 2012-06-15 | 2015-02-25 | 福建星网锐捷网络有限公司 | 哈希数据存储方法和装置 |
CN103544117B (zh) * | 2012-07-13 | 2017-03-01 | 阿里巴巴集团控股有限公司 | 一种数据读取方法及装置 |
CN102831181B (zh) * | 2012-07-31 | 2014-10-01 | 北京光泽时代通信技术有限公司 | 缓存文件的目录刷新方法 |
CN102831694B (zh) * | 2012-08-09 | 2015-01-14 | 广州广电运通金融电子股份有限公司 | 一种图像识别***及图像存储控制方法 |
CN103714059B (zh) * | 2012-09-28 | 2019-01-29 | 腾讯科技(深圳)有限公司 | 一种更新数据的方法及装置 |
CN103020182B (zh) * | 2012-11-29 | 2016-04-20 | 深圳市新国都技术股份有限公司 | 一种基于hash算法的数据查找方法 |
US9348752B1 (en) | 2012-12-19 | 2016-05-24 | Amazon Technologies, Inc. | Cached data replication for cache recovery |
CN103905503B (zh) * | 2012-12-27 | 2017-09-26 | ***通信集团公司 | 数据存取方法、调度方法、设备及*** |
CN103152627B (zh) * | 2013-03-15 | 2016-08-03 | 华为终端有限公司 | 机顶盒时移数据存储方法、装置和机顶盒 |
CN103560976B (zh) * | 2013-11-20 | 2018-12-07 | 迈普通信技术股份有限公司 | 一种控制数据发送的方法、装置及*** |
CN104850507B (zh) * | 2014-02-18 | 2019-03-15 | 腾讯科技(深圳)有限公司 | 一种数据缓存方法和数据缓存装置 |
CN105095261A (zh) * | 2014-05-08 | 2015-11-25 | 北京奇虎科技有限公司 | 数据***方法和装置 |
CN105335297B (zh) * | 2014-08-06 | 2018-05-08 | 阿里巴巴集团控股有限公司 | 基于分布式内存和数据库的数据处理方法、装置和*** |
CN105701130B (zh) * | 2014-11-28 | 2019-02-01 | 阿里巴巴集团控股有限公司 | 数据库数值扣减方法及*** |
CN104462549B (zh) * | 2014-12-25 | 2018-03-23 | 瑞斯康达科技发展股份有限公司 | 一种数据处理方法和装置 |
CN106202121B (zh) * | 2015-05-07 | 2019-06-28 | 阿里巴巴集团控股有限公司 | 数据存储及导出的方法和设备 |
CN106547603B (zh) * | 2015-09-23 | 2021-05-18 | 北京奇虎科技有限公司 | 减少golang语言***垃圾回收时间的方法和装置 |
CN105740352A (zh) * | 2016-01-26 | 2016-07-06 | 华中电网有限公司 | 用于智能电网调度控制***的历史数据服务*** |
CN107544964A (zh) * | 2016-06-24 | 2018-01-05 | 吴建凰 | 一种用于时序数据库的数据块存储方法 |
CN106919454B (zh) * | 2017-01-25 | 2020-02-21 | 安科讯(福建)科技有限公司 | 基于lte协议栈的内存池问题定位方法及其*** |
CN107018040A (zh) * | 2017-02-27 | 2017-08-04 | 杭州天宽科技有限公司 | 一种端口数据采集、缓存并展示的实现方法 |
WO2018162069A1 (en) * | 2017-03-09 | 2018-09-13 | Huawei Technologies Co., Ltd. | Computer system for distributed machine learning |
CN106874124B (zh) * | 2017-03-30 | 2023-04-14 | 光一科技股份有限公司 | 一种基于SQLite快速加载技术的面向对象用电信息采集终端 |
US10642660B2 (en) * | 2017-05-19 | 2020-05-05 | Sap Se | Database variable size entry container page reorganization handling based on use patterns |
CN107678682A (zh) * | 2017-08-16 | 2018-02-09 | 芜湖恒天易开软件科技股份有限公司 | 用于充电桩费率存储的方法 |
CN107967301B (zh) * | 2017-11-07 | 2021-05-04 | 许继电气股份有限公司 | 一种电力电缆隧道监控数据的存储、查询方法及装置 |
CN108228479B (zh) * | 2018-01-29 | 2021-04-30 | 深圳市泰比特科技有限公司 | 一种嵌入式flash数据存储方法及*** |
US10789176B2 (en) * | 2018-08-09 | 2020-09-29 | Intel Corporation | Technologies for a least recently used cache replacement policy using vector instructions |
CN109614372B (zh) * | 2018-10-26 | 2023-06-02 | 创新先进技术有限公司 | 一种对象存储、读取方法、装置、及业务服务器 |
CN111371703A (zh) * | 2018-12-25 | 2020-07-03 | 迈普通信技术股份有限公司 | 一种报文重组方法及网络设备 |
CN111367461B (zh) * | 2018-12-25 | 2024-02-20 | 兆易创新科技集团股份有限公司 | 一种存储空间管理方法及装置 |
CN109766341B (zh) * | 2018-12-27 | 2022-04-22 | 厦门市美亚柏科信息股份有限公司 | 一种建立哈希映射的方法、装置、存储介质 |
CN110109763A (zh) * | 2019-04-12 | 2019-08-09 | 厦门亿联网络技术股份有限公司 | 一种共享内存管理方法及装置 |
CN110244911A (zh) * | 2019-06-20 | 2019-09-17 | 北京奇艺世纪科技有限公司 | 一种数据处理方法及*** |
CN110457398A (zh) * | 2019-08-15 | 2019-11-15 | 广州蚁比特区块链科技有限公司 | 区块数据存储方法及装置 |
CN112433674B (zh) * | 2020-11-16 | 2021-07-06 | 连邦网络科技服务南通有限公司 | 一种计算机用数据迁移***及方法 |
CN112947856B (zh) * | 2021-02-05 | 2024-05-03 | 彩讯科技股份有限公司 | 一种内存数据的管理方法、装置、计算机设备及存储介质 |
CN113687964B (zh) * | 2021-09-09 | 2024-02-02 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、电子设备、存储介质及程序产品 |
CN113806249B (zh) * | 2021-09-13 | 2023-12-22 | 济南浪潮数据技术有限公司 | 一种对象存储有序列举方法、装置、终端及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1447257A (zh) * | 2002-04-09 | 2003-10-08 | 威盛电子股份有限公司 | 分布式共享内存***数据维护方法 |
CN1685320A (zh) * | 2002-09-27 | 2005-10-19 | 先进微装置公司 | 具有储存远程快取存在信息的处理器高速缓存的计算机*** |
CN101122885A (zh) * | 2007-09-11 | 2008-02-13 | 腾讯科技(深圳)有限公司 | 一种数据缓存处理方法、***及数据缓存装置 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5537574A (en) * | 1990-12-14 | 1996-07-16 | International Business Machines Corporation | Sysplex shared data coherency method |
US5263160A (en) * | 1991-01-31 | 1993-11-16 | Digital Equipment Corporation | Augmented doubly-linked list search and management method for a system having data stored in a list of data elements in memory |
US5829051A (en) * | 1994-04-04 | 1998-10-27 | Digital Equipment Corporation | Apparatus and method for intelligent multiple-probe cache allocation |
US5797004A (en) * | 1995-12-08 | 1998-08-18 | Sun Microsystems, Inc. | System and method for caching and allocating thread synchronization constructs |
US6728854B2 (en) * | 2001-05-15 | 2004-04-27 | Microsoft Corporation | System and method for providing transaction management for a data storage space |
US6854033B2 (en) * | 2001-06-29 | 2005-02-08 | Intel Corporation | Using linked list for caches with variable length data |
US6892378B2 (en) * | 2001-09-17 | 2005-05-10 | Hewlett-Packard Development Company, L.P. | Method to detect unbounded growth of linked lists in a running application |
CA2384185A1 (en) * | 2002-04-29 | 2003-10-29 | Ibm Canada Limited-Ibm Canada Limitee | Resizable cache sensitive hash table |
-
2007
- 2007-09-11 CN CNB2007100770393A patent/CN100498740C/zh active Active
-
2008
- 2008-09-09 WO PCT/CN2008/072302 patent/WO2009033419A1/zh active Application Filing
-
2010
- 2010-02-18 US US12/707,735 patent/US20100146213A1/en not_active Abandoned
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1447257A (zh) * | 2002-04-09 | 2003-10-08 | 威盛电子股份有限公司 | 分布式共享内存***数据维护方法 |
CN1685320A (zh) * | 2002-09-27 | 2005-10-19 | 先进微装置公司 | 具有储存远程快取存在信息的处理器高速缓存的计算机*** |
CN101122885A (zh) * | 2007-09-11 | 2008-02-13 | 腾讯科技(深圳)有限公司 | 一种数据缓存处理方法、***及数据缓存装置 |
Also Published As
Publication number | Publication date |
---|---|
US20100146213A1 (en) | 2010-06-10 |
CN100498740C (zh) | 2009-06-10 |
CN101122885A (zh) | 2008-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2009033419A1 (fr) | Procédé de traitement de mise en antémémoire de données, système et dispositif de mise en antémémoire de données | |
US10620862B2 (en) | Efficient recovery of deduplication data for high capacity systems | |
EP2633413B1 (en) | Low ram space, high-throughput persistent key-value store using secondary memory | |
US9965394B2 (en) | Selective compression in data storage systems | |
US10564850B1 (en) | Managing known data patterns for deduplication | |
US10466932B2 (en) | Cache data placement for compression in data storage systems | |
US9043334B2 (en) | Method and system for accessing files on a storage system | |
EP2735978B1 (en) | Storage system and management method used for metadata of cluster file system | |
US7930559B1 (en) | Decoupled data stream and access structures | |
JP5996088B2 (ja) | 暗号ハッシュ・データベース | |
JP3399520B2 (ja) | 圧縮メイン・メモリの仮想非圧縮キャッシュ | |
US7720892B1 (en) | Bulk updates and tape synchronization | |
US20130173853A1 (en) | Memory-efficient caching methods and systems | |
WO2009076854A1 (zh) | 数据缓存***和大容量缓存的实现方法 | |
WO2013075306A1 (zh) | 数据访问方法和装置 | |
US10394764B2 (en) | Region-integrated data deduplication implementing a multi-lifetime duplicate finder | |
CN109002400B (zh) | 一种内容感知型计算机缓存管理***及方法 | |
US11860840B2 (en) | Update of deduplication fingerprint index in a cache memory | |
CN113535092B (zh) | 用于减少内存元数据的存储引擎、方法和可读介质 | |
KR101104112B1 (ko) | 차세대 대용량 저장장치의 동적 색인 관리 시스템 및 그 방법과 그 소스 프로그램을 기록한 기록매체 | |
CN114661238B (zh) | 带缓存的存储***空间回收的方法及应用 | |
CN118502670A (zh) | 一种基于聚合的键值存储方法及*** | |
Byun et al. | An index management using CHC-cluster for flash memory databases | |
CN115576489A (zh) | 一种基于数据缓冲机制的NVMe全闪存存储方法及其*** | |
KR100816820B1 (ko) | 플래시 메모리와 연동되는 버퍼 관리장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 08800814 Country of ref document: EP Kind code of ref document: A1 |
|
WWE | Wipo information: entry into national phase |
Ref document number: 1089/CHENP/2010 Country of ref document: IN |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
32PN | Ep: public notification in the ep bulletin as address of the adressee cannot be established |
Free format text: NOTING OF LOSS OF RIGHTS PURSUANT TO RULE 112(1) EPC |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 08800814 Country of ref document: EP Kind code of ref document: A1 |