CN110874360A - 一种基于固定容量的有序队列缓存方法及装置 - Google Patents

一种基于固定容量的有序队列缓存方法及装置 Download PDF

Info

Publication number
CN110874360A
CN110874360A CN201811028164.XA CN201811028164A CN110874360A CN 110874360 A CN110874360 A CN 110874360A CN 201811028164 A CN201811028164 A CN 201811028164A CN 110874360 A CN110874360 A CN 110874360A
Authority
CN
China
Prior art keywords
data
queue
ordered
ordered set
capacity
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
Application number
CN201811028164.XA
Other languages
English (en)
Inventor
罗晓东
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Qihoo Technology Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
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 Beijing Qihoo Technology Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201811028164.XA priority Critical patent/CN110874360A/zh
Publication of CN110874360A publication Critical patent/CN110874360A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

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

Abstract

本发明提供了一种基于固定容量的有序队列缓存方法及装置,应用于Redis数据库,所述方法包括:获取至少一个缓存数据的多个属性元素,基于所述缓存数据的多个属性元素在Redis数据库的预设哈希表中生成各缓存数据的信息记录;基于所述各缓存数据的信息记录中多个属性元素的指定属性元素,在所述Redis数据库的至少一个预设容量有序集合中生成所述各缓存数据的存储队列;其中,所述有序集合为内嵌于所述预设哈希表中的键值对存储结构;将所述各缓存数据的指定属性元素作为排序字段对所述存储队列进行排序,构成有序队列。基于本发明提供的方法,不仅可以实现有序队列的存储,还可以提高访问效率,进一步解决高并发时服务器的压力。

Description

