WO2017088180A1 - 向队列存储数据的方法、装置及设备 - Google Patents

向队列存储数据的方法、装置及设备 Download PDF

Info

Publication number
WO2017088180A1
WO2017088180A1 PCT/CN2015/095818 CN2015095818W WO2017088180A1 WO 2017088180 A1 WO2017088180 A1 WO 2017088180A1 CN 2015095818 W CN2015095818 W CN 2015095818W WO 2017088180 A1 WO2017088180 A1 WO 2017088180A1
Authority
WO
WIPO (PCT)
Prior art keywords
queue
data
key name
stored
storage system
Prior art date
Application number
PCT/CN2015/095818
Other languages
English (en)
French (fr)
Inventor
罗庆超
Original Assignee
华为技术有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 华为技术有限公司 filed Critical 华为技术有限公司
Priority to PCT/CN2015/095818 priority Critical patent/WO2017088180A1/zh
Priority to CN201580002944.5A priority patent/CN109463002B/zh
Publication of WO2017088180A1 publication Critical patent/WO2017088180A1/zh

Links

Images

Definitions

  • the present invention relates to the field of data storage, and in particular, to a method, device and device for implementing a queue service.
  • the queue has the characteristics of “FIFO” (First In First Out), that is, the queue can only be inserted at the back end of the table (ie, the tail of the queue), but at the front end of the table ( That is, the team head) deletes, precisely because the queue has this feature, the queue has been widely used to store data.
  • FIFO First In First Out
  • a device may use a queue to store data generated by the program when the program is running, and the device includes a persistent storage medium, and the queue is located in the persistent storage medium, and the stored procedure may be: when the program generates data, The processor of the device stores the data in the persistent storage medium, obtains a storage address of the data, and stores the storage address from the queue of the queue to store the data into the queue.
  • the minimum read and write granularity of the persistent storage medium is 4 kb. If the size of the data or the storage address of the data is not an integer multiple of 4 kb, the storage space is wasted.
  • the present invention provides a method, device and device for storing data into a queue.
  • the technical solution is as follows:
  • a method for storing data to a queue comprising a processor and a memory, the processor being connected to the memory, the storage device further comprising a key value KV storage And the processor is connected to the KV storage system, or the storage device is externally connected to the KV storage system, and the processor is connected to the KV storage system, and the processor performs the following processes:
  • the queue Determining the data to be queued according to the queue identifier of the queue and the enqueue sequence number of the first data Key name, the queue is located in the memory, and the first data is data currently located at the tail of the queue;
  • the Key name is enqueued from the tail of the queue, and a key KV pair including the Key name and the data to be enqueued is stored in the KV storage system.
  • the queue stores the key name determined by the queue identifier and the enqueue sequence number, so that the queue elements are neat and orderly, which facilitates recovery of the queue; storing data in the KV storage system and storing the key in the memory based on the KV pair Name, KV storage system and in-memory data do not have to be aligned at the smallest granularity to save storage space; KV storage system is a persistent storage medium, no data loss when power is lost.
  • the determining, according to the queue identifier of the queue and the enqueue sequence number of the first data, the Key name of the data to be queued including:
  • the queue identifier of the queue and the enqueue sequence number constitute a Key name of the data to be queued.
  • the enqueue sequence number of the first data is increased, and the key name of the data to be queued is obtained by combining the queue identifier of the queue, and the queued data is stored in each queue element after the queued data is entered into the queue.
  • the Key name has a regular rule to facilitate the recovery of the queue.
  • the method further includes:
  • the required data can be quickly obtained from the KV storage system, which solves the problem of waste of storage space caused by the sequential storage of the storage system.
  • the KV storage system includes The KV pair of the key name and the second data is set, the second data includes a Key name stored in the queue head of the queue and a Key name stored in the tail of the queue, and the method further includes:
  • the head or tail of the queue stored in the KV storage system is updated according to the preset Key name.
  • the queue name and the tail of the queue are stored in the queue.
  • the second data of the stored Key name is stored in the KV storage system, and the power loss is not lost; after the memory is powered off, the queue head or the tail of the queue is obtained according to the preset Key name, and the queue is restored. .
  • the head or tail of the team changes, the head or tail of the queue stored in the KV storage system is updated according to the preset key name, including:
  • the second data is updated to the Key name stored in the head of the current queue and the Key name stored in the tail of the queue.
  • the queue or the tail of the queue stored in the second data is updated in real time, and the second data is stored with the latest queue head and tail of the current queue, which is convenient for the queue. Recovery and data lookup.
  • the preset offset value and the second data stored in the KV storage system can be efficiently recovered.
  • the queue when a queue data failure such as a queue data loss occurs due to an abnormal power failure or the like, the preset offset value and the second data stored in the KV storage system can be efficiently recovered. The queue.
  • the enqueue sequence number of the Key name It may be represented by a preset number of bits. If the enqueue number of the first data is the maximum value represented by the bit of the preset digit, the enqueue sequence number of the first data is increased, and the data to be entered is corresponding to the data to be entered. The enqueue number of the Key name is 0.
  • an apparatus for storing data to a queue including: a receiving unit, a processing list And a memory, the processing unit is respectively connected to the receiving unit and the memory, the device further comprises a key value KV storage system and the processing unit is connected to the KV storage system, or the device is externally connected to the KV storage System and the processing unit is connected to the KV storage system;
  • a receiving unit configured to receive a enqueue request message, where the enqueue request message includes data to be queued
  • a processing unit configured to determine, according to the queue identifier of the queue and the enqueue sequence number of the first data, a Key name of the data to be enqueued, where the first data is data currently located at the end of the queue; The Key name is entered from the end of the queue, and the KV pair including the Key name and the data to be enqueued is stored in the KV storage system.
  • the queue stores the key name determined by the queue identifier and the enqueue sequence number, so that the queue elements are neat and orderly, which facilitates the recovery of the queue; based on the KV storage system storing data and based on the memory storage Key name, the data does not have to be pressed.
  • the smallest granularity is aligned with the storage, which saves storage space; the KV storage system stores data, and no data is lost when power is lost.
  • the processing unit is configured to increase an enqueue sequence number of the first data, obtain an enqueue sequence number of the data to be enqueued, and form a queue ID of the queue and the enqueue sequence number to be included in the queue The key name of the data.
  • the enqueue sequence number of the first data is increased, and the key name of the data to be enqueued is obtained by combining the queue identifier of the queue, and the queued data is stored in each queue element after the queued data is enqueued.
  • the Key name has a regular rule to facilitate the recovery of the queue.
  • the receiving unit is further configured to receive a team request message
  • the processing unit is further configured to: use a Key name stored in the queue of the queue to be dequeued; and obtain data corresponding to the dequeue Key name from the KV storage system according to the dequeued Key name.
  • the required data can be quickly obtained from the KV storage system, which solves the problem of waste of storage space caused by the storage system must be sequentially stored.
  • the KV storage system includes a pre- Setting a KV pair of the Key name and the second data
  • the second data includes a Key name stored in the queue head of the queue and a Key name stored in the tail of the queue
  • the processing unit is further configured to: when the queue or the tail of the queue changes, update a queue or a tail of the queue stored in the KV storage system according to the preset key name.
  • the second data consisting of the key name stored in the queue head and the key name stored in the queue is stored in the KV storage system, and the power loss is not lost.
  • the processing unit is further configured to: when the queue or the tail of the queue changes, obtain a Key name stored in a queue head of the current queue and/or a Key name stored in a tail of the queue; according to the preset a second name, the second data corresponding to the preset key name is obtained from the KV storage system; and the second data is updated to a Key name stored in a queue head of the current queue and a Key name stored in a tail of the queue .
  • the head or the tail of the queue stored in the real-time second data ensures that the latest data of the current queue and the tail of the queue are stored in the second data, which is convenient for the queue. Recovery and data lookup.
  • the processing unit is further configured to: when the queue is lost, acquire a queue head and a tail of the queue stored in the KV storage medium according to the preset key name, according to the queue head and the team of the queue The tail is restored to the queue.
  • the sequence number generator when the sequence number of the data to be queued is greater than or equal to the preset threshold, the sequence number generator re-determines the enqueue sequence number determined by the queue entry data to 0, that is, “returns to 0” processing.
  • a third aspect provides a storage device, including: a receiver, a processor, and a memory, wherein the processor is respectively connected to the receiver and the memory, and the storage device further includes a key a value KV storage system and the processor is connected to the KV storage system, or the storage device is externally connected to the KV storage system and the processor is connected to the KV storage system;
  • the receiver is configured to receive a enqueue request message, where the enqueue request message includes data to be queued;
  • the processor is configured to determine, according to a queue identifier of the queue and an enqueue sequence number of the first data, a key Key name of the data to be enqueued, the queue is located in the memory, and the first data is current Data at the end of the queue; enrolling the Key name from the tail of the queue, and storing a KV pair including the Key name and the data to be enqueued in the KV storage system .
  • the processor is configured to increase an enqueue sequence number of the first data, obtain an enqueue sequence number of the data to be enqueued, and form a queue identifier of the queue and the enqueue sequence number to be included in the queue The key name of the data.
  • the receiver is further configured to receive a team request message
  • the processor is further configured to: obtain a key name of the team head stored in the queue; and obtain data corresponding to the dequeue key name from the KV storage system according to the dequeued key name.
  • the KV storage system includes a KV pair of a preset Key name and a second data, where the second data includes a Key name stored in the queue head of the queue and a Key name stored in the tail of the queue;
  • the processor is further configured to update a queue or a tail of the queue stored in the KV storage system according to the preset key name when a change occurs in a queue or a tail of the queue.
  • the processor is configured to acquire a Key name stored in a queue head of the current queue and/or a Key name stored in a tail of the queue when the queue or the tail of the queue changes; according to the preset key And obtaining the second data corresponding to the preset key name from the KV storage system; updating the second data to a Key name stored in a queue head of the current queue and a Key name stored in a tail of the queue.
  • the processor is further configured to: when the queue is lost, acquire a queue head and a tail of the queue stored in the KV storage medium according to the preset key name, according to a queue and a team of the queue The tail is restored to the queue.
  • FIG. 1 is a flowchart of a method for storing data to a queue according to an embodiment of the present invention
  • 2-2 is a schematic diagram of a request for sending a queue according to an embodiment of the present invention
  • 2-3 is a schematic diagram of the data to be queued before entering the team according to the embodiment of the present invention.
  • FIGS. 2-5 are schematic diagrams of issuing a request for leaving a team according to an embodiment of the present invention.
  • FIGS. 2-6 are schematic diagrams of the de-teaming provided by the embodiment of the present invention.
  • 2-7 are schematic diagrams of searching data according to a dequeued Key name according to an embodiment of the present invention.
  • 2-8 are schematic diagrams of recovering a lost queue according to an embodiment of the present invention.
  • FIG. 3 is a block diagram of an apparatus for storing data to a queue according to an embodiment of the present invention
  • FIG. 4 is a schematic diagram of a connection relationship between a device for storing data to a queue and a KV storage system according to an embodiment of the present invention
  • FIG. 5 is a structural block diagram of a storage device according to an embodiment of the present invention.
  • FIG. 1 there is shown a flowchart of a method for storing data to a queue, the method being applied to a storage device including a processor and a memory, the processor being connected to the memory, the storage device further comprising a KV storage system and processing The device is connected to the KV storage system, or the storage device is externally connected to the KV storage system and the processor is connected to the KV storage system.
  • the processor performs the following processes, including:
  • Step 101 Receive a enqueue request message, where the enqueue request message includes data to be queued;
  • Step 102 Determine, according to the queue identifier of the queue and the enqueue sequence number of the first data, a Key name of the data to be enqueued, the queue is located in the memory, and the first data is data currently located at the end of the queue;
  • Step 103 Enter the Key (key) name from the queue of the queue, and will include the Key name
  • KV key value
  • the technical solution provided by the embodiment of the present invention has the beneficial effects that: the queue name determined by the queue identifier and the enqueue sequence number is stored in the queue, so that the queue elements are neat and orderly, and the queue is restored; the key name based on the memory is stored and the KV is based on the memory.
  • the data does not have to be aligned and stored at the minimum granularity, saving storage space; storing data through the key value to the KV storage system, and losing data without losing power.
  • Embodiments of the present invention provide a method for storing data to a queue.
  • the storage device includes a processor and a memory, the processor is connected to the memory, the storage device further includes a KV storage system, and the processor is connected to the KV storage system, or the storage device is externally connected with the KV storage system, and the processor and the KV storage system are used. Connected.
  • the processor is connected to the KV storage system through a network card on the storage device.
  • the method execution entity may be a processor, and the processor obtains a queue name of the queue and the enqueue sequence number of the queue by acquiring the enqueue sequence number of the data that needs to be enqueued, and the queue is located in the memory of the storage device, and the key name is The team is queued from the end of the queue, and the KV pair including the key name and the data that needs to be enqueued is stored in the KV storage system.
  • the method includes:
  • Step 201 Receive a enqueue request message, where the enqueue request message includes data to be enqueued.
  • a queue exists in the memory of the storage device, and the queue is used to provide a queue service for a running program, and the queue service is used by the processor of the storage device to store data generated by the running program through the queue.
  • the data is the data to be queued, and the program may submit a queue request message to the processor, and the queue request message carries the data to be queued. Accordingly, the processor begins this step.
  • the program submits a queue request message to the processor.
  • the processor receives the enqueue request message, and the enqueue request message carries the to-be-entered entitlement data as “data”.
  • Step 202 Determine a Key Name of the data to be enqueued according to the queue identifier of the queue and the enqueue sequence number of the first data, where the first data is a Key name stored at the end of the queue.
  • the enqueue sequence number of the first data is the enqueue sequence number of the key name of the last time the queue is entered from the queue end of the queue, so in this step, The enqueue number of the first data may be increased to obtain the enqueue sequence number of the Key name corresponding to the queued data, and the queue ID of the queue and the enqueue sequence number of the Key name corresponding to the queued data are formed into a key to be entered into the team data. name.
  • adding a preset offset value to the enqueue sequence number of the first data may obtain an enqueue sequence number of the Key name corresponding to the to-be-entered data.
  • the preset offset value may be a value of 1, 2 or 3.
  • the queue identifier of the queue may be the name of the queue, and the like.
  • the enqueue sequence number of the first data is also acquired.
  • the enqueue sequence number of the first data may be stored when the enqueue sequence number of the first data is obtained for the first time.
  • the enqueue sequence number of the stored first data may be directly obtained before performing this step.
  • the enqueue sequence number of the stored first data may be updated to the enqueue sequence number of the Key name corresponding to the queue entry data.
  • the sequence number generator may be set in advance, and the sequence number of the Key name corresponding to the queue entry data is generated by the sequence number generator. Specifically:
  • the sequence number generator stores the enqueue sequence number of the key name of the last time from the queue end of the queue, that is, the enqueue sequence number of the first data, and the sequence number generator increases the enqueue sequence number stored by itself to obtain the queue number.
  • the sequence number generator further updates the team entry number stored by itself to the enqueue sequence number of the Key name corresponding to the queue entry data.
  • the queue identifier is “MyQueue”
  • the enqueue sequence number of the first data is N
  • the preset offset value is 1 in the embodiment, but this is not a limitation on the scope of protection of the present invention.
  • the enqueue sequence number N of the stored first data is increased, and the enqueue number N of the first data is increased by a preset offset value of 1 to obtain the enqueue sequence number of the Key name corresponding to the queued data data.
  • the queue ID "MyQueue" of the queue and the enqueue sequence number N+1 of the Key name corresponding to the queued data data constitute the key name "MyQueue N+1" corresponding to the queued data data. Further, the enqueue sequence number N of the stored first data is also updated to the enqueue sequence number N+1 of the Key name corresponding to the queued data data.
  • the enqueue sequence number of the Key name may be represented by a preset number of bits. If the enqueue sequence number of the first data is the maximum value represented by the bit of the preset digit, the first number is added. The enqueue sequence number of the data is 0. The enqueue number of the Key name corresponding to the data to be enqueued is 0.
  • the preset number of bits can be a value of 4, 8, 16, 32 or 64.
  • the preset number of bits is 8, and the sequence number of a key name is 3, it can be expressed as 00000011, assuming that the enqueue number of the first data is the maximum value represented by the 8-bit bit, that is, the enqueue number of the first data.
  • the sequence number of the first data is increased, and the enqueue number of the Key name corresponding to the data to be enqueued is 00000000, that is, the enqueue number of the Key name corresponding to the data to be enqueued is 0.
  • the queue identifier can be the name or number of the queue.
  • Step 203 The Key name of the data to be enqueued is enqueued from the tail of the queue, and the KV pair including the Key name of the data to be enqueued and the data to be queued is stored in the KV storage system.
  • the Key name of the data to be enqueued is used as the Key of the KV pair, and the data to be enqueued is taken as the Value of the KV pair, and then the two are combined into one KV pair.
  • the key name "MyQueue N+1" of the data to be queued "data” and the data to be queued “data” are combined into a KV pair " ⁇ MyQueue N+1, data>” and the The KV pair is stored in the KV storage system.
  • the KV storage system is a persistent storage system, so the data stored in the KV storage system will not be lost after the KV storage system is powered down.
  • the KV storage system does not need to store data according to the minimum storage granularity.
  • the actual data is used to occupy a large amount of storage space, and there is no waste of storage space.
  • each Key name is composed of a respective enqueue sequence number and a queue identifier of the queue, so when a certain Key name is abnormal, the adjacent Key name according to the Key name is The key name can be restored.
  • Step 204 Update the tail of the queue stored in the KV storage system according to the preset Key name.
  • the KV storage system includes: a KV pair consisting of a preset Key name and a second data, and the second data includes a Key name stored in the queue head of the queue and a Key name stored in the queue end of the queue.
  • a key name may be preset
  • the head and tail of the queue are obtained, and the obtained head and tail are used as the second data
  • the preset key name and The second data constitutes a KV pair and is stored in the KV system, and then the second data is updated to the changed head and/or tail after each change in the queue and/or tail of the queue.
  • the step may be: obtaining a key name of the current tail of the queue, obtaining a corresponding second data from the KV storage system according to the preset key name, and storing the Key name of the tail in the second data. Updated to the currently obtained Key name. or,
  • the corresponding second data is obtained from the KV storage system, and the second data is updated to the Key name of the currently acquired tail store and the Key name stored by the team head.
  • the default key name is “prekey”. Since the current queue name is “MyQueue 1” and the tail data is “MyQueue N”, the second data is “MyQueue”. 1&MyQueue N”.
  • the current name of the queue is stored in the queue name "MyQueue N+1" and the key name stored in the queue header is "MyQueue 1"; then, as shown in Figure 2-3, according to the preset key
  • the name "preKey” is obtained from the KV storage system to obtain the corresponding second data "MyQueue 1&MyQueue N"; and as shown in FIG. 2-4, the second data "MyQueue 1 & MyQueue N" is updated to the currently acquired tail of the tail store.
  • the name “MyQueue N+1" and the key name stored in the head of the queue "MyQueue 1" that is, the updated second data is "MyQueue 1 & MyQueue N+1".
  • the running program can also request the dequeue data from the queue, that is, the program submits the dequeue request message, and then the data is taken out of the queue by the following steps.
  • Step 205 Receive a team request message, and dequeue the key name stored in the queue of the queue.
  • the program submits a dequeue request message to the terminal.
  • the terminal receives the request message of the team, and dequeues the Key name stored in the queue head of the queue, that is, the key name “MyQueue 1” stored in the queue is dequeued, as shown in Figure 2-6.
  • the team head is updated to the queue element after the original team head.
  • Step 206 Acquire data corresponding to the dequeue Key name from the KV pair stored in the KV storage system according to the dequeued Key name.
  • the data data1 corresponding to the dequeued "MyQueue 1" is found in the KV storage system.
  • Step 207 Update the queue head of the queue stored in the KV storage system according to the preset Key name.
  • the key name of the current queue head storage of the queue is obtained, and the corresponding second data is obtained from the KV storage system according to the preset key name, and the Key name stored in the second data is further changed.
  • the new name is the currently obtained Key. or,
  • the preset key name is "preKey”.
  • the key name stored in the team head becomes "MyQueue 2".
  • Figure 2-7 obtain the updated key name "MyQueue 2" of the queue head; then, as shown in Figure 2-6, obtain the second from the KV storage system according to the preset key name "preKey”.
  • the key name "MyQueue 1" stored in the second data is updated to the currently acquired key name "MyQueue 2" of the queue head storage, That is, the updated second data is "MyQueue 2&MyQueue N+1". or,
  • the key name "MyQueue N+1" stored in the current queue head of the queue and the key name "MyQueue 2" stored in the queue header are obtained.
  • the name "preKey” is obtained from the KV storage system to obtain the corresponding second data "MyQueue 1&MyQueue N+1"; and as shown in FIG. 2-4, the second data "MyQueue 1&MyQueue N+1" is updated to the currently acquired team.
  • the key name "MyQueue N+1" stored in the tail and the key name "MyQueue 2" stored in the queue header, that is, the updated second data is "MyQueue 2&MyQueue N+1".
  • the queue head and the tail of the queue stored in the KV storage system may be obtained according to the preset key name, and the queue is restored according to the queue head and the tail of the queue. .
  • the created queue is an empty queue.
  • the key name i is enqueued from the end of the queue, and the queue ID of the queue included in the key name i and the enqueue number of the key name i are obtained, and the enqueue number of the key name i is added to obtain the entry of the key name i+1.
  • the team serial number, the enqueue sequence number of the key name i+1 and the queue identifier of the queue form a key name i+1, and the key name i+1 is entered from the queue end of the queue;
  • the lost queue can be recovered according to the above steps. Specifically, as shown in FIG. 2-8, a new empty queue is created, and the second data “MyQueue 2&MyQueue N+1” is obtained from the KV storage system according to the preset key name “preKey”, and the lost queue is obtained from the second data.
  • the enqueue sequence number of the stored Key name is N+1; the key name "MyQueue 2" stored in the queue is entered from the queue of the newly created queue; the enqueue number 2 of the Key name "MyQueue 2" is added to obtain the enqueue sequence number.
  • the enqueue number 3 obtained by the addition and the queue identifier "MyQueue” form a key name "MyQueue 3", and the combined key name "MyQueue 3" is enqueued from the tail of the new queue;
  • the enqueue number of the Key name "MyQueue 3” is 3, and the enqueue number "4" is obtained.
  • the enqueue number 4 obtained by the addition and the queue identifier "MyQueue” form the key name "MyQueue 4", and the combined key is obtained.
  • the name “MyQueue 3" is enqueued from the end of the queue of the new queue...
  • the technical solution provided by the embodiment of the present invention has the beneficial effects that: the queue name determined by the queue identifier and the enqueue sequence number is stored in the queue, so that the queue elements are neat and orderly, and the queue is restored; the data is stored based on the KV pair. It is not necessary to align the storage at the minimum granularity, saving storage space; storing data by the key value to the KV storage system, and losing data without losing power.
  • the required data can be quickly obtained from the KV storage system, which solves the problem of waste of storage space caused by the sequential storage of the storage system.
  • the second data consisting of the Key name stored in the queue head and the Key name stored in the queue is stored in the KV storage system, and the power loss is not lost.
  • the head or tail of the queue stored in the second data is updated in real time to ensure that the latest queue head and tail of the current queue are stored in the second data, which facilitates queue recovery and data search.
  • the queue is lost, and the key name of the lost queue and the key name stored in the tail can be obtained from the KV storage system according to the preset key name, according to the team head.
  • the stored Key name and the Key name stored at the end of the queue efficiently restore the queue.
  • a block diagram of an apparatus 300 for storing data to a queue includes a receiving unit 310, a processing unit 320, and a memory 330.
  • the processing unit 320 is coupled to the receiving unit 310 and the memory 330, respectively.
  • the apparatus 300 further includes a KV storage 340 system and the processing unit 320 is coupled to the KV storage system 340, or referring to FIG. 4, the apparatus 300 is externally coupled to the KV storage system 340 and the processing unit 320 is coupled to the KV storage system 340;
  • the receiving unit 310 is configured to receive a enqueue request message, where the enqueue request message includes data to be queued.
  • the processing unit 320 is configured to determine, according to the queue identifier of the queue and the enqueue sequence number of the first data, a Key name of the data to be enqueued, the queue is located in the memory 330, and the first data is currently at the end of the queue. The data is entered from the queue end of the queue, and the KV pair including the key name and the data to be enqueued is stored in the KV storage system 340.
  • the technical solution provided by the embodiment of the present invention has the beneficial effects that: the queue name determined by the queue identifier and the enqueue sequence number is stored in the queue, so that the queue elements are neat and orderly, and the queue is restored; the data is stored based on the KV pair. It is not necessary to align the storage at the minimum granularity, saving storage space; storing data by the key value to the KV storage system, and losing data without losing power.
  • the processing unit 320 is configured to increase the enqueue sequence number of the first data, and obtain the enqueue sequence number of the data to be enqueued; the queue identifier of the queue and the enqueue sequence form the data to be enqueued.
  • the name of the key is configured to increase the enqueue sequence number of the first data, and obtain the enqueue sequence number of the data to be enqueued; the queue identifier of the queue and the enqueue sequence form the data to be enqueued. The name of the key.
  • the receiving unit 310 is further configured to receive a team request message.
  • the processing unit 320 is further configured to: dequeue the key name stored in the queue of the queue; and obtain data corresponding to the dequeue key name from the KV storage system according to the dequeued key name.
  • the KV storage system includes a KV pair of a preset key name and a second data, where the second data includes a Key name stored in the queue head of the queue and a Key name stored in the tail of the queue.
  • the processing unit 320 is further configured to update a queue or a tail of the queue stored in the KV storage system according to the preset key name when the queue or the tail of the queue changes.
  • the processing unit 320 is configured to: when the queue or the tail of the queue changes, obtain a Key name stored in a queue head of the current queue and/or a Key name stored in a tail of the queue; according to the preset key And obtaining the second data corresponding to the preset key name from the KV storage system; updating the second data to a Key name stored in a queue head of the current queue and a Key name stored in a tail of the queue.
  • the processing unit 320 is further configured to: when the queue is lost, acquire a queue head and a tail of the queue stored in the KV storage medium according to the preset key name, and recover according to the queue head and the tail of the queue.
  • the queue when the queue is lost, acquire a queue head and a tail of the queue stored in the KV storage medium according to the preset key name, and recover according to the queue head and the tail of the queue.
  • the technical solution provided by the embodiment of the present invention has the beneficial effects that: the queue name determined by the queue identifier and the enqueue sequence number is stored in the queue, so that the queue elements are neat and orderly, and the queue is restored; the data is stored based on the KV pair. It is not necessary to align the storage at the minimum granularity, saving storage space; storing data by the key value to the KV storage system, and losing data without losing power.
  • the required data can be quickly obtained from the KV storage system, which solves the problem of waste of storage space caused by the sequential storage of the storage system.
  • the second data consisting of the Key name stored in the queue head and the Key name stored in the queue is stored in the KV storage system, and the power loss is not lost.
  • the queue head or the tail of the queue stored in the second data is updated in real time, and the latest data of the queue head and the tail of the current queue are stored in the second data, which facilitates the recovery of the queue and the search of the data.
  • the device storing data in the queue provided by the foregoing embodiment stores data in the queue
  • only the division of each functional module is used as an example.
  • the foregoing functions may be allocated differently according to requirements.
  • the function module is completed, that is, the internal structure of the terminal and the base station are divided into different functional modules to complete all or part of the functions described above.
  • the device for storing data to the queue provided by the foregoing embodiment is the same as the method for storing the data to the queue. For the specific implementation process, refer to the method embodiment, and details are not described herein again.
  • FIG. 5 shows the structure of a storage device 500 provided by an embodiment of the present invention.
  • FIG. 5 is a block diagram showing a partial structure of a storage device 500 provided by an embodiment of the present invention.
  • the storage device 500 includes a receiver 510, a processor 520, and a memory 530.
  • the processor 520 is connected to the receiver 510 and the memory 530, respectively.
  • the storage device 500 further includes a KV storage system 540 and the processor 520 and the KV storage system 540. Connected, or storage device 500 is externally coupled to KV storage system 540 and processor 520 is coupled to KV storage system 540.
  • the storage device provided in this embodiment may have components such as an input unit 550, a display unit 560, a sensor 570, a WiFi (wireless fidelity) module 580, and a power source 590 in addition to the above components.
  • components such as an input unit 550, a display unit 560, a sensor 570, a WiFi (wireless fidelity) module 580, and a power source 590 in addition to the above components.
  • the structure of the storage device 500 shown in FIG. 5 is only an example of implementation, and does not constitute a limitation on the storage device 500, and may include more or less components than those illustrated, or a combination of Some parts, or different parts are arranged.
  • the components of the storage device 500 are specifically described below with reference to FIG. 5:
  • the memory 530 can store one or more instructions, and the processor 520 executes various functional applications and data processing of the storage device 500 by running instructions stored in the memory 530.
  • the memory 530 may mainly include a storage program area and a storage data area, wherein the storage program area may store one or more instructions, an operating system, an application required for at least one function (such as a sound playing function, an image playing function, etc.), and the like. .
  • the input unit 550 can be configured to receive input numeric or character information and to generate key signal inputs related to user settings and function control of the storage device 500.
  • the input unit 550 may include a touch panel 551 and other input devices 552.
  • the touch panel 551 also referred to as a touch screen, can collect touch operations on or near the user (such as the user using a finger, a stylus, or the like on the touch panel 551 or near the touch panel 551. Operation), and drive the corresponding connecting device according to a preset program.
  • the touch panel 551 can include two parts: a touch detection device and a touch controller.
  • the touch detection device detects the touch orientation of the user, and detects a signal brought by the touch operation, and transmits the signal to the touch controller; the touch controller receives the touch information from the touch detection device, converts the touch information into contact coordinates, and sends the touch information.
  • the processor 520 is provided and can receive commands from the processor 520 and execute them.
  • the touch panel 551 can be implemented in various types such as resistive, capacitive, infrared, and surface acoustic waves.
  • the input unit 550 may also include other input devices 552.
  • other input devices 552 may include, but are not limited to, one or more of a physical keyboard, function keys (such as volume control buttons, switch buttons, etc.), trackballs, mice, joysticks, and the like.
  • the display unit 560 can be used to display information input by the user or information provided to the user and various menus of the storage device 500.
  • the display unit 560 can include a display panel 561.
  • the display panel 561 can be configured in the form of an LCD (Liquid Crystal Display), an OLED (Organic Light-Emitting Diode), or the like.
  • the touch panel 551 can cover the display panel 561. When the touch panel 551 detects a touch operation on or near the touch panel 551, it is transmitted to the processor 520 to determine the type of the touch event, and then the processor 520 according to the touch event. Type in the display panel A corresponding visual output is provided on the 561.
  • the touch panel 551 and the display panel 561 are two independent components to implement the input and input functions of the storage device 500, in some embodiments, the touch panel 551 and the display panel 561 may be The input and output functions of the storage device 500 are implemented integrated.
  • Storage device 500 may also include at least one type of sensor 570, such as a light sensor, motion sensor, and other sensors.
  • the light sensor may include an ambient light sensor and a proximity sensor, wherein the ambient light sensor may adjust the brightness of the display panel 561 according to the brightness of the ambient light, and the proximity sensor may close the display panel 561 when the storage device 500 moves to the ear. And / or backlight.
  • the accelerometer sensor can detect the magnitude of acceleration in all directions (usually three axes). When it is stationary, it can detect the magnitude and direction of gravity.
  • attitude of the storage device such as horizontal and vertical screen switching, Related games, magnetometer attitude calibration), vibration recognition related functions (such as pedometer, tapping), etc.; as for the storage device 500, other sensors such as gyroscopes, barometers, hygrometers, thermometers, infrared sensors, etc. This will not be repeated here.
  • WiFi is a short-range wireless transmission technology
  • the storage device 500 can help users to send and receive emails, browse web pages, and access streaming media through the WiFi module 580, which provides wireless broadband Internet access for users.
  • FIG. 5 shows the WiFi module 580, it can be understood that it does not belong to the essential configuration of the storage device 500, and may be omitted as needed within the scope of not changing the essence of the invention.
  • the processor 520 is a control center of the storage device 500 that connects various portions of the entire storage device using various interfaces and lines, by running or executing software programs and/or modules stored in the memory 530, and recalling stored in the memory 530.
  • the data performing various functions of the storage device 500 and processing data, thereby performing overall monitoring of the storage device.
  • the processor 520 may include one or more processing units; preferably, the processor 520 may integrate an application processor and a modem processor, where the application processor mainly processes an operating system, a user interface, an application, and the like.
  • the modem processor primarily handles wireless communications. It can be understood that the above modem processor may not be integrated into the processor 520.
  • the storage device 500 also includes a power source 590 (such as a battery) for powering various components.
  • a power source 590 such as a battery
  • the power source can be logically coupled to the processor 520 through a power management system to manage functions such as charging, discharging, and power management through the power management system. .
  • the storage device 500 may further include a camera, a Bluetooth module, and the like, and details are not described herein.
  • the storage device 500 includes a receiver 510 and a processor 520.
  • a receiver 510 configured to receive a enqueue request message, where the enqueue request message includes data to be queued;
  • the processor 520 is configured to determine, according to the queue identifier of the queue and the enqueue sequence number of the first data, a key name of the data to be enqueued, where the first data is data currently located at the end of the queue; The queue end of the queue is enqueued, and the KV pair including the key name and the data to be enqueued is stored in the KV storage system.
  • the processor 520 is configured to increase an enqueue sequence number of the first data, obtain an enqueue sequence number of the data to be enqueued, and form a queue ID of the queue and the enqueue sequence number to form a key of the data to be enqueued. name.
  • the receiver 510 is further configured to receive a team request message.
  • the processor 520 is further configured to: a key name stored in the queue head of the queue; and the data corresponding to the dequeue key name is obtained from the KV storage system according to the dequeued key name.
  • the KV storage system includes a preset key name and a KV pair of the second data, where the second data includes a key name stored in the queue head of the queue and a key name stored in the tail of the queue.
  • the processor 520 is further configured to: when the queue or the tail of the queue changes, update a queue or a tail of the queue stored in the KV storage system according to the preset key name.
  • the processor 520 is configured to: when the queue or the tail of the queue changes, obtain a key name stored in a queue head of the current queue and/or a key name stored in a tail of the queue; according to the preset The key name is used to obtain the second data corresponding to the preset key name from the KV storage system; the second data is updated to the key name stored in the queue head of the current queue and the key name stored in the tail of the queue.
  • the processor 520 is further configured to: when the queue is lost, acquire a queue head and a tail of the queue stored in the KV storage system according to the preset key name, and recover according to the queue head and the tail of the queue.
  • the queue when the queue is lost, acquire a queue head and a tail of the queue stored in the KV storage system according to the preset key name, and recover according to the queue head and the tail of the queue.
  • the technical solution provided by the embodiment of the present invention has the beneficial effects that: the queue name determined by the queue identifier and the enqueue sequence number is stored in the queue, so that the queue elements are neat and orderly, and the queue is restored; the data is stored based on the KV pair. It is not necessary to align the storage at the minimum granularity, saving storage space; storing data by the key value to the KV storage system, and losing data without losing power.
  • the disclosed systems, devices, and methods may be implemented in other manners.
  • the device embodiments described above are merely illustrative.
  • the division of the unit may be only a logical function division.
  • there may be another division manner for example, multiple units or components may be combined. Or it can be integrated into another system, or some features can be ignored or not executed.
  • the mutual coupling or direct coupling or communication connection shown or discussed may be an indirect coupling or communication connection through some interface, device or unit, and may be in an electrical, mechanical or other form.
  • the units described as separate components may or may not be physically separated, and the components displayed as units may or may not be physical units, that is, may be located in one place, or may be distributed to multiple network units. Some or all of the units may be selected according to actual needs to achieve the purpose of the solution of the embodiment.
  • each functional unit in each embodiment of the present invention may be integrated into one processing unit, or each unit may exist physically separately, or two or more units may be integrated into one unit.
  • the functions may be stored in a computer readable storage medium if implemented in the form of a software functional unit and sold or used as a standalone product.
  • the technical solution of the present invention which is essential or contributes to the prior art, or a part of the technical solution, may be embodied in the form of a software product, which is stored in a storage medium, including
  • the instructions are used to cause a computer device (which may be a personal computer, server, or network device, etc.) to perform all or part of the steps of the methods described in various embodiments of the present invention.
  • the foregoing storage medium includes: a U disk, a mobile hard disk, a read-only memory (ROM), a random access memory (RAM), a magnetic disk, or an optical disk, and the like, which can store program codes. .

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种向队列存储数据的方法、装置及设备,属于数据存储领域。所述方法包括:接收入队请求消息(101),所述入队请求消息包括待入队的数据;根据队列的队列标识和第一数据的入队序号,确定所述待入队的数据的Key名(102),所述第一数据是当前位于所述队列的队尾的数据;将所述Key名从所述队列的队尾入队,以及将包括所述Key名和所述待入队的数据的键值KV对存储在KV存储系统中(103)。所述装置包括接收模块、确定模块和存储模块。队列中存储由队列标识和入队序号所确定的Key名,使得队列元素整齐有序,便于队列的恢复;基于KV对存储数据,数据不必按最小粒度对齐存储,节约存储空间;通过键值对KV存储系统存储数据,掉电不丢数据。

