CN109446227A - 用于处理缓存分页的方法、装置及计算机可读存储介质 - Google Patents
用于处理缓存分页的方法、装置及计算机可读存储介质 Download PDFInfo
- Publication number
- CN109446227A CN109446227A CN201811206185.6A CN201811206185A CN109446227A CN 109446227 A CN109446227 A CN 109446227A CN 201811206185 A CN201811206185 A CN 201811206185A CN 109446227 A CN109446227 A CN 109446227A
- Authority
- CN
- China
- Prior art keywords
- data
- ordered set
- caching
- index
- inquiry request
- Prior art date
- Legal status (The legal status 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 status listed.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明的实施例提供了一种用于处理缓存分页的方法,该方法包括接收第一查询请求,其中,所述第一查询请求中包括第一查询条件和第一分页信息;从目标数据库中查询与所述第一查询请求相关联的第一数据集合;将基于所述第一数据集合确定的第一数据有序集合存储在缓存中;将基于所述第一数据有序集合确定的第一索引有序集合存储在缓存中;以及将所述第一查询条件和所述第一数据有序集合的键值以数据对的形式存储在所述缓存中的字典有序集合中。此外,本发明还提供了一种用于处理缓存分页的装置以及一种相对应的计算机可读存储介质。
Description
技术领域
本发明涉及数据库中的数据处理技术,更为具体地涉及一种用于处理缓存分页的方法、一种用于执行上述方法的用于处理缓存分页的装置以及一种相对应的计算机可读存储介质。
背景技术
在面向用户的服务系统中,该服务系统的软件系统的性能对于用户的用户体验至关重要。软件系统设计合理,则用户体验较佳;与之相对应地,如果软件系统设计不合理,则用户体验会较差,从而影响到用户对于该服务系统的整体评价甚至选择。
为了提高服务系统的用户体验,需要通过对用户数据进行缓存来提高软件系统接受用户访问的能力,提升响应速度,进而改善用户体验。
因此,现有的软件系统急需一种能够提高缓存中数据的效率并且在下一次访问是能够尽可能大概率地查找出用户访问所请求的数据的机制。
发明内容
基于对于以上技术问题以及技术现状的理解,本发明的发明人在本发明的第一方面中提供了一种用于处理缓存分页的方法,所述方法包括:
A.接收第一查询请求,其中,所述第一查询请求中包括第一查询条件和第一分页信息;
B.从目标数据库中查询与所述第一查询请求相关联的第一数据集合;
C.将基于所述第一数据集合确定的第一数据有序集合存储在缓存中;
D.将基于所述第一数据有序集合确定的第一索引有序集合存储在缓存中;以及
E.将所述第一查询条件和所述第一数据有序集合的键值以数据对的形式存储在所述缓存中的字典有序集合中。
本发明的第二方面提供了一种用于处理缓存分页的装置,其包括:
处理器;以及
存储器,其用于存储指令,当所述指令执行时使得所述处理器执行以下操作:
A.接收第一查询请求,其中,所述第一查询请求中包括第一查询条件和第一分页信息;
B.从目标数据库中查询与所述第一查询请求相关联的第一数据集合;
C.将基于所述第一数据集合确定的第一数据有序集合存储在缓存中;
D.将基于所述第一数据有序集合确定的第一索引有序集合存储在缓存中;以及
E.将所述第一查询条件和所述第一数据有序集合的键值以数据对的形式存储在所述缓存中的字典有序集合中。
最后,本发明的第三方面提供了一种计算机可读存储介质,其具有存储在其上的计算机可读程序指令,所述计算机可读程序指令用于执行根据本发明的第一方面所述的用于处理缓存分页的方法。
依据本发明所公开的用于处理缓存分页的方法、用于执行上述方法的用于处理缓存分页的装置以及相对应的计算机可读存储介质能够将数据直接存储在缓存中,后续查询数据时仅仅需要依赖于数据有序集合即可,直接根据查询条件获得查询结果。
附图说明
结合附图并参考以下详细说明,本公开的各实施例的特征、优点及其他方面将变得更加明显,在此以示例性而非限制性的方式示出了本公开的若干实施例,在附图中:
图1示出了依据本发明的用于处理缓存分页的方法100的示意性流程图。;
图2示出了依据本发明的用于处理缓存分页的装置的一个实施例200的示意图;以及
图3示出了依据本发明的用于处理缓存分页的装置的另一个实施例300的示意图。
具体实施方式
以下参考附图详细描述本公开的各个示例性实施例。虽然以下所描述的示例性方法、装置包括在其它组件当中的硬件上执行的软件和/或固件,但是应当注意,这些示例仅仅是说明性的,而不应看作是限制性的。例如,考虑在硬件中独占地、在软件中独占地、或在硬件和软件的任何组合中可以实施任何或所有硬件、软件和固件组件。因此,虽然以下已经描述了示例性的方法和装置,但是本领域的技术人员应容易理解,所提供的示例并不用于限制用于实现这些方法和装置的方式。
此外,附图中的流程图和框图示出了根据本公开的各种实施例的方法和系统的可能实现的体系架构、功能和操作。应当注意,方框中所标注的功能也可以按照不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,或者它们有时也可以按照相反的顺序执行,这取决于所涉及的功能。同样应当注意的是,流程图和/或框图中的每个方框、以及流程图和/或框图中的方框的组合,可以使用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以使用专用硬件与计算机指令的组合来实现。
在详细介绍依据本发明的具体实施方式之前,首先对本发明中用到的一些术语进行说明。
在本发明中,术语“查询请求”是指数据库的用户为了查询所需要的数据而发起的请求,该请求中可以包括查询条件和/或分页信息,例如查询条件能够是商品名、价格区间、制造商等,而分页信息能够是需要查询多少页、每页包含多少条记录相关的信息。
在本发明中,术语“目标数据库”是指服务器上用于存储待查询的数据的数据库,其能够采取各种数据组织形式。
在本发明中,术语“数据有序集合”是指在该集合中的数据按照一定的数据排序规则进行排序,从而形成的有序集合。
在本发明中,术语“索引有序集合”是指在该集合中的索引按照一定的与相对应的数据一致的排序规则进行排序,从而形成的有序集合。
在本发明中,术语“数据对”是指不仅仅包含一类数据,其至少包括两类信息,而且这些信息之间存在关联关系从而形成的数据对。
在本发明中,术语“字典有序集合”是指在其中至少注册有查询条件和与查询条件相关联的数据有序集合的键值的数据对的有序集合,其形式上和字典类似。可选地,该字典有序集合中还能够包括类别信息。
在本发明中,术语“类别信息”是指与每个查询条件相关联的表明其查询的目标数据库的类别的信息,例如可以是订单类别或者商品类别。
接下来,在详细介绍依据本发明的具体的技术方案之前,将首先介绍本发明所基于的技术问题,即在现有技术中,针对数据的分页查询来说,由于参数容易改变,数据分页要求也很容易改变,从而导致全量基于REDIS(Remote Dictionary Server:远程字典服务器)缓存来对待查询数据进行存储具有很大的难度。
具体来说,在针对用户的数据分页查询的需求中,查询参数变化多样,而且分页条数可能不同并且分页页码也可能不同,这些都会导致返回的数据发生变化。与此同时,随着数据本身的信息变化,同样也会导致数据在分页中的变化,由此造成了数据缓存难度大,进而不易于更新。
本发明的发明人经过研究发现,现有技术中存在如下问题,即现有的REDIS缓存技术中所缓存的数据要么只有下次查询时的查询条件和之前的查询条件中的一个查询条件完全一致时才能够从该REDIS缓存中查询到合适的查询结果,此外,这样的方案会导致缓存数据大量冗余且无法进行数据更新,在有数据变化时也无法做到准确刷新;要么即便是采取数据集合的方式进行数据缓存,但是没办法做到在数据集合中某个数据项发生变化时仅对该发生变化的数据项做增量更新,现有的数据集合式REDIS缓存采取的均是全量删除在全量重建的方式,这样便会浪费很多计算机资源,而且用户体验也会较差。
针对上述技术问题,本发明的发明人提出在使用REDIS操作方式不改变的情况下通过提供了一种能实时缓存所有分页数据来解决上述技术问题,进而形成基于缓存的分页数据遍历和更新的解决方案。在该解决方案之中,只需依赖REDIS的有序集合(ZSET)数据结构,能实现基于不同查询参数,不同分页参数的数据存储,可不需要将数据全量加载进入REDIS,随查询数据的范围动态加载,并且在数据发生变化时,可以做到所有分页缓存实时刷新,而不需要重建整个缓存。
具体来说,该解决方案针对一种参数组合的分页查询会生成一个数据ZSET,保存实际的数据内容,可以是诸如Json数据格式的数据,本领域的技术人员应当了解,其他数据格式的数据也是可行的。该分页条件下的数据则都存储在该数据ZSET中,排序也遵循ZSET的排序规则,进行缓存后的数据在后续分页查询请求时,数据均从该数据ZSET中提取。与此同时,即在生成数据ZSET的同时,还需要生成一个标识符ID索引ZSET,即索引ZSET,该索引ZSET用于和数据ZSET一一对应,根据排序分值进行相同位置的排序,例如数据ZSET的第一位存储一个数据,那么索引ZSET的第一位也存储和数据ZSET中第一位对应数据模型的ID值。然后,在生成了基于条件参数为标识的数据ZSET和索引ZSET对之后,还会将该条件参数形成的标识在字典ZSET中进行注册,该字典ZSET保存了当前REDIS中的所有分页的组合记录,同时也保存了该数据ZSET所对应的分页参数,每条记录就对应了一个真实的数据ZSET和索引ZSET对,用于后续数据变更后的数据刷新。
以下举一个具体的示例来描述依据本发明的一个实施例所提出的缓存分页方法。例如用户基于开始(2018年9月1日)、结束时间(2018年9月11日)进行分页查询订单信息,在此,用户输入的开始结束时间是一个分页的条件,那么程序将会根据这两个参数进行数据的查询并且根据查询结果生成数据ZSET和索引ZSET,然后将该数据ZSET和索引ZSET的对应关系注册到字典ZSET之中。
在完成一次查询后,REDIS中将会出现三个ZSET,即三个有序数据集合,其中,数据ZSET的key表示为:table_order_20180901_20180911,索引ZSET的key表示为:table_order_20180901_20180911_id,并且把key值对:“table_order_20180901_20180911”以及“table_order_20180901_20180911_id”注册到字典ZSET之中。
后续,如果直接跨页查询第100页数据,方案将实现动态增长,首先计算出100页的数据总量,然后查询当前数据ZSET中的数据总量。如果数据ZSET中的数据不够,则先从数据库中查询出第100页的数据返回,与此同时异步提交一个补数请求,从而将中间差距的数据进行异步补齐,那么下一次再查询100页内的数据时都可以直接基于REDIS返回结果。
当数据中有一条数据发生变化时,所有的分页缓存记录都可能根据这个变化受到影响,刷新操作进行异步刷新。首先获取字典ZSET中的所有记录,也就是当前有多少数据ZSET,以及每个数据ZSET对应的查询参数,根据订单ID去索引ZSET中找到是否有该订单ID,如果有该订单ID,ID对应的分值是多少,通过分值去数据ZSET找到对应的订单信息记录,(由于数据ZSET是存储数据信息,不能通过ID直接去查询定位到记录,则只能通过索引ZSET实现基于ID的查询),同时删除数据ZSET和索引ZSET关于该订单的记录,再根据分页参数验证该订单变更后是否还是该分页集合的成员,若是则再添加进入集合,遍历所有的字典ZSET中记录的分页集合,则完成所有分页数据缓存的单个数据刷新。
以上所提出的解决方案具有以下优点,即:
首先,使用该方法,数据缓存直接,后续查询数据仅仅依赖于数据ZSET,直接根据条件得到查询结果;此外,数据更新操作封闭,使用者不需要了解一共缓存了多少个分页条件对应的集合,而只需要调用刷新接口则实现全部数据刷新。
其次,数据填充和数据刷新异步化,对现有系统的影响最小化,况且所有分页请求均基于内存,一次数据加载,适合任意分页大小分页。
以下结合附图描述依据本发明的用于处理缓存分页的方法。图1示出了依据本发明的用于处理缓存分页的方法100的示意性流程图。从图中可以看出,该用于处理缓存分页的方法100至少包括以下五个步骤,即:
首先,在方法步骤110中,接收第一查询请求,其中,所述第一查询请求中包括第一查询条件和第一分页信息。例如,第一查询条件可以是“自行车-价格300元至400元之间”,而分页信息例如可以是“共50页,每页10项纪录”。
然后,在方法步骤120中,从目标数据库中查询与所述第一查询请求相关联的第一数据集合。也就是说,会将目标数据库中符合该查询条件的数据取出,而且仅仅会取500项(50页*10项/页)。
接下来,在方法步骤130中,将基于所述第一数据集合确定的第一数据有序集合存储在缓存中。所取出的500项纪录会按照预定的规则进行排序,例如按照价格由低到高,将排序后形成的数据有序集合存入缓存。
再接下来,在方法步骤140中,将基于所述第一数据有序集合确定的第一索引有序集合存储在缓存中。例如,能够按照数据有序集合中的排序顺序将每项数据所对应的索引信息存储在索引有序集合之中。
最后,在方法步骤150之中,将所述第一查询条件和所述第一数据有序集合的键值以数据对的形式存储在所述缓存中的字典有序集合中。例如在上述的例子之中,将会将查询条件,即“自行车-价格300元至400元之间”以及数据有序集合的键值以数据对的形式存储在字典有序集合之中,以待后续查询之用。
虽然图1中未示出,在依据本发明的一个实施例中,所述方法100还能够包括以下步骤,即将所述第一数据有序集合的类别信息存储在所述缓存的所述字典有序集合中,其中,所述类别信息与所述第一查询条件相关联。由此能够使得字典有序集合的数据更为丰富,以便后续利用缓存中所包含的数据时能够更为高效。例如,字典有序集合中有五个记录项,其中三个为订单类别,另外两个为商品类别,则后续查询如果为订单类别,则不需要遍历全部五个记录项,而仅仅需要遍历三个记录项便可。
此外,在依据本发明的一个实施例中,所述方法100还可以包括以下步骤,即返回所述第一数据集合。由此能够完成查询操作,得到查询结果,即所返回的第一数据集合。
优选地,在依据本发明的一个实施例中,所述方法100还包括以下步骤:
M.接收第二查询请求,其中,所述第二查询请求中包括第二查询条件和第二分页信息;
N.根据由所述第二查询请求所确定的键值来确定所述缓存中是否存在与所述第二查询条件相关联的数据有序集合;以及
O.在不存在与所述第二查询条件相关联的数据有序集合的情况下,从目标数据库中查询并返回与所述第二查询请求相关联的第二数据集合。
以这样的方式,在后续查询时,如果字典有序集合中不存在与查询条件相匹配的数据对,则需要在目标数据库中查询以得到查询结果。
可选地,在依据本发明的一个实施例中,所述方法100还可以包括:
P.将与所述第二数据集合相关联的第二数据有序集合、第二索引有序集合存储在所述缓存中;以及
Q.将所述第二查询条件和所述第二数据有序集合的键值以数据对的形式存储在所述缓存中的字典有序集合中。
以这样的方式能够在缓存中不断丰富新的查询条件所对应的数据有序集合、索引有序集合,并且在字典有序集合中注册该查询条件以及与之相对应的数据有序集合的键值。
优选地,在依据本发明的一个实施例中,所述方法100还能够包括:
O1'.在存在与所述第二查询条件相关联的数据有序集合的情况下,根据所述第二分页信息确定所述数据有序集合中的数据量是否少于由所述第二分页信息所确定的数量;以及
O2”.在少于由所述第二分页信息所确定的数量的情况下,从目标数据库中查询并返回与所述第二查询请求相关联的第二数据集合。
以这样的方式,在缓存中的数据有序集合中的数据不足以支持新的查询请求所需要的数据时,能够从目标数据库中获得所需查询的数据。
进一步优选地,在依据本发明的一个实施例中,所述方法100还能够包括:
P'.根据所述第二数据集合更新所述缓存中与所述第二数据集合相关联的数据有序集合和索引有序集合。
以这样的方式,能够在得到查询结果的同时,更新所述缓存中与所述第二数据集合相关联的数据有序集合和索引有序集合,以便提高后续查询的效率。
进一步优选地,在依据本发明的一个实施例中,P'.根据所述第二数据集合更新所述缓存中与所述第二数据集合相关联的数据有序集合和索引有序集合进一步包括:
确定与所述第二数据集合相关联的数据有序集合在更新前后的数据差量;以及
基于所述数据差量从所述目标数据库中查询差量数据,以更新所述数据有序集合和索引有序集合。
以这样的方式,能够以差量的方式对缓存中的数据库进行更新,而不需要以全量的方式进行更新,从而提高了数据处理效率。
在依据本发明的一个实施例中,所述方法100还能够包括:
在不少于由所述第二分页信息所确定的数量的情况下,从所述缓存中的与所述第二查询条件相关联的数据有序集合中获得并返回查询结果数据。
以这样的方式,在缓存中具有足够多的数据的情况下,能够直接从缓存中而非从目标数据库中获取所需查询的数据,从而加速了查询速度,提高了用户体验。
在依据本发明的一个实施例中,所述方法100还能够包括:
接收索引信息;
删除所述数据有序集合和索引有序集合中与所述索引信息相关联的数据项;
在所述目标数据库中查询与所述索引信息相关联的数据信息;以及
根据所述字典有序集合中的查询条件和所述数据信息来更新所述数据有序集合和所述索引有序集合。
以这样的方式,能够以增量的方式对缓存中的数据进行更新,而不需要将缓存数据库中的数据全部删除然后全部重建。之所以能够做到这一点,是因为在本发明的实施方案之中,存储了索引有序集合,从而能够对数据有序集合中相关联的数据进行准确的定位,进行删除。此外,字典有序集合中还存储了相关联的查询条件,从而能够根据更新后的数据再次判断该数据属于还是不属于相应的数据有序集合,进而完成数据的增量更新。
此外,替代地,上述方法能够通过计算机程序产品,即计算机可读存储介质来实现。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本发明的各个方面的计算机可读程序指令。计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
图2示出了依据本发明内容的一个实施例所提出的用于处理缓存分页的装置200。从图2中可以看出,该装置200包括处理器210和与处理器210耦接的存储器220。
存储器220存储有指令。指令在由处理器210执行时使得处理器210执行以下动作:
A.接收第一查询请求,其中,所述第一查询请求中包括第一查询条件和第一分页信息;
B.从目标数据库中查询与所述第一查询请求相关联的第一数据集合;
C.将基于所述第一数据集合确定的第一数据有序集合存储在缓存中;
D.将基于所述第一数据有序集合确定的第一索引有序集合存储在缓存中;以及
E.将所述第一查询条件和所述第一数据有序集合的键值以数据对的形式存储在所述缓存中的字典有序集合中。
在依据本发明的一个实施例中,当所述指令执行时还使得所述处理器执行以下操作:
F.将所述第一数据有序集合的类别信息存储在所述缓存的所述字典有序集合中,其中,所述类别信息与所述第一查询条件相关联。
在依据本发明的一个实施例中,当所述指令执行时还使得所述处理器执行以下操作:
G.返回所述第一数据集合。
在依据本发明的一个实施例中,当所述指令执行时还使得所述处理器执行以下操作:
M.接收第二查询请求,其中,所述第二查询请求中包括第二查询条件和第二分页信息;
N.根据由所述第二查询请求所确定的键值来确定所述缓存中是否存在与所述第二查询条件相关联的数据有序集合;以及
O.在不存在与所述第二查询条件相关联的数据有序集合的情况下,从目标数据库中查询并返回与所述第二查询请求相关联的第二数据集合。
在依据本发明的一个实施例中,当所述指令执行时还使得所述处理器执行以下操作:
P.将与所述第二数据集合相关联的第二数据有序集合、第二索引有序集合存储在所述缓存中;以及
Q.将所述第二查询条件和所述第二数据有序集合的键值以数据对的形式存储在所述缓存中的字典有序集合中。
在依据本发明的一个实施例中,当所述指令执行时还使得所述处理器执行以下操作:
O1'.在存在与所述第二查询条件相关联的数据有序集合的情况下,根据所述第二分页信息确定所述数据有序集合中的数据量是否少于由所述第二分页信息所确定的数量;以及
O2”.在少于由所述第二分页信息所确定的数量的情况下,从目标数据库中查询并返回与所述第二查询请求相关联的第二数据集合。
在依据本发明的一个实施例中,当所述指令执行时还使得所述处理器执行以下操作:
P'.根据所述第二数据集合更新所述缓存中与所述第二数据集合相关联的数据有序集合和索引有序集合。
在依据本发明的一个实施例中,P'.根据所述第二数据集合更新所述缓存中与所述第二数据集合相关联的数据有序集合和索引有序集合进一步包括:
确定与所述第二数据集合相关联的数据有序集合在更新前后的数据差量;以及
基于所述数据差量从所述目标数据库中查询差量数据,以更新所述数据有序集合和索引有序集合。
在依据本发明的一个实施例中,当所述指令执行时还使得所述处理器执行以下操作:
在不少于由所述第二分页信息所确定的数量的情况下,从所述缓存中的与所述第二查询条件相关联的数据有序集合中获得并返回查询结果数据。
在依据本发明的一个实施例中,当所述指令执行时还使得所述处理器执行以下操作:
接收索引信息;
删除所述数据有序集合和索引有序集合中与所述索引信息相关联的数据项;
在所述目标数据库中查询与所述索引信息相关联的数据信息;以及
根据所述字典有序集合中的查询条件和所述数据信息来更新所述数据有序集合和所述索引有序集合。
图3示出了用于处理缓存分页的装置300的示意性框图。应当理解,用于处理缓存分页的装置300可以被实现为实现图1中的用于处理缓存分页的方法100的功能。从图3中可以看出用于处理缓存分页的装置300包括中央处理单元(CPU)301(例如处理器),其可以根据存储在只读存储器(ROM)302中的计算机程序指令或者从存储单元308加载到随机访问存储器(RAM)303中的计算机程序指令,来执行各种适当的动作和处理。在RAM 303中,还可存储该装置300操作所需的各种程序和数据。CPU 301、ROM 302以及RAM 303通过总线304彼此相连。输入/输出(I/O)接口305也连接至总线304。
用于处理缓存分页的装置300中的多个部件连接至I/O接口305,包括:输入单元306,例如键盘、鼠标等;输出单元307,例如各种类型的显示器、扬声器等;存储单元308,例如磁盘、光盘等;以及通信单元309,例如网卡、调制解调器、无线通信收发机等。通信单元309允许该系统300通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
上文所描述的各种方法,例如用于处理缓存分页的方法能够由处理单元301执行。例如,在一些实施例中,用于处理缓存分页的方法100可以被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元308。在一些实施例中,计算机程序的部分或者全部可以经由ROM 302和/或通信单元309而被载入和/或安装到该装置300上。当计算机程序被加载到RAM 303并由CPU 301执行时,可以执行上文描述的方法100中的一个或多个动作或步骤。
一般而言,本公开的各种示例实施例可以在硬件或专用电路、软件、固件、逻辑,或其任何组合中实施。某些方面可以在硬件中实施,而其他方面可以在可以由控制器、微处理器或其他计算设备执行的固件或软件中实施。当本公开的实施例的各方面被图示或描述为框图、流程图或使用某些其他图形表示时,将理解此处描述的方框、装置、系统、技术或方法可以作为非限制性的示例在硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其他计算设备,或其某些组合中实施。
虽然上面描述了本公开的各种示例实施例可以在硬件或专用电路中实现,但是上述用于区块链的数据处理设备既可以以硬件的形式来实现,也可以通过软件的形式来实现,这是因为:在20世纪90年代,一个技术改进能够很容易地对该改进属于硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是属于软件上的改进(例如对于方法流程的改进)。然而,随着技术的持续发展,如今的很多方法流程的改进几乎都能够通过将改进的方法流程编程到硬件电路中来实现,换句话说,通过对于硬件电路编程不同的程序从而得到相应的硬件电路结构,即实现了硬件电路结构的改变,故这样的方法流程的改进也可以被视为硬件电路结构的直接改进。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device:PLD)(例如现场可编程门阵列(Field Programmable Gate Array:FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片可编程逻辑器件上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compi1er)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language:HDL),而HDL也并非仅有—种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware Description Language)、Confluence、CUPL(Cornell UniversityProgramming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(Ruby Hardware Description Language)等,目前最普遍使用的是VHDL(Very-High-Speed Integrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
用于执行本发明的各个方面的计算机可读程序指令或者计算机程序产品也能够存储在云端,在需要调用时,用户能够通过移动互联网、固网或者其他网络访问存储在云端上的用于执行本发明的各个方面的计算机可读程序指令,从而实施依据本发明的各个方面所公开的技术方案。
以上所述仅为本公开的实施例可选实施例,并不用于限制本公开的实施例,对于本领域的技术人员来说,本公开的实施例可以有各种更改和变化。凡在本公开的实施例的精神和原则之内,所作的任何修改、等效替换、改进等,均应包含在本公开的实施例的保护范围之内。
虽然已经参考若干具体实施例描述了本公开的实施例,但是应该理解,本公开的实施例并不限于所公开的具体实施例。本公开的实施例旨在涵盖在所附权利要求的精神和范围内所包括的各种修改和等同布置。所附权利要求的范围符合最宽泛的解释,从而包含所有这样的修改及等同结构和功能。
Claims (21)
1.一种用于处理缓存分页的方法,其特征在于,所述方法包括:
A.接收第一查询请求,其中,所述第一查询请求中包括第一查询条件和第一分页信息;
B.从目标数据库中查询与所述第一查询请求相关联的第一数据集合;
C.将基于所述第一数据集合确定的第一数据有序集合存储在缓存中;
D.将基于所述第一数据有序集合确定的第一索引有序集合存储在缓存中;以及
E.将所述第一查询条件和所述第一数据有序集合的键值以数据对的形式存储在所述缓存中的字典有序集合中。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
F.将所述第一数据有序集合的类别信息存储在所述缓存的所述字典有序集合中,其中,所述类别信息与所述第一查询条件相关联。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
G.返回所述第一数据集合。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述方法还包括:
M.接收第二查询请求,其中,所述第二查询请求中包括第二查询条件和第二分页信息;
N.根据由所述第二查询请求所确定的键值来确定所述缓存中是否存在与所述第二查询条件相关联的数据有序集合;以及
O.在不存在与所述第二查询条件相关联的数据有序集合的情况下,从目标数据库中查询并返回与所述第二查询请求相关联的第二数据集合。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
P.将与所述第二数据集合相关联的第二数据有序集合、第二索引有序集合存储在所述缓存中;以及
Q.将所述第二查询条件和所述第二数据有序集合的键值以数据对的形式存储在所述缓存中的字典有序集合中。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
O1'.在存在与所述第二查询条件相关联的数据有序集合的情况下,根据所述第二分页信息确定所述数据有序集合中的数据量是否少于由所述第二分页信息所确定的数量;以及
O2”.在少于由所述第二分页信息所确定的数量的情况下,从目标数据库中查询并返回与所述第二查询请求相关联的第二数据集合。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
P'.根据所述第二数据集合更新所述缓存中与所述第二数据集合相关联的数据有序集合和索引有序集合。
8.根据权利要求7所述的方法,其特征在于,P'.根据所述第二数据集合更新所述缓存中与所述第二数据集合相关联的数据有序集合和索引有序集合进一步包括:
确定与所述第二数据集合相关联的数据有序集合在更新前后的数据差量;以及
基于所述数据差量从所述目标数据库中查询差量数据,以更新所述数据有序集合和索引有序集合。
9.根据权利要求6所述的方法,其特征在于,所述方法还包括:
在不少于由所述第二分页信息所确定的数量的情况下,从所述缓存中的与所述第二查询条件相关联的数据有序集合中获得并返回查询结果数据。
10.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收索引信息;
删除所述数据有序集合和索引有序集合中与所述索引信息相关联的数据项;
在所述目标数据库中查询与所述索引信息相关联的数据信息;以及
根据所述字典有序集合中的查询条件和所述数据信息来更新所述数据有序集合和所述索引有序集合。
11.一种用于处理缓存分页的装置,其包括:
处理器;以及
存储器,其用于存储指令,当所述指令执行时使得所述处理器执行以下操作:
A.接收第一查询请求,其中,所述第一查询请求中包括第一查询条件和第一分页信息;
B.从目标数据库中查询与所述第一查询请求相关联的第一数据集合;
C.将基于所述第一数据集合确定的第一数据有序集合存储在缓存中;
D.将基于所述第一数据有序集合确定的第一索引有序集合存储在缓存中;以及
E.将所述第一查询条件和所述第一数据有序集合的键值以数据对的形式存储在所述缓存中的字典有序集合中。
12.根据权利要求11所述的装置,其特征在于,当所述指令执行时还使得所述处理器执行以下操作:
F.将所述第一数据有序集合的类别信息存储在所述缓存的所述字典有序集合中,其中,所述类别信息与所述第一查询条件相关联。
13.根据权利要求11所述的装置,其特征在于,当所述指令执行时还使得所述处理器执行以下操作:
G.返回所述第一数据集合。
14.根据权利要求11至13中任一项所述的装置,其特征在于,当所述指令执行时还使得所述处理器执行以下操作:
M.接收第二查询请求,其中,所述第二查询请求中包括第二查询条件和第二分页信息;
N.根据由所述第二查询请求所确定的键值来确定所述缓存中是否存在与所述第二查询条件相关联的数据有序集合;以及
O.在不存在与所述第二查询条件相关联的数据有序集合的情况下,从目标数据库中查询并返回与所述第二查询请求相关联的第二数据集合。
15.根据权利要求14所述的装置,其特征在于,当所述指令执行时还使得所述处理器执行以下操作:
P.将与所述第二数据集合相关联的第二数据有序集合、第二索引有序集合存储在所述缓存中;以及
Q.将所述第二查询条件和所述第二数据有序集合的键值以数据对的形式存储在所述缓存中的字典有序集合中。
16.根据权利要求14所述的装置,其特征在于,当所述指令执行时还使得所述处理器执行以下操作:
O1'.在存在与所述第二查询条件相关联的数据有序集合的情况下,根据所述第二分页信息确定所述数据有序集合中的数据量是否少于由所述第二分页信息所确定的数量;以及
O2”.在少于由所述第二分页信息所确定的数量的情况下,从目标数据库中查询并返回与所述第二查询请求相关联的第二数据集合。
17.根据权利要求16所述的装置,其特征在于,当所述指令执行时还使得所述处理器执行以下操作:
P'.根据所述第二数据集合更新所述缓存中与所述第二数据集合相关联的数据有序集合和索引有序集合。
18.根据权利要求17所述的装置,其特征在于,P'.根据所述第二数据集合更新所述缓存中与所述第二数据集合相关联的数据有序集合和索引有序集合进一步包括:
确定与所述第二数据集合相关联的数据有序集合在更新前后的数据差量;以及
基于所述数据差量从所述目标数据库中查询差量数据,以更新所述数据有序集合和索引有序集合。
19.根据权利要求16所述的装置,其特征在于,当所述指令执行时还使得所述处理器执行以下操作:
在不少于由所述第二分页信息所确定的数量的情况下,从所述缓存中的与所述第二查询条件相关联的数据有序集合中获得并返回查询结果数据。
20.根据权利要求11所述的装置,其特征在于,当所述指令执行时还使得所述处理器执行以下操作:
接收索引信息;
删除所述数据有序集合和索引有序集合中与所述索引信息相关联的数据项;
在所述目标数据库中查询与所述索引信息相关联的数据信息;以及
根据所述字典有序集合中的查询条件和所述数据信息来更新所述数据有序集合和所述索引有序集合。
21.一种计算机可读存储介质,其具有存储在其上的计算机可读程序指令,所述计算机可读程序指令用于执行根据权利要求1至10中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811206185.6A CN109446227A (zh) | 2018-10-17 | 2018-10-17 | 用于处理缓存分页的方法、装置及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811206185.6A CN109446227A (zh) | 2018-10-17 | 2018-10-17 | 用于处理缓存分页的方法、装置及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109446227A true CN109446227A (zh) | 2019-03-08 |
Family
ID=65546630
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811206185.6A Pending CN109446227A (zh) | 2018-10-17 | 2018-10-17 | 用于处理缓存分页的方法、装置及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109446227A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110851477A (zh) * | 2019-10-16 | 2020-02-28 | 浙江大搜车软件技术有限公司 | 流数据处理方法、装置、计算机设备和存储介质 |
CN111400619A (zh) * | 2020-03-11 | 2020-07-10 | 上海东普信息科技有限公司 | 物流轨迹数据推送方法、装置、设备及存储介质 |
CN111708729A (zh) * | 2020-06-22 | 2020-09-25 | 南京艾科朗克信息科技有限公司 | 一种基于fpga大容量订单薄的缓存方法 |
CN111858581A (zh) * | 2020-06-08 | 2020-10-30 | 远光软件股份有限公司 | 一种分页查询的方法、装置、存储介质和电子设备 |
CN112437160A (zh) * | 2020-11-25 | 2021-03-02 | 中国电子科技集团公司第二十九研究所 | 一种基于redis实现大文件实时传输处理方法及系统 |
CN112866339A (zh) * | 2020-12-30 | 2021-05-28 | 金蝶软件(中国)有限公司 | 数据传输方法、装置、计算机设备和存储介质 |
CN116975097A (zh) * | 2023-04-04 | 2023-10-31 | 上海卡方信息科技有限公司 | 一种数据查询的方法、装置、存储介质及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140032590A1 (en) * | 2012-07-27 | 2014-01-30 | Microsoft Corporation | Windowed mid-tier data cache |
CN104123340A (zh) * | 2014-06-25 | 2014-10-29 | 世纪禾光科技发展(北京)有限公司 | 一种数据库分表分页查询方法及系统 |
CN104268295A (zh) * | 2014-10-24 | 2015-01-07 | 迈普通信技术股份有限公司 | 一种数据查询方法及装置 |
-
2018
- 2018-10-17 CN CN201811206185.6A patent/CN109446227A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140032590A1 (en) * | 2012-07-27 | 2014-01-30 | Microsoft Corporation | Windowed mid-tier data cache |
CN104123340A (zh) * | 2014-06-25 | 2014-10-29 | 世纪禾光科技发展(北京)有限公司 | 一种数据库分表分页查询方法及系统 |
CN104268295A (zh) * | 2014-10-24 | 2015-01-07 | 迈普通信技术股份有限公司 | 一种数据查询方法及装置 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110851477A (zh) * | 2019-10-16 | 2020-02-28 | 浙江大搜车软件技术有限公司 | 流数据处理方法、装置、计算机设备和存储介质 |
CN110851477B (zh) * | 2019-10-16 | 2022-09-09 | 浙江大搜车软件技术有限公司 | 流数据处理方法、装置、计算机设备和存储介质 |
CN111400619A (zh) * | 2020-03-11 | 2020-07-10 | 上海东普信息科技有限公司 | 物流轨迹数据推送方法、装置、设备及存储介质 |
CN111858581A (zh) * | 2020-06-08 | 2020-10-30 | 远光软件股份有限公司 | 一种分页查询的方法、装置、存储介质和电子设备 |
CN111858581B (zh) * | 2020-06-08 | 2024-05-28 | 远光软件股份有限公司 | 一种分页查询的方法、装置、存储介质和电子设备 |
CN111708729A (zh) * | 2020-06-22 | 2020-09-25 | 南京艾科朗克信息科技有限公司 | 一种基于fpga大容量订单薄的缓存方法 |
CN111708729B (zh) * | 2020-06-22 | 2023-04-18 | 南京艾科朗克信息科技有限公司 | 一种基于fpga大容量订单薄的缓存方法 |
CN112437160A (zh) * | 2020-11-25 | 2021-03-02 | 中国电子科技集团公司第二十九研究所 | 一种基于redis实现大文件实时传输处理方法及系统 |
CN112437160B (zh) * | 2020-11-25 | 2022-06-07 | 中国电子科技集团公司第二十九研究所 | 一种基于redis实现大文件实时传输处理方法及系统 |
CN112866339A (zh) * | 2020-12-30 | 2021-05-28 | 金蝶软件(中国)有限公司 | 数据传输方法、装置、计算机设备和存储介质 |
CN112866339B (zh) * | 2020-12-30 | 2022-12-06 | 金蝶软件(中国)有限公司 | 数据传输方法、装置、计算机设备和存储介质 |
CN116975097A (zh) * | 2023-04-04 | 2023-10-31 | 上海卡方信息科技有限公司 | 一种数据查询的方法、装置、存储介质及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109446227A (zh) | 用于处理缓存分页的方法、装置及计算机可读存储介质 | |
Bao et al. | Managing massive trajectories on the cloud | |
CN109189835A (zh) | 实时生成数据宽表的方法和装置 | |
CN109918442A (zh) | 一种数据的处理方法及装置 | |
Lee et al. | Nearest surrounder queries | |
CN109240946A (zh) | 数据的多级缓存方法及终端设备 | |
CN104778077B (zh) | 基于随机和连续磁盘访问的高速核外图处理方法及系统 | |
CN102955792A (zh) | 一种实时全文搜索引擎事务处理的实现方法 | |
CN110209677A (zh) | 更新数据的方法和装置 | |
JP5075653B2 (ja) | データベース管理方法、データベース管理装置、データベース管理プログラム、及び、データベースシステム | |
CN109344348A (zh) | 一种资源更新方法及装置 | |
CN106156047A (zh) | 一种快照信息处理方法及装置 | |
CN110209668A (zh) | 基于流计算的维表关联方法、装置、设备及可读存储介质 | |
CN110019277A (zh) | 一种数据累积的方法、数据查询的方法、装置及设备 | |
CN107808006A (zh) | 基于大数据量的模糊查询方法、设备以及系统 | |
CN109902126A (zh) | 支持hive自动分区的加载系统及其实现方法 | |
CN104598550A (zh) | 一种网络视频索引的更新方法和装置 | |
Idoudi et al. | A framework to model real-time databases | |
US10789234B2 (en) | Method and apparatus for storing data | |
CN114443680A (zh) | 数据库管理系统、相关装置、方法和介质 | |
CN110515953A (zh) | 数据的查询方法、装置、设备以及存储介质 | |
CN104391947B (zh) | 海量gis数据实时处理方法及系统 | |
CN104794567B (zh) | 一种基于HBase的传染病数据管理方法 | |
CN109871338A (zh) | 一种数据存储方法、装置及计算机设备 | |
Suri et al. | A comparative study between the performance of relational & object oriented database in Data Warehousing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20190308 |
|
WD01 | Invention patent application deemed withdrawn after publication |