一种基于固定容量的有序队列缓存方法及装置
技术领域
本发明涉及互联网技术领域,特别是涉及一种基于固定容量的有序队列缓存方法及装置。
背景技术
随着互联网技术的不断发展,对于各种服务的数据所产生的数据以及网络服务所需的数据也在不断增加。目前,传统方案中通常会将数据进行持久化存储,但是,数据进行持久化存储时在访问量并发时会由于其性能不高而导致服务效率差,用户体验低。除此之外,持久化存储还无法在固定容量时维护数据的顺序,对于旧的数据不会主动进行处理,进而占用内存,导致数据访问速度变慢。
发明内容
本发明提供了一种基于固定容量的有序队列缓存方法及装置以克服上述问题或者至少部分地解决上述问题。
根据本发明的一个方面,提供了一种基于固定容量的有序队列缓存方法,应用于Redis数据库,所述方法包括:
获取至少一个缓存数据的多个属性元素,基于各缓存数据的多个属性元素在Redis数据库的预设哈希表中生成所述各缓存数据的信息记录;
基于所述各缓存数据的信息记录中多个属性元素的指定属性元素,在所述Redis数据库的至少一个预设容量有序集合中生成所述各缓存数据的存储队列;其中,所述有序集合为内嵌于所述预设哈希表中的键值对存储结构;
将所述各缓存数据的指定属性元素作为排序字段对所述存储队列进行排序,构成有序队列。
可选地,所述将所述各缓存数据的指定属性元素作为排序字段对所述存储队列进行排序,构成有序队列之后,还包括:
接收待缓存数据并解析出所述待缓存数据的多个属性元素;
基于所述待缓存数据的多个属性元素将所述待缓存数据的信息分别写入所述预设哈希表和所述有序集合。
可选地,所述接收待缓存数据并解析出所述待缓存数据的多个属性元素之后,还包括:
基于所述待缓存数据的多个属性元素生成在所述预设哈希表中添加信息记录的第一写入命令;基于所述待缓存数据的指定属性元素生成在所述有序集合中添加存储队列第二写入命令;
所述将所述待缓存数据的信息分别写入所述预设哈希表和所述有序集合,包括:
基于所述第一写入命令和第二写入命令,分别在所述预设哈希表和有序集中写入所述待缓存数据的信息记录和存储队列。
可选地,所述基于所述待缓存数据的指定属性元素生成在所述有序集合中添加存储队列第二写入命令之后,还包括:
将所述第一写入命令和第二写入命令通过pipeline管道合并为一次发送。
可选地,所述方法还包括:
获取所述有序集合的预设容量,基于所述预设容量设定缓冲容量;其中,所述缓冲容量占所述预设容量的指定百分比。
可选地,所述将所述待缓存数据的信息分别写入所述预设哈希表和所述有序集合之后,还包括:
判断所述有序集合的存储队列的数量是否处于所述预设容量的数量范围内;
若超出所述预设容量的数量范围,则计算超过所述预设容量的多余存储队列数量。
可选地,所述计算超过所述预设容量的多余存储队列数量之后,还包括:
判断所述多余存储队列数量是否处于所述缓冲容量的数量范围内;
若超出所述缓冲容量的数量范围,则基于各缓存数据的指定属性元素删除所述有序集合中指定区间的存储队列,以及与所述存储队列对应的缓存数据在所述预设哈希表中的信息记录。
可选地,所述基于各缓存数据的指定属性元素删除所述有序集合中指定区间的存储队列,以及与所述存储队列对应的缓存数据在所述预设哈希表中的信息记录,包括:
基于所述指定属性元素获取所述有序集合中指定区间的存储队列;其中,所述指定区间的存储队列的数量与所述缓冲容量范围相等;
生成删除所述有序集合中指定区间的存储队列的第一删除命令,以及删除与所述存储队列对应的缓存数据在所述预设哈希表中的信息记录的第二删除命令;
基于所述第一删除命令和所述第二删除命令分别对所述有序集合中的存储队列和预设哈希表的信息记录执行删除操作。
可选地,所述生成删除所述有序集合中指定区间的存储队列的第一删除命令,以及删除与所述存储队列对应的缓存数据在所述预设哈希表中的信息记录的第二删除命令之后,还包括:
将所述第一删除命令和所述第二删除命令通过pipeline管道合并为一次发送。
可选地,所述将所述各缓存数据的指定属性元素作为排序字段对所述存储队列进行排序,构成有序队列之后,还包括:
以所述指定属性元素获取所述有序队列,将所述有序队列作为索引数据;
基于所述索引数据在所述哈希表中获取与各索引数据对应的信息记录,生成包括有各缓存数据详细信息的信息列表。
根据本发明的另一个方面,还提供了一种基于固定容量的有序队列缓存装置,应用于Redis数据库,所述装置包括:
第一生成模块,配置为获取至少一个缓存数据的多个属性元素,基于各缓存数据的多个属性元素在Redis数据库的预设哈希表中生成所述各缓存数据的信息记录;
第二生成模块,配置为基于所述各缓存数据的信息记录中多个属性元素的指定属性元素,在所述Redis数据库的至少一个预设容量有序集合中生成所述各缓存数据的存储队列;其中,所述有序集合为内嵌于所述预设哈希表中的键值对存储结构;
排序模块,配置为将所述各缓存数据的指定属性元素作为排序字段对所述存储队列进行排序,构成有序队列。
可选地,所述装置还包括:
数据接收模块,配置为接收待缓存数据并解析出所述待缓存数据的多个属性元素;
数据写入模块,配置为基于所述待缓存数据的多个属性元素将所述待缓存数据的信息分别写入所述预设哈希表和所述有序集合。
可选地,所述装置还包括:
命令生成模块,配置为基于所述待缓存数据的多个属性元素生成在所述预设哈希表中添加信息记录的第一写入命令;基于所述待缓存数据的指定属性元素生成在所述有序集合中添加存储队列第二写入命令;
所述数据写入模块,还配置为基于所述第一写入命令和第二写入命令,分别在所述预设哈希表和有序集中写入所述待缓存数据的信息记录和存储队列。
可选地,所述命令生成模块,还配置为将所述第一写入命令和第二写入命令通过pipeline管道合并为一次发送。
可选地,所述装置还包括:
设定模块,配置为获取所述有序集合的预设容量,基于所述预设容量设定缓冲容量;其中,所述缓冲容量占所述预设容量的指定百分比。
可选地,所述装置还包括:
第一判断模块,配置为判断所述有序集合的存储队列的数量是否处于所述预设容量的数量范围内;
当所述有序集合的存储队列的数量超出所述预设容量的数量范围时,计算超过所述预设容量的多余存储队列数量。
可选地,所述装置还包括:
第二判断模块,配置为判断所述多余存储队列数量是否处于所述缓冲容量的数量范围内;
若超出所述缓冲容量的数量范围,则基于各缓存数据的指定属性元素删除所述有序集合中指定区间的存储队列,以及与所述存储队列对应的缓存数据在所述预设哈希表中的信息记录。
可选地,所述第二判断模块,还配置为基于所述指定属性元素获取所述有序集合中指定区间的存储队列;其中,所述指定区间的存储队列的数量与所述缓冲容量范围相等;
生成删除所述有序集合中指定区间的存储队列的第一删除命令,以及删除与所述存储队列对应的缓存数据在所述预设哈希表中的信息记录的第二删除命令;
基于所述第一删除命令和所述第二删除命令分别对所述有序集合中的存储队列和预设哈希表的信息记录执行删除操作。
可选地,所述第二判断模块,还配置为将所述第一删除命令和所述第二删除命令通过pipeline管道合并为一次发送。
可选地,所述装置还包括:
索引生成模块,配置为在所述排序模块构成有序队列之后,以所述指定属性元素获取所述有序队列,将所述有序队列作为索引数据;
基于所述索引数据在所述哈希表中获取与各索引数据对应的信息记录,生成包括有各缓存数据详细信息的信息列表。
根据本发明的另一个方面,还提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序代码,当所述计算机程序代码在计算设备上运行时,导致所述计算设备执行上述任一项所述的基于固定容量的有序队列缓存方法。
根据本发明的另一个方面,还提供了一种计算设备,包括:
处理器;
存储有计算机程序代码的存储器;
当所述计算机程序代码被所述处理器运行时,导致所述计算设备执行上述任一项所述的基于固定容量的有序队列缓存方法。
本发明提供了一种基于固定容量的有序队列缓存方法及装置,在获取到缓存数据的多个属性元素后,可基于上述多个属性元素在Redis数据库的预设哈希表中各缓存数据相应的信息记录,即将缓存数据的详细信息存入预设哈希表中,并同时基于各缓存数据在哈希表的信息记录的多个属性元素中的指定元素在具有预设容量的有序集合中生成相应的存储队列,进而利用有序集合实现队列的排序,构成有序队列。基于本发明提供的方案,将哈希表和有序集合相结合,不仅可以实现有序队列的存储,还可以提高访问效率,进一步解决高并发时服务器的压力。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1是根据本发明实施例的基于固定容量的有序队列缓存方法流程示意图;
图2是根据本发明优选实施例的基于固定容量的有序队列缓存方法流程示意图;
图3是根据本发明实施例的基于固定容量的有序队列缓存装置结构示意图;
图4是根据本发明优选实施例的基于固定容量的有序队列缓存装置结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1是根据本发明实施例的基于固定容量的有序队列缓存方法流程示意图,如图1所示,本发明实施例的基于固定容量的有序队列缓存方法可以包括:
步骤S102,获取至少一个缓存数据的多个属性元素,基于各缓存数据的多个属性元素在Redis数据库的预设哈希表中生成各缓存数据的信息记录;
步骤S104,基于各缓存数据的信息记录中多个属性元素的指定属性元素,在Redis数据库的至少一个预设容量有序集合中生成所述各缓存数据的存储队列;其中,有序集合为内嵌于预设哈希表中的键值对存储结构;
步骤S106,将各缓存数据的指定属性元素作为排序字段对存储队列进行排序,构成有序队列。
本发明实施例提供了一种基于固定容量的有序队列缓存方法,获取到缓存数据的多个属性元素后,可基于上述多个属性元素在Redis数据库的预设哈希表中各缓存数据相应的信息记录,即将缓存数据的详细信息存入预设哈希表中,并同时基于各缓存数据在哈希表中信息记录的多个属性元素中的指定元素在具有预设容量的有序集合中生成相应的存储队列,进而利用有序集合实现队列的排序,构成有序队列。基于本发明实施例提供的方法,通过将哈希表和有序集合相结合,不仅可以实现有序队列的存储,还可以提高访问效率,进一步解决高并发时服务器的压力。
传统方案一般采用环形数据库或关系型数据库,对并发的支持不是很好。本发明实施例采用Redis实现有序队列的缓存的同时,由于Redis可以直接访问内存,所以其本身可解决高并发。相对于传统的将数据库持久化到磁盘上的访问,还可以提高访问效率、解决了服务器压力。另外,Redis还可以支持多种数据结构如哈希表、链表、有序集合、集合等。哈希表本身是个无序的结构,但是支持的内嵌的键值对结构存储,比其他的缓存结构只能缓存字符串而言更方便。有序集合是Redis的自带的有序结构,可以实现队列的元素顺序的存储。本发明实施例采用了哈希表和有序集合结合的方案,在哈希表中内嵌键值对存储结构的有序集合,以对哈希表中的信息记录进行排序,进而实现固定有序队列的缓存。
在本发明实施例中,哈希表结构可以如下:
Figure BDA0001789050070000071
有序集合的结构可以如下:
Figure BDA0001789050070000072
本发明实施例采用可存储二维数组关系的哈希表,在哈希表中,第一维度表示为record-key,第二维度为其中的key2、key3、key1,在第二维度的不同的key中可以有多个字段,存储各缓存数据的多个属性元素,进而生成各缓存数据的信息记录,将各缓存数据的详细信息写入哈希表中。对于不同的缓存数据类型,其属性元素也可以不同。在本实施例中,如果将哈希表中的key1、key2、key3均假设为用户收藏歌曲的行为记录,那么缓存数据中的各属性元素可以包括歌名、歌手、作曲、作词、评分、时间长度、收藏时间等等。如果将哈希表中的key1、key2、key3均假设为用户浏览文章记录,则可以是文章作者、题目、发表时间、浏览时间等元素。除上述介绍的之外,缓存数据的类型及其属性元素可以有多种,本发明不做限定。
上文介绍,在有序集合中生成各缓存数据的存储队列时,可依据各缓存数据在哈希表中的信息记录中的指定元素。举例来说,上述实施例中在浏览文章时,会在哈希表的信息记录中存储各文章的多个属性元素(浏览时间、作者、发表时间等等),在生成存储队列时,可单独根据浏览时间对用户浏览的文章进行排序,即将浏览时间作为有序集合中key-value键值对中的value,key则存储的是歌曲名称。如果后续再有数据添加时,有序集合可直接根据浏览时间将其存入存储队列中。通过有序集合进行排序时,可根据缓存数据的不同属性元素进行排序,本发明实施例中还可以设置多个有序集合,每个有序集合中可指定不同的属性元素,实现基于不同属性元素的存储队列的排序,满足用户不同的查询需求。
一般情况下,用户的多条行为记录是无序的,基于本发明实施例提供的方法,当前存储在Redis中时,可通过有序集合对多条无需的用户行为记录进行排序。而有序集合的结构为键值对结构,因此,可使用有序集合去维护多条用户行为记录的顺序关系,生成各缓存数据的存储队列,而详细的数据则存储在哈希表中。除上述介绍的之外,利用Redis中的哈希表存储实际数据的值,即将缓存数据的详细信息存储在哈希表中方便字段增删改查,同时用Redis有序集合结构存储队列元素的键和指定的元素排序字段来构成有序队列。不仅可以实现有序队列的存储,还可以提高访问效率,进一步解决高并发时服务器的压力。
本发明实施例所提供的方案,可以对现有的缓存数据进行整理存储预设哈希表及有序集合,也可以在接收到缓存数据后进行整理,本发明不做限定。当形成有序队列后,后续再接收到待缓存数据时,还可以向该预设哈希表和有序集合中添加该待缓存数据的信息记录。
可选地,如图2所示,上述步骤S106之后,还可以包括:
步骤S108,接收待缓存数据并解析出该待缓存数据的多个属性元素;
步骤S110,基于该待缓存数据的多个属性元素将待缓存数据的信息分别写入预设哈希表和有序集合。
由于预设哈希表中所存储的为缓存数据的详细信息,因此,在接收到待缓存数据后,可以先解析出待缓存数据的多个属性元素,进而在基于上述多个属性元素将待缓存数据的信息分别在预设哈希表和有序集合中写入该待缓存数据的相关记录,实现对预设哈希表和有序集合的数据更新。
另外,在上述步骤S108解析出待缓存数据的多个属性元素之后,还可以基于待缓存数据的多个属性元素生成在预设哈希表中添加信息记录的第一写入命令;基于待缓存数据的指定属性元素生成在有序集合中添加存储队列第二写入命令。进而在上述步骤S110将待缓存数据的信息写入预设哈希表和有序集合中时,可以基于第一写入命令和第二写入命令,分别在预设哈希表和有序集中写入待缓存数据的信息记录和存储队列。
哈希表和有序集合都是Redis的基础数据结构,哈希表和有序集合的操作是用命令直接写入即可,比如哈希表的写入用:
hset(‘record-key’,‘key2’,“{'name':2,'sort':'sort2'}”);
即就表示往哈希表写入了一个哈希表名为record-key,字段名为key2,字段值为{'name':2,'sort':'sort2'}的信息记录。
有序集合也是类似的,用命令:zadd(‘sort-set’,1,‘redis’),表示往一个名叫sort-set的有序集合里面插入了一个key为1的存储队列,该存储队列的value是redis。
本发明实施例中在添加数据时,通常需要同时向哈希表和有序集合中写入数据。其中,有序集合实际所存储的为列表的索引,而后续取数据时,是先取有序集合的索引,再去取哈希表的详情数据,如果先把索引写成功了,后面哈希表写失败了,这样再取数据时就会导致有一个索引记录没有数据。因此,在向预设哈希表和有序集合中写入数据的操作为原子操作,即确保其原子性,先写入哈希表,再写入有序集合。
可选地,本发明实施例中在生成第一写入命令和第二写入命令后,还可以将第一写入命令和第二写入命令通过pipeline管道合并为一次发送。通过pipeline管道合并第一写入命令和第二写入命令,可以保证将待缓存数据信息写入预设哈希表和有序集合的原子性,如果成功两个表都写入成功,如果失败就都失败。Redis的管道可以在大量数据需要一次性操作完成的时候,使用Pipeline进行批处理,将多个操作合并成一次操作,可以减少链路层的时间消耗。
上文介绍,嵌入在哈希表中的至少一个有序集合是指定容量的,即有序集合的容量是固定的。其中,指定容量可以指哈希表的第二维度的字段个数或有序集合中存储队列的个数。Redis本身对哈希表和有序集合里面的字段个数是不做上限的,可以是成千上百个字段。比如哈希表record-key下面有key1、key2,可以存一直到key 1000,即可以包括1000个key,但是在一些情况下,比如歌曲排行榜等,设置100个即可。
在本发明一优选实施例中,还可以获取有序集合的预设容量,基于该预设容量设定缓冲容量;其中,缓冲容量占预设容量的指定百分比。缓冲容量就是基于逻辑上设定的有序集合预设容量,即存储队列的个数的上限来定的,比如有序集合的预设容量为100,则缓冲容量可以设置为预设容量的10%为缓冲容量,即缓冲容量为10。实际应用中可根据不同的使用需求对缓存容量的大小进行设定,本发明不做限定。
由于有序集合的容量为预设容量,其是固定的,因此,如果在有序集合和哈希表中插入新缓存数据时超出该预设容量,则可以对旧数据进行适应删减。即,当有序集合中的记录个数超过其预设容量时,可以判断有序集合的存储队列的数量是否处于预设容量的数量范围内;若超出预设容量的数量范围,则计算超过预设容量的多余存储队列数量。在此之后,还可以判断多余存储队列数量是否处于缓冲容量的数量范围内;若超出缓冲容量的数量范围,则基于各缓存数据的指定属性元素删除有序集合中指定区间的存储队列,以及与存储队列对应的缓存数据在预设哈希表中的信息记录。
向有序集合中添加数据时可以判断有序集合的当前容量是否超过最大容量,并判断超出最大容量多少,比如预设容量为100,缓冲容量为10,则当有序集合当前容量到达110才进行一次删除,一次删除多余的10条(多余的记录由有序集合根据排序算出),本发明实施例中,在超过缓存容量的情况下才会执行一次操作,可以减少删除操作的次数以及访问次数,维护访问平衡。
在本发明另一优选实施例,可通过以下方式对预设哈希表和有序集合中的数据进行删除:首先,基于指定属性元素获取有序集合中指定区间的存储队列;其中,指定区间的存储队列的数量与缓冲容量范围相等;其次,生成删除有序集合中指定区间的存储队列的第一删除命令,以及删除与存储队列对应的缓存数据在预设哈希表中的信息记录的第二删除命令;最后基于第一删除命令和第二删除命令分别对有序集合中的存储队列和预设哈希表的信息记录执行删除操作。本实施例中,在生成第一删除命令和第二删除命令后,可将第一删除命令和第二删除命令通过pipeline管道合并为一次发送,以减少操作次数,进而节省网络开销。
举例来说,本发明实施例在写入待缓存数据的信息时,可以包括以下方式:
1.将待缓存数据的信息写入哈希表和有序集合,(利用pipeline将hset和zadd打包成一个命令发送);
2.查看有序集合中当前存储队列的数量;通过zcard查看有序集合中存储队列的个数;
3.判断是否需要删除多余的数据;比如,有序集合中预设容量是100,缓冲容量为10,当待缓存数据写入有序集合中后,利用当前存储队列的数量减去缓冲容量;
如果,当前存储队列的数量-缓冲容量<预设容量,则不删除多余的数据;
如果,有序集合当前存储队列的数量-缓冲区个数≥预设容量,那么就是当哈希表数据量达到在预设容量和缓冲容量的和(如110个)时,则开始进行删除操作。
删除的过程也是将哈希表的删除和有序集合的删除打包成一个命令发送(hdel和zremrangbyrank)zremrangbyrank,就是根据先前设定的排序字段来删除的,它可以删除指定区间内的数据以及指定字段的数据,比如依据收藏时间排序前10的数据,或是其他指定区间的数据。
在本发明另一优选实施例中,生成有序队列之后,还可以以指定属性元素获取有序队列,将有序队列作为索引数据;基于上述索引数据在哈希表中获取与各索引数据对应的信息记录,生成包括有各缓存数据详细信息的信息列表。
也就是说,基于有序查询对缓存数据进行排序之后,还可以为用户提供有序的信息表。当用户查询数据时,可根据排序取出在预设容量的有序集合中的key,然后再对应的去哈希表中取出详情信息,进而生成信息列表。
举例来说,生成各缓存数据的信息列表时:
1.获取有序集合的索引数据(zrank),zrank为redis命令,到有序集合中取出排好序的索引字段,比如:
歌单排行榜
分数100的林某
分数98的周某
2.获取哈希表中的详细资料;就是按名字找,从有序集合索引中拿到了名字周某,再去哈希表中把周某的性别、出生年月日取出来(这一步骤可通过hmget命令实现)
基于此,就可以生成到了一个完整的列表。类似的场景还有固定容量的浏览记录,那么排序字段就是最后一次浏览时间,然后就可以存上文章ID,根据文章ID再去取文章的详情,如标题作者之类的信息。上述所介绍的场景均为写入操作频繁的场景,比如用户在无感知情况下浏览了一个文章,听了一首歌后,自动生了浏览历史和排行。
本发明实施例提供的方法通过将Redis数据库中的哈希表和有序集合相结合的数据结构,可以实现指定容量的有序队列,并且,该有序队列在容量满之后还可以根据指定字段的排序值自动踢出旧数据,并始终维护一个固定容量,同时提供高并发支持。尤其是对记录各种历史记录和每条历史记录的位置缓存,以及一些监控的历史数据缓存中可对数据进行有效处理。
基于同一发明构思,本发明实施例还提供了一种基于固定容量的有序队列缓存装置,可应用于Redis数据库,如图3所示,本发明实施例的基于固定容量的有序队列缓存装置可以包括:
第一生成模块310,配置为获取至少一个缓存数据的多个属性元素,基于各缓存数据的多个属性元素在Redis数据库的预设哈希表中生成各缓存数据的信息记录;
第二生成模块320,配置为基于各缓存数据的信息记录中多个属性元素的指定属性元素,在Redis数据库的至少一个预设容量有序集合中生成所述各缓存数据的存储队列;其中,所述有序集合为内嵌于所述预设哈希表中的键值对存储结构;
排序模块330,配置为将所述各缓存数据的指定属性元素作为排序字段对所述存储队列进行排序,构成有序队列。
在本发明一优选实施例中,如图4所示,上述装置还可以包括:
数据接收模块410,配置为接收待缓存数据并解析出所述待缓存数据的多个属性元素;
数据写入模块420,配置为基于所述待缓存数据的多个属性元素将所述待缓存数据的信息分别写入所述预设哈希表和所述有序集合。
在本发明一优选实施例中,如图4所示,上述装置还可以包括:
命令生成模块430,配置为基于所述待缓存数据的多个属性元素生成在所述预设哈希表中添加信息记录的第一写入命令;基于所述待缓存数据的指定属性元素生成在所述有序集合中添加存储队列第二写入命令;
所述数据写入模块,还配置为基于所述第一写入命令和第二写入命令,分别在所述预设哈希表和有序集中写入所述待缓存数据的信息记录和存储队列。
在本发明一优选实施例中,所述命令生成模块360,还可以配置为将所述第一写入命令和第二写入命令通过pipeline管道合并为一次发送。
在本发明一优选实施例中,如图4所示,上述装置还可以包括:
设定模块440,配置为获取所述有序集合的预设容量,基于所述预设容量设定缓冲容量;其中,所述缓冲容量占所述预设容量的指定百分比。
在本发明一优选实施例中,如图4所示,上述装置还可以包括:
第一判断模块450,配置为判断所述有序集合的存储队列的数量是否处于所述预设容量的数量范围内;
当所述有序集合的存储队列的数量超出所述预设容量的数量范围时,计算超过所述预设容量的多余存储队列数量。
在本发明一优选实施例中,如图4所示,上述装置还可以包括:
第二判断模块460,配置为判断所述多余存储队列数量是否处于所述缓冲容量的数量范围内;
若超出所述缓冲容量的数量范围,则基于各缓存数据的指定属性元素删除所述有序集合中指定区间的存储队列,以及与所述存储队列对应的缓存数据在所述预设哈希表中的信息记录。
在本发明一优选实施例中,所述第二判断模块460,还可以配置为基于所述指定属性元素获取所述有序集合中指定区间的存储队列;其中,所述指定区间的存储队列的数量与所述缓冲容量范围相等;
生成删除所述有序集合中指定区间的存储队列的第一删除命令,以及删除与所述存储队列对应的缓存数据在所述预设哈希表中的信息记录的第二删除命令;
基于所述第一删除命令和所述第二删除命令分别对所述有序集合中的存储队列和预设哈希表的信息记录执行删除操作。
在本发明一优选实施例中,所述第二判断模块460,还配置为将所述第一删除命令和所述第二删除命令通过pipeline管道合并为一次发送。
在本发明一优选实施例中,如图4所示,上述装置还可以包括:
索引生成模块470,配置为在所述排序模块构成有序队列之后,以所述指定属性元素获取所述有序队列,将所述有序队列作为索引数据;
基于所述索引数据在所述哈希表中获取与各索引数据对应的信息记录,生成包括有各缓存数据详细信息的信息列表。
基于同一发明构思,本发明实施例还提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序代码,当所述计算机程序代码在计算设备上运行时,导致所述计算设备执行上述任一项所述的基于固定容量的有序队列缓存方法。
基于同一发明构思,本发明实施例还提供了一种计算设备,包括:
处理器;
存储有计算机程序代码的存储器;
当所述计算机程序代码被所述处理器运行时,导致所述计算设备执行上述任一项所述的基于固定容量的有序队列缓存方法。
本发明实施例提供了一种基于固定容量的有序队列缓存方法及装置,通过将哈希表和有序集合相结合,不仅可以实现有序队列的存储,还可以提高访问效率,进一步解决高并发时服务器的压力。另外,在哈希表和有序集合中写入数据以及删减数据时,可以分别将两个写入操作和两个删除操作进行合并为一次写入操作和一次删除操作,进而减少操作次数和访问次数,维护访问平衡。尤其是对记录各种历史记录和每条历史记录的位置缓存,以及一些监控的历史数据缓存中可对数据进行有效处理,在有序队列在容量满之后还可以根据指定字段的排序值自动踢出旧数据,始终维护一个固定容量。
所属领域的技术人员可以清楚地了解到,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,为简洁起见,在此不另赘述。
另外,在本发明各个实施例中的各功能单元可以物理上相互独立,也可以两个或两个以上功能单元集成在一起,还可以全部功能单元都集成在一个处理单元中。上述集成的功能单元既可以采用硬件的形式实现,也可以采用软件或者固件的形式实现。
本领域普通技术人员可以理解:所述集成的功能单元如果以软件的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,其包括若干指令,用以使得一台计算设备(例如个人计算机,服务器,或者网络设备等)在运行所述指令时执行本发明各实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM)、随机存取存储器(RAM),磁碟或者光盘等各种可以存储程序代码的介质。
或者,实现前述方法实施例的全部或部分步骤可以通过程序指令相关的硬件(诸如个人计算机,服务器,或者网络设备等的计算设备)来完成,所述程序指令可以存储于一计算机可读取存储介质中,当所述程序指令被计算设备的处理器执行时,所述计算设备执行本发明各实施例所述方法的全部或部分步骤。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:在本发明的精神和原则之内,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案脱离本发明的保护范围。
根据本发明实施例的一个方面,提供了A1.一种基于固定容量的有序队列缓存方法,应用于Redis数据库,所述方法包括:
获取至少一个缓存数据的多个属性元素,基于各缓存数据的多个属性元素在Redis数据库的预设哈希表中生成所述各缓存数据的信息记录;
基于所述各缓存数据的信息记录中多个属性元素的指定属性元素,在所述Redis数据库的至少一个预设容量有序集合中生成所述各缓存数据的存储队列;其中,所述有序集合为内嵌于所述预设哈希表中的键值对存储结构;
将所述各缓存数据的指定属性元素作为排序字段对所述存储队列进行排序,构成有序队列。
A2.根据A1所述的方法,其中,所述将所述各缓存数据的指定属性元素作为排序字段对所述存储队列进行排序,构成有序队列之后,还包括:
接收待缓存数据并解析出所述待缓存数据的多个属性元素;
基于所述待缓存数据的多个属性元素将所述待缓存数据的信息分别写入所述预设哈希表和所述有序集合。
A3.根据A2所述的方法,其中,所述接收待缓存数据并解析出所述待缓存数据的多个属性元素之后,还包括:
基于所述待缓存数据的多个属性元素生成在所述预设哈希表中添加信息记录的第一写入命令;基于所述待缓存数据的指定属性元素生成在所述有序集合中添加存储队列第二写入命令;
所述将所述待缓存数据的信息分别写入所述预设哈希表和所述有序集合,包括:
基于所述第一写入命令和第二写入命令,分别在所述预设哈希表和有序集中写入所述待缓存数据的信息记录和存储队列。
A4.根据A3所述的方法,其中,所述基于所述待缓存数据的指定属性元素生成在所述有序集合中添加存储队列第二写入命令之后,还包括:
将所述第一写入命令和第二写入命令通过pipeline管道合并为一次发送。
A5.根据A2所述的方法,其中,还包括:
获取所述有序集合的预设容量,基于所述预设容量设定缓冲容量;其中,所述缓冲容量占所述预设容量的指定百分比。
A6.根据A5所述的方法,其中,所述将所述待缓存数据的信息分别写入所述预设哈希表和所述有序集合之后,还包括:
判断所述有序集合的存储队列的数量是否处于所述预设容量的数量范围内;
若超出所述预设容量的数量范围,则计算超过所述预设容量的多余存储队列数量。
A7.根据A6所述的方法,其中,所述计算超过所述预设容量的多余存储队列数量之后,还包括:
判断所述多余存储队列数量是否处于所述缓冲容量的数量范围内;
若超出所述缓冲容量的数量范围,则基于各缓存数据的指定属性元素删除所述有序集合中指定区间的存储队列,以及与所述存储队列对应的缓存数据在所述预设哈希表中的信息记录。
A8.根据A7所述的方法,其中,所述基于各缓存数据的指定属性元素删除所述有序集合中指定区间的存储队列,以及与所述存储队列对应的缓存数据在所述预设哈希表中的信息记录,包括:
基于所述指定属性元素获取所述有序集合中指定区间的存储队列;其中,所述指定区间的存储队列的数量与所述缓冲容量范围相等;
生成删除所述有序集合中指定区间的存储队列的第一删除命令,以及删除与所述存储队列对应的缓存数据在所述预设哈希表中的信息记录的第二删除命令;
基于所述第一删除命令和所述第二删除命令分别对所述有序集合中的存储队列和预设哈希表的信息记录执行删除操作。
A9.根据A8所述的方法,其中,所述生成删除所述有序集合中指定区间的存储队列的第一删除命令,以及删除与所述存储队列对应的缓存数据在所述预设哈希表中的信息记录的第二删除命令之后,还包括:
将所述第一删除命令和所述第二删除命令通过pipeline管道合并为一次发送。
A10.根据A1-A9任一项所述的方法,其中,所述将所述各缓存数据的指定属性元素作为排序字段对所述存储队列进行排序,构成有序队列之后,还包括:
以所述指定属性元素获取所述有序队列,将所述有序队列作为索引数据;
基于所述索引数据在所述哈希表中获取与各索引数据对应的信息记录,生成包括有各缓存数据详细信息的信息列表。
根据本发明实施例的另一个方面,还提供了B11.一种基于固定容量的有序队列缓存装置,应用于Redis数据库,所述装置包括:
第一生成模块,配置为获取至少一个缓存数据的多个属性元素,基于各缓存数据的多个属性元素在Redis数据库的预设哈希表中生成所述各缓存数据的信息记录;
第二生成模块,配置为基于所述各缓存数据的信息记录中多个属性元素的指定属性元素,在所述Redis数据库的至少一个预设容量有序集合中生成所述各缓存数据的存储队列;其中,所述有序集合为内嵌于所述预设哈希表中的键值对存储结构;
排序模块,配置为将所述各缓存数据的指定属性元素作为排序字段对所述存储队列进行排序,构成有序队列。
B12.根据B11所述的装置,其中,还包括:
数据接收模块,配置为接收待缓存数据并解析出所述待缓存数据的多个属性元素;
数据写入模块,配置为基于所述待缓存数据的多个属性元素将所述待缓存数据的信息分别写入所述预设哈希表和所述有序集合。
B13.根据B12所述的装置,其中,还包括:
命令生成模块,配置为基于所述待缓存数据的多个属性元素生成在所述预设哈希表中添加信息记录的第一写入命令;基于所述待缓存数据的指定属性元素生成在所述有序集合中添加存储队列第二写入命令;
所述数据写入模块,还配置为基于所述第一写入命令和第二写入命令,分别在所述预设哈希表和有序集中写入所述待缓存数据的信息记录和存储队列。
B14.根据B13所述的装置,其中,
所述命令生成模块,还配置为将所述第一写入命令和第二写入命令通过pipeline管道合并为一次发送。
B15.根据B12所述的装置,其中,还包括:
设定模块,配置为获取所述有序集合的预设容量,基于所述预设容量设定缓冲容量;其中,所述缓冲容量占所述预设容量的指定百分比。
B16.根据B15所述的装置,其中,还包括:
第一判断模块,配置为判断所述有序集合的存储队列的数量是否处于所述预设容量的数量范围内;
当所述有序集合的存储队列的数量超出所述预设容量的数量范围时,计算超过所述预设容量的多余存储队列数量。
B17.根据B16所述的装置,其中,还包括:
第二判断模块,配置为判断所述多余存储队列数量是否处于所述缓冲容量的数量范围内;
若超出所述缓冲容量的数量范围,则基于各缓存数据的指定属性元素删除所述有序集合中指定区间的存储队列,以及与所述存储队列对应的缓存数据在所述预设哈希表中的信息记录。
B18.根据B17所述的装置,其中,
所述第二判断模块,还配置为基于所述指定属性元素获取所述有序集合中指定区间的存储队列;其中,所述指定区间的存储队列的数量与所述缓冲容量范围相等;
生成删除所述有序集合中指定区间的存储队列的第一删除命令,以及删除与所述存储队列对应的缓存数据在所述预设哈希表中的信息记录的第二删除命令;
基于所述第一删除命令和所述第二删除命令分别对所述有序集合中的存储队列和预设哈希表的信息记录执行删除操作。
B19.根据B18所述的装置,其中,
所述第二判断模块,还配置为将所述第一删除命令和所述第二删除命令通过pipeline管道合并为一次发送。
B20.根据B11-B19任一项所述的装置,其中,还包括:
索引生成模块,配置为在所述排序模块构成有序队列之后,以所述指定属性元素获取所述有序队列,将所述有序队列作为索引数据;
基于所述索引数据在所述哈希表中获取与各索引数据对应的信息记录,生成包括有各缓存数据详细信息的信息列表。
根据本发明实施例的另一个方面,还提供了C21.一种计算机存储介质,所述计算机存储介质存储有计算机程序代码,当所述计算机程序代码在计算设备上运行时,导致所述计算设备执行A1-A10任一项所述的基于固定容量的有序队列缓存方法。
根据本发明实施例的另一个方面,还提供了D22.一种计算设备,包括:
处理器;
存储有计算机程序代码的存储器;
当所述计算机程序代码被所述处理器运行时,导致所述计算设备执行A1-A10任一项所述的基于固定容量的有序队列缓存方法。