Description

向队列存储数据的方法、装置及设备 技术领域
本发明涉及数据存储领域,特别涉及队列服务的实现方法、装置及设备。
背景技术
队列作为一种特殊的线性表,具有“FIFO”(First In First Out,先入先出)的特点,即队列只允许在表的后端(即队尾)进行插入操作,而在表的前端(即队头)进行删除操作,正是因为队列具有此特点,队列已被广泛地用于存储数据。
例如,目前,设备在运行程序时可以使用队列来存储该程序产生的数据,设备中包括持久化存储介质,该队列位于该持久化存储介质中,该存储过程可以为:在程序产生数据时,设备的处理器将该数据存储在该持久化存储介质中,获取该数据的存储地址,将该存储地址从该队列的队尾人队,以实现将该数据存储到该队列中。
在实现本发明实施例的过程中,发明人发现上述技术至少存在以下问题:
持久化存储介质的最小读写粒度为4kb的空间,如果该数据的大小或该数据的存储地址的大小不是4kb整数倍,就会浪费存储空间。
发明内容
为了解决现有技术中采用持久化存储介质存储数据会浪费存储空间的问题,本发明提供了向队列存储数据的方法、装置及设备。所述技术方案如下:
第一方面,提供了一种向队列存储数据的方法,应用于存储设备,所述存储设备包括处理器和内存,所述处理器与所述内存相连,所述存储设备还包括键值KV存储系统且所述处理器与所述KV存储系统相连,或者所述存储设备外接KV存储系统且所述处理器与所述KV存储系统相连,所述处理器执行如下流程包括:
接收入队请求消息,所述入队请求消息包括待入队的数据;
根据队列的队列标识和第一数据的入队序号,确定所述待入队的数据的 Key名,所述队列位于所述内存中,所述第一数据是当前位于所述队列的队尾的数据;
将所述Key名从所述队列的队尾入队,以及将包括所述Key名和所述待入队的数据的键值KV对存储在所述KV存储系统中。
在第一方面中,队列中存储由队列标识和入队序号所确定的Key名,使得队列元素整齐有序,便于队列的恢复;基于KV对在KV存储系统中存储数据以及在内存中存储Key名,KV存储系统和内存中数据不必按最小粒度对齐存储,节约存储空间;KV存储系统是一种持久化存储介质,掉电不丢数据。
结合第一方面,在第一方面的第一种可能的实施方式中,所述根据队列的队列标识和第一数据的入队序号,确定所述待入队的数据的Key名,包括:
增加所述第一数据的入队序号,得到所述待入队的数据的入队序号;
将所述队列的队列标识和所述入队序号组成所述待入队的数据的Key名。
在第一方面的第一种可能的实施方式中:增加第一数据的入队序号,结合队列的队列标识得到待入队数据的Key名,待入队数据入队后,各队列元素中存储的Key名有规律可循,便于队列的恢复。
结合第一方面或者第一方面的第一种可能的实施方式,在第一方面的第二种可能的实施方式中,所述方法还包括:
接收出队请求消息;
出队所述队列的队头存储的Key名;
根据所述出队的Key名,从所述KV存储系统中获取所述出队的Key名对应的数据。
在第一方面的第二种可能的实施方式中:根据出队的Key名,可以从KV存储系统中快速地获取需要的数据,解决了存储系统必须顺序存储而造成的存储空间浪费的问题。
结合第一方面、第一方面的第一种可能的实施方式或第一方面的第二种可能的实施方式,在第一方面的第三种可能的实施方式中,所述KV存储系统包括预设Key名与第二数据的KV对,所述第二数据包括所述队列的队头存储的Key名和队尾存储的Key名,所述方法还包括:
当所述队列的队头或队尾发生变化时,根据所述预设Key名更新所述KV存储系统中存储的所述队列的队头或队尾。
在第一方面的第三种可能的实施方式中,队列的队头存储的Key名和队尾 存储的Key名所组成的第二数据存储于KV存储系统中,掉电不会丢失;这样在内存掉电后,根据预设Key名获取所述队列的队头或队尾,并恢复所述队列。
结合第一方面或第一方面的第一种至第三种可能的实施方式中的任一种可能的实现方式,在第一方面的第四种可能的实施方式中,所述当所述队列的队头或队尾发生变化时,根据所述预设Key名更新所述KV存储系统中存储的所述队列的队头或队尾,包括:
当所述队列的队头或队尾发生变化时,获取当前所述队列的队头中存储的Key名和/或队尾中存储的Key名;
根据所述预设Key名,从所述KV存储系统中获取所述预设Key名对应的第二数据;
将所述第二数据更新为当前所述队列的队头中存储的Key名和队尾中存储的Key名。
在第一方面的第四种可能的实施方式中,实时更新第二数据中存储的队列的队头或队尾,确保第二数据中存储有当前队列最新的队头和队尾,便于队列的恢复和数据的查找。
结合第一方面或第一方面的第一种至第四种可能的实施方式中的任一种可能的实施方式,在第一方面的第五种可能的实施方式中,当所述队列丢失时,根据所述预设Key名获取所述KV存储介质中存储的所述队列的队头和队尾,根据所述队列的队头和队尾恢复所述队列。
在第一方面的第五种可能的实施方式中:当异常掉电等情况发生导致队列数据丢失等队列数据故障时,能够根据KV存储系统中存储的预设偏移值和第二数据高效恢复该队列。
结合第一方面或第一方面的第一种至第五种可能的实施方式中的任一种可能的实现方式,在第一方面的第六种可能的实施方式中,Key名的入队序号可以用预设位数的比特来表示,如果第一数据的入队序号为该预设位数的比特表示的最大数值,则增加第一数据的入队序号,得到待入队数据data对应的Key名的入队序号为0。
在第一方面的第六种可能的实施方式中:当待入队数据的序号大于等于预设阈值时,能够“回0”处理,解决了因处理能力限制导致的不能将数据持续存储于同一队列中的问题。
第二方面,提供了一种向队列存储数据的装置,包括:接收单元、处理单 元和内存,所述处理单元分别与所述接收单元和所述内存相连,所述装置还包括键值KV存储系统且所述处理单元与所述KV存储系统相连,或者所述装置外接KV存储系统且所述处理单元与所述KV存储系统相连;
接收单元,用于接收入队请求消息,所述入队请求消息包括待入队的数据;
处理单元,用于根据队列的队列标识和第一数据的入队序号,确定所述待入队的数据的Key名,所述第一数据是当前位于所述队列的队尾的数据;将所述Key名从所述队列的队尾入队,以及将包括所述Key名和所述待入队的数据的KV对存储在KV存储系统中。
在第二方面中,队列中存储由队列标识和入队序号所确定的Key名,使得队列元素整齐有序,便于队列的恢复;基于KV存储系统存储数据以及基于内存存储Key名,数据不必按最小粒度对齐存储,节约存储空间;通过KV存储系统存储数据,掉电不丢数据。
结合第二方面,在第二方面的第一种可能的实施方式中,
所述处理单元,用于增加所述第一数据的入队序号,得到所述待入队的数据的入队序号;将所述队列的队列标识和所述入队序号组成所述待入队的数据的Key名。
在第二方面的第一种可能的实施方式中:增加第一数据的入队序号,结合队列的队列标识得到待入队数据的Key名,待入队数据入队后,各队列元素中存储的Key名有规律可循,便于队列的恢复。
结合第二方面或者第二方面的第一种可能的实施方式,在第二方面的第二种可能的实施方式中,
所述接收单元,还用于接收出队请求消息;
所述处理单元,还用于出队所述队列的队头存储的Key名;根据所述出队的Key名,从所述KV存储系统中获取所述出队的Key名对应的数据。
在第二方面的第二种可能的实施方式中:根据出队的Key名,可以从KV存储系统中快速地获取需要的数据,解决了存储系统必须顺序存储而造成的存储空间浪费的问题。
结合第二方面、第二方面的第一种可能的实施方式或第二方面的第二种可能的实施方式,在第二方面的第三种可能的实施方式中,所述KV存储系统包括预设Key名与第二数据的KV对,所述第二数据包括所述队列的队头存储的Key名和队尾存储的Key名,
所述处理单元,还用于当所述队列的队头或队尾发生变化时,根据所述预设Key名更新所述KV存储系统中存储的所述队列的队头或队尾。
在第二方面的第三种可能的实施方式中:队列的队头存储的Key名和队尾存储的Key名所组成的第二数据存储于KV存储系统中,掉电不会丢失。
结合第二方面或第二方面的第一种至第三种可能的实施方式中的任一种可能的实施方式,在第二方面的第四种可能的实施方式中,
所述处理单元,还用于当所述队列的队头或队尾发生变化时,获取当前所述队列的队头中存储的Key名和/或队尾中存储的Key名;根据所述预设Key名,从所述KV存储系统中获取所述预设Key名对应的第二数据;将所述第二数据更新为当前所述队列的队头中存储的Key名和队尾中存储的Key名。
在第二方面的第四种可能的实施方式中:实时第二数据中中存储的队列的队头或队尾,确保第二数据中存储有当前队列最新的队头和队尾,便于队列的恢复和数据的查找。
结合第二方面或第二方面的第一种至第四种可能的实施方式中的任一种可能的实施方式,在第二方面的第五种可能的实施方式中,
所述处理单元,还用于当所述队列丢失时,根据所述预设Key名获取所述KV存储介质中存储的所述队列的队头和队尾,根据所述队列的队头和队尾恢复所述队列。
结合第二方面或第二方面的第一种至第五种可能的实施方式中的任一种可能的实施方式,在第二方面的第六种可能的实施方式中,在所述确定模块的增加单元中,当待入队数据的序号大于等于预设阈值时,序号生成器将待入队数据确定的入队序号重新确定为0,即“回0”处理。
在第二方面的第六种可能的实施方式中:当待入队数据的序号大于等于预设阈值时,能够“回0”处理,解决了因处理能力限制导致的不能将数据持续存储于同一队列中的问题。
第三方面,提供了一种一种存储设备,所述存储设备包括:接收器、处理器和内存,所述处理器分别与所述接收器和所述内存相连,所述存储设备还包括键值KV存储系统且所述处理器与所述KV存储系统相连,或者所述存储设备外接KV存储系统且所述处理器与所述KV存储系统相连;
所述接收器,用于接收入队请求消息,所述入队请求消息包括待入队的数据;
所述处理器,用于根据队列的队列标识和第一数据的入队序号,确定所述待入队的数据的键Key名,所述队列位于所述内存中,所述第一数据是当前位于所述队列的队尾的数据;将所述Key名从所述队列的队尾入队,以及将包括所述Key名和所述待入队的数据的KV对存储在所述KV存储系统中。
结合第三方面,在第三方面的第一种可能的实施方式中,
所述处理器,用于增加所述第一数据的入队序号,得到所述待入队的数据的入队序号;将所述队列的队列标识和所述入队序号组成所述待入队的数据的Key名。
结合第三方面或者第三方面的第一种可能的实施方式,在第三方面的第二种可能的实施方式中,
所述接收器,还用于接收出队请求消息;
所述处理器,还用于出队所述队列的队头存储的Key名;根据所述出队的Key名,从所述KV存储系统中获取所述出队的Key名对应的数据。
结合第三方面、第三方面的第一种可能的实施方式或第三方面的第二种可能的实施方式,在第三方面的第三种可能的实施方式中,
所述KV存储系统包括预设Key名与第二数据的KV对,所述第二数据包括所述队列的队头存储的Key名和队尾存储的Key名;
所述处理器,还用于当所述队列的队头或队尾发生变化时,根据所述预设Key名更新所述KV存储系统中存储的所述队列的队头或队尾。
结合第三方面或第三方面的第一种至第三种可能的实施方式中的任一种可能的实现方式,在第三方面的第四种可能的实施方式中,
所述处理器,用于当所述队列的队头或队尾发生变化时,获取当前所述队列的队头中存储的Key名和/或队尾中存储的Key名;根据所述预设Key名,从所述KV存储系统中获取所述预设Key名对应的第二数据;将所述第二数据更新为当前所述队列的队头中存储的Key名和队尾中存储的Key名。
结合第三方面或第三方面的第一种至第四种可能的实施方式中的任一种可能的实施方式,在第三方面的第五种可能的实施方式中,
所述处理器,还用于当所述队列丢失时,根据所述预设Key名获取所述KV存储介质中存储的所述队列的队头和队尾,根据所述队列的队头和队尾恢复所述队列。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种向队列存储数据的方法的流程图;
图2-1是本发明实施例提供的另一种向队列存储数据的方法的流程图;
图2-2是本发明实施例提供的发出入队请求的示意图;
图2-3是本发明实施例提供的待入队数据入队前的示意图;
图2-4是本发明实施例提供的待入队数据入队后的示意图;
图2-5是本发明实施例提供的发出出队请求的示意图;
图2-6是本发明实施例提供的出队后的示意图;
图2-7是本发明实施例提供的根据出队的Key名查找数据的示意图;
图2-8是本发明实施例提供的恢复丢失队列的示意图;
图3是本发明实施例提供的一种向队列存储数据的装置的框图;
图4是本发明实施例提供的一种向队列存储数据的装置与KV存储系统之间的连接关系示意图;
图5是本发明一个实施例提供的存储设备的结构框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
参见图1,其示出了一种向队列存储数据的方法的流程图,该方法应用于存储设备,存储设备包括处理器和内存,处理器与内存相连,存储设备还包括KV存储系统且处理器与KV存储系统相连,或者存储设备外接KV存储系统且处理器与KV存储系统相连,该处理器执行如下流程,包括:
步骤101:接收入队请求消息,该入队请求消息包括待入队的数据;
步骤102:根据队列的队列标识和第一数据的入队序号,确定该待入队的数据的Key名,该队列位于内存中,第一数据是当前位于该队列的队尾的数据;
步骤103:将该Key(键)名从该队列的队尾入队,以及将包括该Key名 和该待入队的数据的键值(Key Value,KV)对存储在KV存储系统中。
本发明实施例提供的技术方案带来的有益效果是:队列中存储由队列标识和入队序号所确定的Key名,使得队列元素整齐有序,便于队列的恢复;基于内存存储Key名和基于KV对存储数据,数据不必按最小粒度对齐存储,节约存储空间;通过键值对KV存储系统存储数据,掉电不丢数据。
本发明实施例提供了一种向队列存储数据的方法。该应用于存储设备,存储设备包括处理器和内存,处理器与内存相连,存储设备还包括KV存储系统且处理器与KV存储系统相连,或者存储设备外接KV存储系统且处理器与KV存储系统相连。在存储设备外接KV存储系统的情况下,处理器通过存储设备上的网卡与KV存储系统相连。
该方法执行主体可以为处理器,处理器通过获取需要入队的数据的入队序号,将队列的队列标识和该入队序号组成Key名,该队列位于存储设备的内存中,将该Key名从该队列的队尾入队,以及将包括该Key名和该需要入队的数据的KV对存储在KV存储系统中。参见图2-1,该方法包括:
步骤201:接收入队请求消息,该入队请求消息包括待入队数据。
存储设备的内存中存在一个队列,用该队列为正在运行的程序提供队列服务,该队列服务用于存储设备的处理器通过该队列存储正在运行的程序所产生的数据。当某个程序需要将其产生的数据存储在该队列时,该数据即为待入队数据,该程序可以向处理器提交入队请求消息,该入队请求消息携带待入队数据。相应的,处理器开始执行本步骤。
例如,参见图2-2,假设正在运行的程序产生了数据“data”且需要存储该数据“data”,该程序向处理器提交入队请求消息。处理器接收该入队请求消息,该入队请求消息携带待求入队数据为“data”。
步骤202:根据该队列的队列标识和第一数据的入队序号,确定待入队数据的Key名,第一数据是当前该队列的队尾存储的Key名。
由于第一数据是当前该队列的队尾存储的Key名,所以第一数据的入队序号是最近上一次从该队列的队尾入队的Key名的入队序号,因此在本步骤可以为,可以增加第一数据的入队序号得到待入队数据对应的Key名的入队序号,将该队列的队列标识和待入队数据对应的Key名的入队序号组成待入队数据的Key名。
可选的,将第一数据的入队序号增加预设偏移值可得到待入队数据对应的Key名的入队序号。其中预设偏移值可以为1、2或3等数值。
可选的,该队列的队列标识可以为该队列的名称等。
进一步地,在执行本步骤之前,还获取第一数据的入队序号。其中,在首次得到第一数据的入队序号时可以存储第一数据的入队序号,相应的,在执行本步骤之前可以直接获取存储的第一数据的入队序号。
进一步地,在增加得到待入队数据对应的Key名的入队序号时,可以将存储的第一数据的入队序号更新为待入队数据对应的Key名的入队序号。
可选的,在本实施例中,可以事先设置序号生成器,通过该序号生成器生成待入队数据对应的Key名的入队序号。具体为:
该序号生成器中存储有最近上一次从该队列的队尾入队的Key名的入队序号,即第一数据的入队序号,序号生成器增加自身存储的该入队序号得到待入队数据对应的Key名的入队序号。进一步地,该序号生成器还将自身存储的该队入序号更新为待入队数据对应的Key名的入队序号。
例如,假设在本实施例中以队列标识为“MyQueue”、第一数据的入队序号为N以及预设偏移值为1来举例说明,但此不作为对本发明保护范围的限制。如图2-3所示,获取存储的第一数据的入队序号N,将第一数据的入队序号N增加预设偏移值1得到待入队数据data对应的Key名的入队序号为N+1,再将该队列的队列标识“MyQueue”和待入队数据data对应的Key名的入队序号N+1组成待入队数据data对应的Key名为“MyQueue N+1”。进一步地,还将存储的第一数据的入队序号N更新为待入队数据data对应的Key名的入队序号N+1。
其中,在本实施例中,Key名的入队序号可以用预设位数的比特来表示,如果第一数据的入队序号为该预设位数的比特表示的最大数值,则增加第一数据的入队序号,得到待入队数据data对应的Key名的入队序号为0。
预设位数可以为4、8、16、32或64等数值。例如,假设预设位数为8,某一Key名的序号为3,则可表示为00000011,假设第一数据的入队序号为8位比特表示的最大数值,即第一数据的入队序号为11111111,增加第一数据的序号得到待入队数据data对应的Key名的入队序号为00000000,即待入队数据data对应的Key名的入队序号为0。
需要补充说明的是,队列标识可以是队列的名称或编号等。
步骤203:将待入队数据的Key名从该队列的队尾入队,以及将包括待入队数据的Key名和待入队数据的KV对存储在KV存储系统中。
在本步骤中,将待入队数据的Key名作为KV对的Key,将待入队数据作为KV对的Value,再将两者组成一个KV对。
如图2-4所示,将待入队数据“data”的Key名“MyQueue N+1”与待入队数据“data”组合成KV对“<MyQueue N+1,data>”并将该KV对存储于KV存储系统中。
其中,需要说明的是:KV存储系统是一个持久化的存储系统,所以在KV存储系统掉电后KV存储系统中存储的数据都不会丢失。另外,KV存储系统不需要按最小存储粒度存储数据,在KV存储系统中实际数据有多大就占用多大的存储空间,不存在存储空间浪费。
还需要说明的是:在本实施例中,每个Key名由各自的入队序号和该队列的队列标识组成,因此当某个Key名出现异常,根据该Key名的相邻的Key名便可恢复该Key名。
例如,如图2-4所示,继续以预设偏移值为1为例,若队列中的元素“MyQueue N”之前相邻的队列元素丢失,则可以通过队列元素“MyQueue N”的序号“N”减去预设偏移值的方式,得到序号“N-1”,再根据队列标识“MyQueue”就可以得到队列元素“MyQueue N”之前的队列元素为“MyQueue N-1”;若队列元素“MyQueue N”之后相邻的队列元素丢失,同理可得队列元素“MyQueue N”之后的元素为“MyQueue N+1”。
步骤204:根据预设Key名,更新KV存储系统中存储的该队列的队尾。
其中,需要说明的是:KV存储系统中包括:预设Key名和第二数据组成的KV对,第二数据包括该队列的队头存储的Key名和该队列的队尾存储的Key名。当第一次向该队列存入一个数据时,可以预设一个Key名,获取该队列的队头和队尾,并将获取的队头和队尾作为第二数据,将该预设Key名和第二数据组成一个KV对并存储在KV系统中,之后在每当该队列的队头和/或队尾发生变化后,将该第二数据更新为发生变化后的队头和/或队尾。
相应的,本步骤可以为:获取该队列当前的队尾存储的Key名,根据预设Key名,从KV存储系统中获取对应的第二数据,将第二数据中的队尾存储的Key名更新为当前获取的Key名。或者,
获取该队列当前的队尾存储的Key名和队头存储的Key名,根据预设Key 名,从KV存储系统中获取对应的第二数据,将第二数据更新为当前获取的队尾存储的Key名和队头存储的Key名。
例如,如图2-3所示,假设预设Key名为“prekey”,由于当前队头存储的Key名为“MyQueue 1”,队尾数据为“MyQueue N”,因此第二数据为“MyQueue 1&MyQueue N”。
当待入队数据“data”的Key名入队后,队尾存储的Key名变为“MyQueue N+1”。首先,如图2-4所示,获取更新后的队尾存储的Key名“MyQueue N+1”;然后如图2-3所示,根据预设Key名“prekey”从KV存储系统中获取第二数据“MyQueue 1&MyQueue N”;再如图2-4所示,将第二数据中的队尾存储的Key名“MyQueue N”更新为当前获取的队尾存储的Key名“MyQueue N+1”,即更新后的第二数据为“MyQueue 1&MyQueue N+1”。或者,
如图2-4所示,获取该队列当前的队尾存储的Key名“MyQueue N+1”和队头存储的Key名“MyQueue 1”;然后如图2-3所示,根据预设Key名“preKey”,从KV存储系统中获取对应的第二数据“MyQueue 1&MyQueue N”;再如图2-4所示,将第二数据“MyQueue 1&MyQueue N”更新为当前获取的队尾存储的Key名“MyQueue N+1”和队头存储的Key名“MyQueue 1”,即更新后的第二数据为“MyQueue 1&MyQueue N+1”。
除了入队请求,正在运行的程序还可以请求从该队列中出队数据,即该程序提交出队请求消息,然后通过如下步骤将数据从队列中取出。
步骤205:接收出队请求消息,出队该队列的队头存储的Key名。
例如,参见图2-5,假设正在运行的程序需要取用数据,程序向终端提交出队请求消息。终端接收出该队请求消息,将队列的队头存储的Key名出队,即将队头存储的Key名“MyQueue 1”出队,如图2-6所示。
此时,由于队头出队,使得队头更新为原队头之后的队列元素,
步骤206:根据该出队的Key名,从该KV存储系统中存储的KV对中获取该出队的Key名对应的数据。
例如,如图2-7所示,根据出队的Key名“MyQueue 1”,在KV存储系统中找到该出队的“MyQueue 1”对应的数据data1。
步骤207:根据预设Key名,更新KV存储系统中存储的该队列的队头。
本步骤可以为:获取该队列当前的队头存储的Key名,根据预设Key名,从KV存储系统中获取对应的第二数据,将第二数据中的队头存储的Key名更 新为当前获取的Key名。或者,
获取该队列当前的队尾存储的Key名和队头存储的Key名,根据预设Key名,从KV存储系统中获取对应的第二数据,将第二数据更新为当前获取的队尾存储的Key名和队头存储的Key名。
例如,依然假设预设Key名为“preKey”。当队头存储的Key名“MyQueue 1”出队后,队头存储的Key名变为“MyQueue 2”。首先,如图2-7所示,获取更新后的队头存储的Key名“MyQueue 2”;然后如图2-6所示,根据预设Key名“preKey”从KV存储系统中获取第二数据“MyQueue 1&MyQueue N+1”;再如图2-7所示,将第二数据中的队头存储的Key名“MyQueue 1”更新为当前获取的队头存储的Key名“MyQueue 2”,即更新后的第二数据为“MyQueue 2&MyQueue N+1”。或者,
如图2-7所示,获取该队列当前的队头存储的Key名“MyQueue N+1”和队头存储的Key名“MyQueue 2”;然后如图2-6所示,根据预设Key名“preKey”,从KV存储系统中获取对应的第二数据“MyQueue 1&MyQueue N+1”;再如图2-4所示,将第二数据“MyQueue 1&MyQueue N+1”更新为当前获取的队尾存储的Key名“MyQueue N+1”和队头存储的Key名“MyQueue 2”,即更新后的第二数据为“MyQueue 2&MyQueue N+1”。
进一步地,当因为内存掉电等原因导致该队列丢失时,可以根据预设Key名获取KV存储系统中存储的该队列的队头和队尾,根据该队列的队头和队尾恢复该队列。可以为:
在内存中创建一个队列,该创建的队列为一个空队列。根据预设Key名获取KV存储系统中存储的第二数据,得到丢失队列的队头存储的Key名i和队尾存储的Key名j,i为大于或等于0的整数,j为大于或等于i的整数,从该队头存储的Key名i和该队尾存储的Key名j中分别提取该队头存储的Key名i的入队序号和该队尾存储的Key名j的入队序号,以及从该队头存储的Key名i或该队尾存储的Key名j中提取该丢失队列的队列标识。
将Key名i从该队列的队尾入队,获取Key名i中包括的该队列的队列标识和Key名i的入队序号,增加Key名i的入队序号得到Key名i+1的入队序号,将Key名i+1的入队序号和该队列的队列标识组成Key名i+1,将Key名i+1从该队列的队尾入队;
增加Key名i+1入队序号得到Key名i+2的入队序号,将Key名i+2的入队序号 和该队列的队列标识组成Key名i+2,将Key名i+2从该队列的队尾入队;按上述方法直到将该队尾存储的Key名j从该队列的队尾入队后为止。
例如,如图2-7所示的队列丢失,那么可以根据上述步骤恢复该丢失的队列。具体的,如图2-8所示,新建一个空队列,根据预设Key名“preKey”从KV存储系统中获取第二数据“MyQueue 2&MyQueue N+1”,从该第二数据中得到丢失队列的队列标识“MyQueue”、队头存储的Key名“MyQueue 2”、队尾存储的Key名“MyQueue N+1”,并相应地得到队头存储的Key名的入队序号为2、队尾存储的Key名的入队序号为N+1;将队头存储的Key名“MyQueue 2”从新建队列的队尾入队;增加Key名“MyQueue 2”的入队序号2,得到入队序号“3”,将该增加得到的入队序号3与队列标识“MyQueue”组成Key名“MyQueue 3”,将该组合而成的Key名“MyQueue 3”从该新建队列的队尾入队;增加Key名“MyQueue 3”的入队序号3,得到入队序号“4”,将该增加得到的入队序号4与队列标识“MyQueue”组成Key名“MyQueue 4”,将该组合而成的Key名“MyQueue 3”从该新建队列的队尾入队……重复上述步骤,直到组合得到队尾存储的Key名“MyQueue N+1”并将该Key名“MyQueue N+1”从新建队列的队尾入队后为止,便得到与丢失队列一样的队列,如图2-8所示。
本发明实施例提供的技术方案带来的有益效果是:队列中存储由队列标识和入队序号所确定的Key名,使得队列元素整齐有序,便于队列的恢复;基于KV对存储数据,数据不必按最小粒度对齐存储,节约存储空间;通过键值对KV存储系统存储数据,掉电不丢数据。
增加第一数据的入队序号,结合队列的队列标识得到待入队数据的Key名,待入队数据入队后,各队列元素中存储的Key名有规律可循,便于队列的恢复和数据的查找。
根据出队的Key名,可以从KV存储系统中快速地获取需要的数据,解决了存储系统必须顺序存储而造成的存储空间浪费的问题。
队列的队头存储的Key名和队尾存储的Key名所组成的第二数据存储于KV存储系统中,掉电不会丢失。
实时更新第二数据中中存储的队列的队头或队尾,确保第二数据中存储有当前队列最新的队头和队尾,便于队列的恢复和数据的查找。
当异常掉电等情况发生导致队列丢失时,能够根据预设Key名从KV存储系统中获取丢失的队列的队头存储的Key名和队尾存储的Key名,根据队头 存储的Key名和队尾存储的Key名高效恢复该队列。
参见图3,其示出了一种向队列存储数据的装置300的框图,该装置300包括:接收单元310、处理单元320和内存330,处理单元320分别与接收单元310和内存330相连,参见图3,该装置300还包括KV存储340系统且处理单元320与KV存储系统340相连,或者参见图4,该装置300外接KV存储系统340且处理单元320与KV存储系统340相连;
接收单元310,用于接收入队请求消息,该入队请求消息包括待入队的数据。
处理单元320,用于根据队列的队列标识和第一数据的入队序号,确定该待入队的数据的Key名,该队列位于内存330中,该第一数据是当前位于该队列的队尾的数据;将该Key名从该队列的队尾入队,以及将包括该Key名和该待入队的数据的KV对存储在KV存储系统340中。
本发明实施例提供的技术方案带来的有益效果是:队列中存储由队列标识和入队序号所确定的Key名,使得队列元素整齐有序,便于队列的恢复;基于KV对存储数据,数据不必按最小粒度对齐存储,节约存储空间;通过键值对KV存储系统存储数据,掉电不丢数据。
可选的,处理单元320,用于增加该第一数据的入队序号,得到该待入队的数据的入队序号;将该队列的队列标识和该入队序号组成该待入队的数据的Key名。
可选的,接收单元310,还用于接收出队请求消息;
处理单元320,还用于出队该队列的队头存储的Key名;根据该出队的Key名,从该KV存储系统中获取该出队的Key名对应的数据。
可选的,该KV存储系统包括预设Key名与第二数据的KV对,该第二数据包括该队列的队头存储的Key名和队尾存储的Key名,
处理单元320,还用于当该队列的队头或队尾发生变化时,根据该预设Key名更新该KV存储系统中存储的该队列的队头或队尾。
可选的,处理单元320,用于当该队列的队头或队尾发生变化时,获取当前该队列的队头中存储的Key名和/或队尾中存储的Key名;根据该预设Key名,从该KV存储系统中获取该预设Key名对应的第二数据;将该第二数据更新为当前该队列的队头中存储的Key名和队尾中存储的Key名。
可选的,处理单元320,还用于当该队列丢失时,根据该预设Key名获取该KV存储介质中存储的该队列的队头和队尾,根据该队列的队头和队尾恢复该队列。
本发明实施例提供的技术方案带来的有益效果是:队列中存储由队列标识和入队序号所确定的Key名,使得队列元素整齐有序,便于队列的恢复;基于KV对存储数据,数据不必按最小粒度对齐存储,节约存储空间;通过键值对KV存储系统存储数据,掉电不丢数据。
增加第一数据的入队序号,结合队列的队列标识得到待入队数据的Key名,待入队数据入队后,各队列元素中存储的Key名有规律可循,便于队列的恢复和数据的查找。
根据出队的Key名,可以从KV存储系统中快速地获取需要的数据,解决了存储系统必须顺序存储而造成的存储空间浪费的问题。
队列的队头存储的Key名和队尾存储的Key名所组成的第二数据存储于KV存储系统中,掉电不会丢失。
实时更新第二数据中存储的队列的队头或队尾,确保第二数据中存储有当前队列最新的队头和队尾,便于队列的恢复和数据的查找。
需要说明的是:上述实施例提供的向队列存储数据的装置在向队列存储数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将终端和基站的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的向队列存储数据的装置与向队列存储数据的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
请参考图5,本发明实施例提供了一种存储设备500,可用于执行如图2-1所述的方法。图5示出了本发明实施例提供的存储设备500的结构。
图5示出的是与本发明实施例提供的存储设备500的部分结构的框图。参考图5,存储设备500包括接收器510、处理器520和内存530,处理器520分别与接收器510和内存530相连,存储设备500还包括KV存储系统540且处理器520与KV存储系统540相连,或者存储设备500外接KV存储系统540且处理器520与KV存储系统540相连。
本实施例提供的存储设备除了具有上述部件外,还可以有输入单元550、显示单元560、传感器570、WiFi(wireless fidelity,无线保真)模块580、以及电源590等部件。本领域技术人员可以理解,图5中示出的存储设备500结构只做实现方式的举例,并不构成对存储设备500的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图5对存储设备500的各个构成部件进行具体的介绍:
内存530可以存储一个或一个以上的指令,处理器520通过运行存储在内存530的指令,从而执行存储设备500的各种功能应用以及数据处理。内存530可主要包括存储程序区和存储数据区,其中,存储程序区可存储一个或一个以上的指令、操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等。
输入单元550可用于接收输入的数字或字符信息,以及产生与存储设备500的用户设置以及功能控制有关的键信号输入。具体地,输入单元550可包括触控面板551以及其他输入设备552。触控面板551,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板551上或在触控面板551附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板551可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器520,并能接收处理器520发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板551。除了触控面板551,输入单元550还可以包括其他输入设备552。具体地,其他输入设备552可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元560可用于显示由用户输入的信息或提供给用户的信息以及存储设备500的各种菜单。显示单元560可包括显示面板561,可选的,可以采用LCD(Liquid Crystal Display,液晶显示器)、OLED(Organic Light-Emitting Diode,有机发光二极管)等形式来配置显示面板561。进一步的,触控面板551可覆盖显示面板561,当触控面板551检测到在其上或附近的触摸操作后,传送给处理器520以确定触摸事件的类型,随后处理器520根据触摸事件的类型在显示面板 561上提供相应的视觉输出。虽然在图5中,触控面板551与显示面板561是作为两个独立的部件来实现存储设备500的输入和输入功能,但是在某些实施例中,可以将触控面板551与显示面板561集成而实现存储设备500的输入和输出功能。
存储设备500还可包括至少一种传感器570,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板561的亮度,接近传感器可在存储设备500移动到耳边时,关闭显示面板561和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别存储设备姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于存储设备500还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
WiFi属于短距离无线传输技术,存储设备500通过WiFi模块580可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图5示出了WiFi模块580,但是可以理解的是,其并不属于存储设备500的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器520是存储设备500的控制中心,利用各种接口和线路连接整个存储设备的各个部分,通过运行或执行存储在内存530内的软件程序和/或模块,以及调用存储在内存530内的数据,执行存储设备500的各种功能和处理数据,从而对存储设备进行整体监控。可选的,处理器520可包括一个或多个处理单元;优选的,处理器520可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器520中。
存储设备500还包括给各个部件供电的电源590(比如电池),优选的,电源可以通过电源管理系统与处理器520逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
尽管未示出,存储设备500还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本发明实施例中,该存储设备500所包括接收器510和处理器520具有 以下功能:
接收器510,用于用于接收入队请求消息,该入队请求消息包括待入队的数据;
处理器520,用于根据队列的队列标识和第一数据的入队序号,确定待入队的数据的key名,该第一数据是当前位于该队列的队尾的数据;将该key名从该队列的队尾入队,以及将包括该key名和待入队的数据的KV对存储在KV存储系统中。
可选的,处理器520,用于增加该第一数据的入队序号,得到待入队的数据的入队序号;将该队列的队列标识和该入队序号组成待入队的数据的key名。
可选的,接收器510,还用于接收出队请求消息;
处理器520,还用于出队该队列的队头存储的key名;根据该出队的key名,从该KV存储系统中获取该出队的key名对应的数据。
可选的,KV存储系统包括预设key名与第二数据的KV对,该第二数据包括该队列的队头存储的key名和队尾存储的key名,
该处理器520还用于:当该队列的队头或队尾发生变化时,根据该预设key名更新该KV存储系统中存储的该队列的队头或队尾。
可选的,该处理器520,用于当该队列的队头或队尾发生变化时,获取当前该队列的队头中存储的key名和/或队尾中存储的key名;根据该预设key名,从该KV存储系统中获取该预设key名对应的第二数据;将该第二数据更新为当前该队列的队头中存储的key名和队尾中存储的key名。
可选的,该处理器520还用于当该队列丢失时,根据该预设key名获取该KV存储系统中存储的该队列的队头和队尾,根据该队列的队头和队尾恢复该队列。
本发明实施例提供的技术方案带来的有益效果是:队列中存储由队列标识和入队序号所确定的Key名,使得队列元素整齐有序,便于队列的恢复;基于KV对存储数据,数据不必按最小粒度对齐存储,节约存储空间;通过键值对KV存储系统存储数据,掉电不丢数据。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用 和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,可以仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到 变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (18)

  1. 一种向队列存储数据的方法,其特征在于,所述方法应用于存储设备,所述存储设备包括处理器和内存,所述处理器与所述内存相连,所述存储设备还包括键值KV存储系统且所述处理器与所述KV存储系统相连,或者所述存储设备外接KV存储系统且所述处理器与所述KV存储系统相连,所述处理器执行如下流程包括:
    接收入队请求消息,所述入队请求消息包括待入队的数据;
    根据队列的队列标识和第一数据的入队序号,确定所述待入队的数据的键Key名,所述队列位于所述内存中,所述第一数据是当前位于所述队列的队尾的数据;
    将所述Key名从所述队列的队尾入队,以及将包括所述Key名和所述待入队的数据的键值KV对存储在所述KV存储系统中。
  2. 根据权利要求1所述的方法,其特征在于,所述根据队列的队列标识和第一数据的入队序号,确定所述待入队的数据的Key名,包括:
    增加所述第一数据的入队序号,得到所述待入队的数据的入队序号;
    将所述队列的队列标识和所述入队序号组成所述待入队的数据的Key名。
  3. 根据权利要求1所述的方法,其特征在于,所述方法还包括:
    接收出队请求消息;
    出队所述队列的队头存储的Key名;
    根据所述出队的Key名,从所述KV存储系统中获取所述出队的Key名对应的数据。
  4. 根据权利要求1至3任一项权利要求所述的方法,其特征在于,所述KV存储系统包括预设Key名与第二数据的KV对,所述第二数据包括所述队列的队头存储的Key名和队尾存储的Key名,所述方法还包括:
    当所述队列的队头或队尾发生变化时,根据所述预设Key名更新所述KV存储系统中存储的所述队列的队头或队尾。
  5. 根据权利要求4所述的方法,其特征在于,所述当所述队列的队头或队尾发生变化时,根据所述预设Key名更新所述KV存储系统中存储的所述队列的队头或队尾,包括:
    当所述队列的队头或队尾发生变化时,获取当前所述队列的队头中存储的Key名和/或队尾中存储的Key名;
    根据所述预设Key名,从所述KV存储系统中获取所述预设Key名对应的第二数据;
    将所述第二数据更新为当前所述队列的队头中存储的Key名和队尾中存储的Key名。
  6. 根据权利要求4所述的方法,其特征在于,所述方法还包括:
    当所述队列丢失时,根据所述预设Key名获取所述KV存储系统中存储的所述队列的队头和队尾,根据所述队列的队头和队尾恢复所述队列。
  7. 一种向队列存储数据的装置,其特征在于,所述装置包括:接收单元、处理单元和内存,所述处理单元分别与所述接收单元和所述内存相连,所述装置还包括键值KV存储系统且所述处理单元与所述KV存储系统相连,或者所述装置外接KV存储系统且所述处理单元与所述KV存储系统相连;
    所述接收单元,用于接收入队请求消息,所述入队请求消息包括待入队的数据;
    所述处理单元,用于根据队列的队列标识和第一数据的入队序号,确定所述待入队的数据的键Key名,所述队列位于所述内存中,所述第一数据是当前位于所述队列的队尾的数据;将所述Key名从所述队列的队尾入队,以及将包括所述Key名和所述待入队的数据的键值KV对存储在所述KV存储系统中。
  8. 根据权利要求7所述的装置,其特征在于,
    所述处理单元,用于增加所述第一数据的入队序号,得到所述待入队的数据的入队序号;将所述队列的队列标识和所述入队序号组成所述待入队的数据的Key名。
  9. 根据权利要求7所述的装置,其特征在于,
    所述接收单元,还用于接收出队请求消息;
    所述处理单元,还用于出队所述队列的队头存储的Key名;根据所述出队的Key名,从所述KV存储系统中获取所述出队的Key名对应的数据。
  10. 根据权利要求7至9任一项权利要求所述的装置,其特征在于,所述KV存储系统包括预设Key名与第二数据的KV对,所述第二数据包括所述队列的队头存储的Key名和队尾存储的Key名,
    所述处理单元,还用于当所述队列的队头或队尾发生变化时,根据所述预设Key名更新所述KV存储系统中存储的所述队列的队头或队尾。
  11. 根据权利要求10所述的装置,其特征在于,
    所述处理单元,用于当所述队列的队头或队尾发生变化时,获取当前所述队列的队头中存储的Key名和/或队尾中存储的Key名;根据所述预设Key名,从所述KV存储系统中获取所述预设Key名对应的第二数据;将所述第二数据更新为当前所述队列的队头中存储的Key名和队尾中存储的Key名。
  12. 根据权利要求10所述的装置,其特征在于,
    所述处理单元,还用于当所述队列丢失时,根据所述预设Key名获取所述KV存储系统中存储的所述队列的队头和队尾,根据所述队列的队头和队尾恢复所述队列。
  13. 一种存储设备,其特征在于,所述存储设备包括:接收器、处理器和内存,所述处理器分别与所述接收器和所述内存相连,所述存储设备还包括键值KV存储系统且所述处理器与所述KV存储系统相连,或者所述存储设备外接KV存储系统且所述处理器与所述KV存储系统相连;
    所述接收器,用于接收入队请求消息,所述入队请求消息包括待入队的数据;
    所述处理器,用于根据队列的队列标识和第一数据的入队序号,确定所述待入队的数据的键Key名,所述队列位于所述内存中,所述第一数据是当前位 于所述队列的队尾的数据;将所述Key名从所述队列的队尾入队,以及将包括所述Key名和所述待入队的数据的KV对存储在所述KV存储系统中。
  14. 根据权利要求13所述的存储设备,其特征在于,
    所述处理器,用于增加所述第一数据的入队序号,得到所述待入队的数据的入队序号;将所述队列的队列标识和所述入队序号组成所述待入队的数据的Key名。
  15. 根据权利要求13所述的存储设备,其特征在于,
    所述接收器,还用于接收出队请求消息;
    所述处理器,还用于出队所述队列的队头存储的Key名;根据所述出队的Key名,从所述KV存储系统中获取所述出队的Key名对应的数据。
  16. 根据权利要求13至15任一项权利要求所述的存储设备,其特征在于,所述KV存储系统包括预设Key名与第二数据的KV对,所述第二数据包括所述队列的队头存储的Key名和队尾存储的Key名;
    所述处理器,还用于当所述队列的队头或队尾发生变化时,根据所述预设Key名更新所述KV存储系统中存储的所述队列的队头或队尾。
  17. 根据权利要求16所述的存储设备,其特征在于,
    所述处理器,用于当所述队列的队头或队尾发生变化时,获取当前所述队列的队头中存储的Key名和/或队尾中存储的Key名;根据所述预设Key名,从所述KV存储系统中获取所述预设Key名对应的第二数据;将所述第二数据更新为当前所述队列的队头中存储的Key名和队尾中存储的Key名。
  18. 根据权利要求16所述的存储设备,其特征在于,
    所述处理器,还用于当所述队列丢失时,根据所述预设Key名获取所述KV存储介质中存储的所述队列的队头和队尾,根据所述队列的队头和队尾恢复所述队列。