Claims (10)

1.一种基于固定容量的有序队列缓存方法,应用于Redis数据库,所述方法包括:
获取至少一个缓存数据的多个属性元素,基于各缓存数据的多个属性元素在Redis数据库的预设哈希表中生成所述各缓存数据的信息记录;
基于所述各缓存数据的信息记录中多个属性元素的指定属性元素,在所述Redis数据库的至少一个预设容量有序集合中生成所述各缓存数据的存储队列;其中,所述有序集合为内嵌于所述预设哈希表中的键值对存储结构;
将所述各缓存数据的指定属性元素作为排序字段对所述存储队列进行排序,构成有序队列。
2.根据权利要求1所述的方法,其中,所述将所述各缓存数据的指定属性元素作为排序字段对所述存储队列进行排序,构成有序队列之后,还包括:
接收待缓存数据并解析出所述待缓存数据的多个属性元素;
基于所述待缓存数据的多个属性元素将所述待缓存数据的信息分别写入所述预设哈希表和所述有序集合。
3.根据权利要求2所述的方法,其中,所述接收待缓存数据并解析出所述待缓存数据的多个属性元素之后,还包括:
基于所述待缓存数据的多个属性元素生成在所述预设哈希表中添加信息记录的第一写入命令;基于所述待缓存数据的指定属性元素生成在所述有序集合中添加存储队列第二写入命令;
所述将所述待缓存数据的信息分别写入所述预设哈希表和所述有序集合,包括:
基于所述第一写入命令和第二写入命令,分别在所述预设哈希表和有序集中写入所述待缓存数据的信息记录和存储队列。
4.根据权利要求3所述的方法,其中,所述基于所述待缓存数据的指定属性元素生成在所述有序集合中添加存储队列第二写入命令之后,还包括:
将所述第一写入命令和第二写入命令通过pipeline管道合并为一次发送。
5.根据权利要求2所述的方法,其中,还包括:
获取所述有序集合的预设容量,基于所述预设容量设定缓冲容量;其中,所述缓冲容量占所述预设容量的指定百分比。
6.根据权利要求5所述的方法,其中,所述将所述待缓存数据的信息分别写入所述预设哈希表和所述有序集合之后,还包括:
判断所述有序集合的存储队列的数量是否处于所述预设容量的数量范围内;
若超出所述预设容量的数量范围,则计算超过所述预设容量的多余存储队列数量。
7.根据权利要求6所述的方法,其中,所述计算超过所述预设容量的多余存储队列数量之后,还包括:
判断所述多余存储队列数量是否处于所述缓冲容量的数量范围内;
若超出所述缓冲容量的数量范围,则基于各缓存数据的指定属性元素删除所述有序集合中指定区间的存储队列,以及与所述存储队列对应的缓存数据在所述预设哈希表中的信息记录。
8.一种基于固定容量的有序队列缓存装置,应用于Redis数据库,所述装置包括:
第一生成模块,配置为获取至少一个缓存数据的多个属性元素,基于各缓存数据的多个属性元素在Redis数据库的预设哈希表中生成所述各缓存数据的信息记录;
第二生成模块,配置为基于所述各缓存数据的信息记录中多个属性元素的指定属性元素,在所述Redis数据库的至少一个预设容量有序集合中生成所述各缓存数据的存储队列;其中,所述有序集合为内嵌于所述预设哈希表中的键值对存储结构;
排序模块,配置为将所述各缓存数据的指定属性元素作为排序字段对所述存储队列进行排序,构成有序队列。
9.一种计算机存储介质,所述计算机存储介质存储有计算机程序代码,当所述计算机程序代码在计算设备上运行时,导致所述计算设备执行权利要求1-7任一项所述的基于固定容量的有序队列缓存方法。
10.一种计算设备,包括:
处理器;
存储有计算机程序代码的存储器;
当所述计算机程序代码被所述处理器运行时,导致所述计算设备执行权利要求1-7任一项所述的基于固定容量的有序队列缓存方法。
CN201811028164.XA 2018-09-04 2018-09-04 一种基于固定容量的有序队列缓存方法及装置 Pending CN110874360A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811028164.XA CN110874360A (zh) 2018-09-04 2018-09-04 一种基于固定容量的有序队列缓存方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811028164.XA CN110874360A (zh) 2018-09-04 2018-09-04 一种基于固定容量的有序队列缓存方法及装置

Publications (1)

Publication Number Publication Date
CN110874360A true CN110874360A (zh) 2020-03-10

Family

ID=69716990

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811028164.XA Pending CN110874360A (zh) 2018-09-04 2018-09-04 一种基于固定容量的有序队列缓存方法及装置

Country Status (1)

Country Link
CN (1) CN110874360A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112434182A (zh) * 2020-10-29 2021-03-02 北京奇艺世纪科技有限公司 数据存储和获取方法、装置、服务器及存储介质
CN113158096A (zh) * 2021-05-14 2021-07-23 网易(杭州)网络有限公司 数据处理方法、装置、介质及电子设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103177027A (zh) * 2011-12-23 2013-06-26 北京新媒传信科技有限公司 获取动态Feed索引的方法和系统
CN103246612A (zh) * 2012-02-13 2013-08-14 阿里巴巴集团控股有限公司 一种数据缓存的方法及装置
US20140089569A1 (en) * 2012-09-21 2014-03-27 Violin Memory Inc. Write cache sorting
CN106339493A (zh) * 2016-08-31 2017-01-18 腾讯科技(深圳)有限公司 一种数据处理方法及相关装置
CN106681665A (zh) * 2016-12-29 2017-05-17 北京奇虎科技有限公司 缓存数据的持久化存储方法及装置
CN108280229A (zh) * 2018-02-26 2018-07-13 腾讯科技(深圳)有限公司 内存数据读写方法和装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103177027A (zh) * 2011-12-23 2013-06-26 北京新媒传信科技有限公司 获取动态Feed索引的方法和系统
CN103246612A (zh) * 2012-02-13 2013-08-14 阿里巴巴集团控股有限公司 一种数据缓存的方法及装置
US20140089569A1 (en) * 2012-09-21 2014-03-27 Violin Memory Inc. Write cache sorting
CN106339493A (zh) * 2016-08-31 2017-01-18 腾讯科技(深圳)有限公司 一种数据处理方法及相关装置
CN106681665A (zh) * 2016-12-29 2017-05-17 北京奇虎科技有限公司 缓存数据的持久化存储方法及装置
CN108280229A (zh) * 2018-02-26 2018-07-13 腾讯科技(深圳)有限公司 内存数据读写方法和装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112434182A (zh) * 2020-10-29 2021-03-02 北京奇艺世纪科技有限公司 数据存储和获取方法、装置、服务器及存储介质
CN113158096A (zh) * 2021-05-14 2021-07-23 网易(杭州)网络有限公司 数据处理方法、装置、介质及电子设备
CN113158096B (zh) * 2021-05-14 2022-05-31 网易(杭州)网络有限公司 数据处理方法、装置、介质及电子设备