PCT/CN2015/095818 2015-11-27 2015-11-27 向队列存储数据的方法、装置及设备 WO2017088180A1 (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/CN2015/095818 WO2017088180A1 (zh) 2015-11-27 2015-11-27 向队列存储数据的方法、装置及设备
CN201580002944.5A CN109463002B (zh) 2015-11-27 2015-11-27 向队列存储数据的方法、装置及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2015/095818 WO2017088180A1 (zh) 2015-11-27 2015-11-27 向队列存储数据的方法、装置及设备

Publications (1)

Publication Number Publication Date
WO2017088180A1 true WO2017088180A1 (zh) 2017-06-01

Family

ID=58762922

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2015/095818 WO2017088180A1 (zh) 2015-11-27 2015-11-27 向队列存储数据的方法、装置及设备

Country Status (2)

Country Link
CN (1) CN109463002B (zh)
WO (1) WO2017088180A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112291307A (zh) * 2020-10-12 2021-01-29 北京思明启创科技有限公司 数据请求的处理方法、装置及电子设备

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112784120B (zh) * 2021-01-25 2023-02-21 浪潮云信息技术股份公司 一种基于范围分片方式的kv内存数据库存储管理方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030187909A1 (en) * 2002-03-29 2003-10-02 International Business Machines Corporation System and method for interleaving multiple requests from multiple users in order to prevent starvation of any user's request
CN101222444A (zh) * 2008-02-04 2008-07-16 华为技术有限公司 缓存数据处理方法、装置及系统
CN101751292A (zh) * 2009-12-10 2010-06-23 四川川大智胜软件股份有限公司 Atc系统中一种实现多机关键数据一致性功能的方法
CN103647726A (zh) * 2013-12-11 2014-03-19 华为技术有限公司 一种报文调度方法及装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4042913A (en) * 1976-04-30 1977-08-16 International Business Machines Corporation Address key register load/store instruction system
US6032207A (en) * 1996-12-23 2000-02-29 Bull Hn Information Systems Inc. Search mechanism for a queue system
CN102663007B (zh) * 2012-03-20 2013-12-18 广东电子工业研究院有限公司 一种支持敏捷开发和横向扩展的数据存储与查询方法
US10078518B2 (en) * 2012-11-01 2018-09-18 International Business Machines Corporation Intelligent context management
CN103902632B (zh) * 2012-12-31 2018-01-02 华为技术有限公司 键值存储系统中构建文件系统的方法、装置及电子设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030187909A1 (en) * 2002-03-29 2003-10-02 International Business Machines Corporation System and method for interleaving multiple requests from multiple users in order to prevent starvation of any user's request
CN101222444A (zh) * 2008-02-04 2008-07-16 华为技术有限公司 缓存数据处理方法、装置及系统
CN101751292A (zh) * 2009-12-10 2010-06-23 四川川大智胜软件股份有限公司 Atc系统中一种实现多机关键数据一致性功能的方法
CN103647726A (zh) * 2013-12-11 2014-03-19 华为技术有限公司 一种报文调度方法及装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112291307A (zh) * 2020-10-12 2021-01-29 北京思明启创科技有限公司 数据请求的处理方法、装置及电子设备

Also Published As

Publication number Publication date
CN109463002A (zh) 2019-03-12
CN109463002B (zh) 2023-09-22

Similar Documents

Publication Publication Date Title
JP7317111B2 (ja) バックグラウンドアプリケーションの表示方法及び移動端末
WO2019141174A1 (zh) 未读消息的处理方法及移动终端
EP2708983B1 (en) Method for auto-switching user interface of handheld terminal device and handheld terminal device thereof
EP3382994A1 (en) Method and apparatus for updating data
WO2016197758A1 (zh) 信息推荐系统、方法及装置
WO2021129762A1 (zh) 应用分享方法、电子设备及计算机可读存储介质
WO2020011077A1 (zh) 通知消息显示方法及终端设备
CN110196667B (zh) 一种通知消息的处理方法及终端
CN108897486B (zh) 一种显示方法及终端设备
CN108984066B (zh) 一种应用程序图标显示方法及移动终端
JP7414986B2 (ja) 情報表示、送信方法及び電子機器
WO2018006841A1 (zh) 二维码信息传输方法、装置以及设备
WO2015058617A1 (zh) 视频帧存储管理方法、视频服务器及通信系统
US20170064352A1 (en) Method and system for collecting statistics on streaming media data, and related apparatus
WO2021129732A1 (zh) 显示处理方法及电子设备
WO2014206138A1 (zh) 一种更新网页数据的方法、装置和终端设备
WO2019201146A1 (zh) 表情图像的显示方法及终端设备
WO2019129264A1 (zh) 界面的显示方法和移动终端
CN108388354A (zh) 一种输入法候选区域的显示方法和移动终端
WO2017088180A1 (zh) 向队列存储数据的方法、装置及设备
CN109745699A (zh) 一种响应触控操作的方法及终端设备
WO2020192662A1 (zh) 操作方法及终端设备
CN111163227B (zh) 一种分享方法及电子设备
CN110175063B (zh) 操作辅助方法、装置、移动终端及存储介质
CN109889568B (zh) 一种数据导出方法、服务器及系统

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: 15909091

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 15909091

Country of ref document: EP

Kind code of ref document: A1