Similar Documents

Publication Publication Date Title
US10664497B2 (en) Hybrid database table stored as both row and column store
US9043310B2 (en) Accessing a dimensional data model when processing a query
US7853770B2 (en) Storage system, data relocation method thereof, and recording medium that records data relocation program
US9858303B2 (en) In-memory latch-free index structure
US9898545B2 (en) Path-caching mechanism to improve performance of path-related operations in a repository
US7689574B2 (en) Index and method for extending and querying index
EP2790113B1 (en) Aggregate query-caching in databases architectures with a differential buffer and a main store
US9805077B2 (en) Method and system for optimizing data access in a database using multi-class objects
US8051045B2 (en) Archive indexing engine
US20040205044A1 (en) Method for storing inverted index, method for on-line updating the same and inverted index mechanism
US10417265B2 (en) High performance parallel indexing for forensics and electronic discovery
US8176021B2 (en) Optimized reverse key indexes
US8843436B2 (en) Systems and methods for performing direct reporting access to transaction databases
US20100274795A1 (en) Method and system for implementing a composite database
WO2012169102A1 (ja) データベース性能予測装置及びデータベース予測方法
CN110096509A (zh) 大数据环境下实现历史数据拉链表存储建模处理的系统及方法
CN116257523A (zh) 一种基于非易失存储器的列式存储索引方法及装置
CN110874360A (zh) 一种基于固定容量的有序队列缓存方法及装置
Qian et al. An evaluation of Lucene for keywords search in large-scale short text storage
US8112458B1 (en) User segmentation user interface
CN109800208B (zh) 网络溯源系统及其数据处理方法、计算机存储介质
US20070299890A1 (en) System and method for archiving relational database data
US20130060781A1 (en) Performing index scans in a database
Li et al. Optimizing nonindexed join processing in flash storage-based systems
JP4825504B2 (ja) データ登録・検索システムおよびデータ登録・検索方法

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
RJ01 Rejection of invention patent application after publication

Application publication date: 20200310

RJ01 Rejection of invention patent application after publication