CN113986942A - 一种基于人机对话的消息队列管理方法及装置 - Google Patents

一种基于人机对话的消息队列管理方法及装置 Download PDF

Info

Publication number
CN113986942A
CN113986942A CN202111615512.5A CN202111615512A CN113986942A CN 113986942 A CN113986942 A CN 113986942A CN 202111615512 A CN202111615512 A CN 202111615512A CN 113986942 A CN113986942 A CN 113986942A
Authority
CN
China
Prior art keywords
data
priority value
mongodb
redis
updating
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.)
Granted
Application number
CN202111615512.5A
Other languages
English (en)
Other versions
CN113986942B (zh
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.)
Lingxi Beijing Technology Co Ltd
Original Assignee
Lingxi Beijing 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 Lingxi Beijing Technology Co Ltd filed Critical Lingxi Beijing Technology Co Ltd
Priority to CN202111615512.5A priority Critical patent/CN113986942B/zh
Publication of CN113986942A publication Critical patent/CN113986942A/zh
Application granted granted Critical
Publication of CN113986942B publication Critical patent/CN113986942B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/235Update request formulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • G06F16/2445Data retrieval commands; View definitions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供一种基于人机对话的消息队列管理方法及装置,用于改善难以实现根据优先级条件对数据进行删除的问题。该方法包括:获取数据删除请求,数据删除请求包括第一优先级值;根据第一优先级值生成条件查询语句;在数据库中查询出条件查询语句对应的第一数据标识,数据库中存储有数据标识与优先级值的对应关系;在Redis的有序集合中删除第一数据标识对应的数据记录,数据记录是以数据标识为键,以优先级值为具体值存储于Redis的。

Description

一种基于人机对话的消息队列管理方法及装置
技术领域
本申请涉及计算机消息队列和队列管理的技术领域,具体而言,涉及一种基于人机对话的消息队列管理方法及装置。
背景技术
优先级队列(Priority Queue),是一种其中的元素被赋予优先级的数据结构。普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。当访问元素时,具有最高优先级的元素最先删除的特性,因此,优先级队列具有最高级先出(First In,Largest Out)的行为特征。
目前,外呼***每天需要处理几百万外呼电话和短信等任务,外呼***的并发能力有限,需要排队执行各项任务,各项任务按照优先级从高到低的顺序来执行,因此,通常使用RabbitMQ作为优先级队列来完成各项任务的执行,RabbitMQ是实现了高级消息队列协议的开源消息代理软件(又称面向消息的中间件)。但是,在具体的实践过程中发现,在一些特殊情况中需要根据优先级条件对数据进行删除,然而使用RabbitMQ作为优先级队列难以实现根据优先级条件对数据进行删除。
发明内容
本申请实施例的目的在于提供一种基于人机对话的消息队列管理方法及装置,用于改善难以实现根据优先级条件对数据进行删除的问题。
本申请实施例提供了一种基于人机对话的消息队列管理方法,包括:获取数据删除请求,数据删除请求包括第一优先级值;根据第一优先级值生成条件查询语句;在数据库中查询出条件查询语句对应的第一数据标识,数据库中存储有数据标识与优先级值的对应关系;在Redis的有序集合中删除第一数据标识对应的数据记录,数据记录是以数据标识为键,以优先级值为具体值存储于Redis的。在上述的实现过程中,通过数据库来存储数据标识与优先级值的对应关系,可以在数据库中获取优先级值对应的数据标识,且采用Redis的有序集合作为优先级队列,使得能够在Redis的有序集合中删除该数据标识对应的数据记录,避免了使用RabbitMQ作为优先级队列无法根据优先级条件对数据进行删除的情况,实现了根据优先级条件对优先级队列中的数据进行删除的功能。
可选地,在本申请实施例中,数据删除请求还包括:第一数据属性;根据第一优先级值生成条件查询语句,包括:从数据删除请求中解析出第一优先级值和第一数据属性;对第一优先级值和第一数据属性进行拼接,获得条件查询语句。
可选地,在本申请实施例中,数据库包括:MongoDB;在数据库中查询出条件查询语句对应的第一数据标识,包括:在MongoDB中执行条件查询语句,获得MongoDB返回的查询结果,查询结果包括条件查询语句对应的数据标识。在上述的实现过程中,通过采用MongoDB来作为需要操作数据的条件查询语句的执行者,在MongoDB中执行条件查询语句,获得MongoDB返回的查询结果,从而有效地提高了条件查询语句的执行速度。
可选地,在本申请实施例中,有序集合为ZSet;在Redis的有序集合中删除第一数据标识对应的数据记录,包括:在Redis的ZSet中删除所有键为数据标识的数据记录。
可选地,在本申请实施例中,还包括:获取数据***请求;从数据***请求解析出第二优先级值和第二数据属性,并根据第二优先级值和第二数据属性生成数据***语句;在MongoDB中执行数据***语句,获得MongoDB返回的***结果,***结果表征在数据属性的唯一索引约束下是否***成功。在上述的实现过程中,通过在MongoDB中设置数据属性的唯一索引约束,从而实现了对消息队列中的数据进行有效地去重等操作。
可选地,在本申请实施例中,***结果包括:***状态和第二数据标识;在获得MongoDB返回的***结果之后,还包括:判断***状态是否为成功;若是,则以第二数据标识为键,以第二优先级值为具体值的形式存储至Redis的有序集合中。
可选地,在本申请实施例中,还包括:获取数据更新请求;从数据更新请求解析出第三优先级值和第三数据属性,并根据第三优先级值和第三数据属性生成数据更新语句;在MongoDB中执行数据更新语句,获得MongoDB返回的更新结果,更新结果表征在数据属性的唯一索引约束下是否更新成功。在上述的实现过程中,通过从数据更新请求解析出第三优先级值和第三数据属性,并根据第三优先级值和第三数据属性生成数据更新语句;在MongoDB中执行数据更新语句,获得MongoDB返回的更新结果,从而实现了在MongoDB中更新数据的功能。
本申请实施例还提供了一种基于人机对话的消息队列管理装置,包括:删除请求获取模块,用于获取数据删除请求,数据删除请求包括第一优先级值;查询语句生成模块,用于根据第一优先级值生成条件查询语句;数据标识查询模块,用于在数据库中查询出条件查询语句对应的第一数据标识,数据库中存储有数据标识与优先级值的对应关系;数据记录删除模块,用于在Redis的有序集合中删除第一数据标识对应的数据记录,数据记录是以数据标识为键,以优先级值为具体值存储于Redis的。
可选地,在本申请实施例中,数据删除请求还包括:第一数据属性;查询语句生成模块,包括:删除请求解析模块,用于从数据删除请求中解析出第一优先级值和第一数据属性;查询语句获得模块,用于对第一优先级值和第一数据属性进行拼接,获得条件查询语句。
可选地,在本申请实施例中,数据库包括:MongoDB;数据标识查询模块,包括:查询结果获得模块,用于在MongoDB中执行条件查询语句,获得MongoDB返回的查询结果,查询结果包括条件查询语句对应的数据标识。
可选地,在本申请实施例中,有序集合为ZSet;数据记录删除模块,包括:在Redis的ZSet中删除所有键为数据标识的数据记录。
可选地,在本申请实施例中,基于人机对话的消息队列管理装置,还包括:***请求获取模块,用于获取数据***请求;***语句生成模块,用于从数据***请求解析出第二优先级值和第二数据属性,并根据第二优先级值和第二数据属性生成数据***语句;***结果获得模块,用于在MongoDB中执行数据***语句,获得MongoDB返回的***结果,***结果表征在数据属性的唯一索引约束下是否***成功。
可选地,在本申请实施例中,***结果包括:***状态和第二数据标识;基于人机对话的消息队列管理装置,还包括:***状态判定模块,用于判断***状态是否为成功;数据记录存储模块,用于若***状态是成功,则以第二数据标识为键,以第二优先级值为具体值的形式存储至Redis的有序集合中。
可选地,在本申请实施例中,基于人机对话的消息队列管理装置,还包括:更新请求获取模块,用于获取数据更新请求;更新语句生成模块,用于从数据更新请求解析出第三优先级值和第三数据属性,并根据第三优先级值和第三数据属性生成数据更新语句;更新结构获得模块,用于在MongoDB中执行数据更新语句,获得MongoDB返回的更新结果,更新结果表征在数据属性的唯一索引约束下是否更新成功。
本申请实施例还提供了一种电子设备,包括:处理器和存储器,存储器存储有处理器可执行的机器可读指令,机器可读指令被处理器执行时执行如上面描述的方法。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如上面描述的方法。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请实施例的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出的本申请实施例提供的基于人机对话的消息队列管理方法中的数据删除过程的流程示意图;
图2示出的本申请实施例提供的基于人机对话的消息队列管理方法中的数据***过程的流程示意图;
图3示出的本申请实施例提供的基于人机对话的消息队列管理方法中的数据更新过程的流程示意图;
图4示出的本申请实施例提供的基于人机对话的消息队列管理装置的结构示意图;
图5示出的本申请实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请实施例一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请实施例的详细描述并非旨在限制要求保护的本申请实施例的范围,而是仅仅表示本申请实施例的选定实施例。基于本申请实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请实施例保护的范围。
在介绍本申请实施例提供的基于人机对话的消息队列管理方法之前,先介绍本申请实施例中所涉及的一些概念:
Redis(Remote Dictionary Server ),即远程字典服务,是一个使用ANSI C编写的开源、支持网络、基于内存、分布式、可选持久性的键值对存储数据库。Redis支持存储的value类型有很多种,包括但不限于:字符串(String)、链表(List)、集合(set)、有序集合(Sorted Set,简称为ZSet)和哈希类型(Hash)。
数据库(DataBase,DB),是指存储电子数据或者电子文件的集合,简而言之可视为电子化的文件柜,用户可以对文件中的数据运行新增、截取、更新、删除等操作;这里的数据库是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。
结构化查询语言(Structured Query Language,SQL)是一种特定目的编程语言,也是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库管理***(Relational Database Management System,RDBMS),或在关系流数据管理***(RDSMS)中进行处理。
需要说明的是,本申请实施例提供的基于人机对话的消息队列管理方法可以被电子设备执行,这里的电子设备是指具有执行计算机程序功能的设备终端或者上述的服务器,设备终端例如:智能手机、个人电脑、平板电脑、个人数字助理或者移动上网设备等。服务器是例如:x86服务器以及非x86服务器,非x86服务器包括:大型机、小型机和UNIX服务器。
下面介绍该基于人机对话的消息队列管理方法适用的应用场景,这里的应用场景包括但不限于:使用该基于人机对话的消息队列管理方法对外呼场景中的消息队列进行管理,实现根据优先级条件对消息队列中的数据进行删除,以及对消息队列中的数据进行有效地去重等操作,也可以使用该基于人机对话的消息队列管理方法增强优先级消息队列的功能,从而满足消息队列在更多应用场景下的需求。
请参见图1示出的本申请实施例提供的基于人机对话的消息队列管理方法中的数据删除过程的流程示意图;该基于人机对话的消息队列管理方法的主要思路是,通过数据库来存储数据标识与优先级值的对应关系,可以在数据库中获取优先级值对应的数据标识,且采用Redis的有序集合作为优先级队列,使得能够在Redis的有序集合中删除该数据标识对应的数据记录,避免了使用RabbitMQ作为优先级队列无法根据优先级条件对数据进行删除的情况,实现了根据优先级条件对优先级队列中的数据进行删除的功能。上述的基于人机对话的消息队列管理方法可以包括:数据删除、数据***和数据更新等等过程,下面分别以数据删除、数据***和数据更新的顺序来介绍基于人机对话的消息队列管理方法,首先介绍数据删除过程如下:
步骤S110:电子设备获取数据删除请求,数据删除请求包括第一优先级值。
数据删除请求(Data Delete Request),是指用于在数据库和Redis的有序集合中删除同一数据标识对应数据的请求,该数据删除请求可以包括:优先级值和数据属性。在具体的实践过程中,可以将Redis中的ZSet的分数字段来存储优先级值,且该分数字段对应的Key存储的是数据标识(identification,ID),可以利用redis的zset分数特性实现优先级的排序。
上述步骤S110的实施方式例如:终端设备通过超文本传输协议(Hyper TextTransfer Protocol,HTTP)或者超文本传输安全协议(Hyper Text Transfer ProtocolSecure,HTTPS)向电子设备发送数据删除请求。然后,电子设备通过HTTP协议或者HTTPS协议接收终端设备发送的数据删除请求。该数据删除请求可以包括第一优先级值,当然该数据删除请求还可以包括其它的数据属性。以外呼场景为例,以外呼客户的优先级作为优先级值,假设分为高级(使用5表示)、中级(使用3表示)和低级(使用1表示),每个客户的电话号码可以作为数据标识,其它数据属性例如:姓名、年龄和行业等。
可以理解的是,本申请实施例中的数据标识可以是通过SnowFlake 算法生成的,即能够保证数据按照优先级的顺序进行执行,又能够保证数据在同一优先级的情况下,按照数据标识执行时,根据时间的先后顺序来执行。
在步骤S110之后,执行步骤S120:电子设备根据数据删除请求中的第一优先级值生成条件查询语句。
上面的步骤S120的实施方式有很多种,包括但不限于:
第一种实施方式,仅通过第一优先级值来删除数据,该实施方式例如:电子设备从数据删除请求中解析出第一优先级值。电子设备对第一优先级值进行拼接和封装,获得条件查询语句,该条件查询语句是用来查询出需要删除数据的数据标识的。可以理解的是,拼接和封装的格式具体是根据数据库来确定的,数据库可以选择关系型数据库或者非关系型数据库两种,以关系型数据库为例,假设第一优先级值是低级,那么可以表示为priority=1,拼接和封装成关系型数据库所使用的SQL语句例如:select * from PriQueue wherepriority=1;其中,PriQueue是指该关系型数据库中的数据表名称,priority=1表示筛选出第一优先级值是低级的数据。
第二种实施方式,通过第一优先级值和第一数据属性来删除数据,该实施方式例如:可以理解的是,上述的数据删除请求还可以包括:第一数据属性;同上面描述的,以外呼场景为例,此处的第一数据属性例如:姓名、年龄和行业等等。电子设备从数据删除请求中解析出第一优先级值和第一数据属性。电子设备对第一优先级值和第一数据属性进行拼接和封装,获得条件查询语句,该条件查询语句是用来查询出需要删除数据的数据标识的,具体的方式参见第一种实施方式,其技术原理是类似的,因此就不再赘述。其区别是。可以理解的是第一优先级值和第一数据属性构成多个条件,多个条件之间可以通过逻辑运算符连接,然后形成条件查询语句。
第三种实施方式,通过第一优先级值和多个数据属性来删除数据,该实施方式的技术原理与第二种实施方式的技术原理是类似的,具体的方式参见第二种实施方式,其技术原理是类似的,因此就不再赘述。在具体的实践过程中,如果使用的是非关系型数据库(例如MongoDB),那么就应该将第一优先级值和第一数据属性封装为MongoDB所需格式的条件查询语句。
在步骤S120之后,执行步骤S130:电子设备在数据库中查询出条件查询语句对应的第一数据标识,数据库中存储有数据标识与优先级值的对应关系。
在具体实际过程中,上面的数据库可以选择关系型数据库或者非关系型数据库;可以使用的关系型数据库例如:Mysql、PostgreSQL、Oracle和SQLSever等;可以使用的非关系型数据库包括:grakn数据库、Neo4j图数据库、Hadoop子***HBase、MongoDB和CouchDB等。为了便于理解和说明,下面均以MongoDB数据库为例子进行详细的说明。
上述步骤S130的实施方式例如:可以理解的是,MongoDB数据库中可以事先存储有数据标识与优先级值的对应关系,以及数据标识和其他数据属性的对应关系,即MongoDB是将数据表示、优先级值和其他数据属性存储在同一个数据集合(相当于关系型数据库中的数据表)中。因此,可以在MongoDB中执行条件查询语句,获得MongoDB返回的查询结果,查询结果包括条件查询语句对应的数据标识。
在步骤S130之后,执行步骤S140:电子设备在Redis的有序集合中删除第一数据标识对应的数据记录,数据记录是以数据标识为键,以优先级值为具体值存储于Redis的。
上述的步骤S140的实施方式例如:在具体的实践过程中,可以使用的有序集合包括但不限于:Redis中的ZSet等等;还可以在从Redis中的ZSet***数据和取出数据时增加分布式锁,从而保证每条数据的Redis和数据库(例如MongoDB)中同步***和取出的原子性操作。在Redis的ZSet中删除所有键为数据标识的数据记录,数据记录是以数据标识为键(即key),以优先级值为具体值(即value)存储于Redis的。
在上述的实现过程中,首先,根据第一优先级值生成条件查询语句,然后,在数据库(例如MongoDB)中查询出条件查询语句对应的第一数据标识,最后,在优先级队列(例如Redis的ZSet)中删除第一数据标识对应的数据记录。Redis和MongoDB里都存储有数据标识(ID)和优先级值,但是这两者存储的数据标识(ID)和优先级值的作用是不太相同的,Redis中的数据标识(ID)和优先级值是用于确定数据处理(即消耗或者消费)的顺序,而MongoDB中存储的数据标识(ID)和优先级值是作为筛选出需要删除数据的条件的。
也就是说,通过数据库来存储数据标识与优先级值的对应关系,可以在数据库中获取优先级值对应的数据标识,且采用Redis的有序集合作为优先级队列,使得能够在Redis的有序集合中删除该数据标识对应的数据记录,避免了使用RabbitMQ作为优先级队列无法根据优先级条件对数据进行删除的情况,实现了根据优先级条件对优先级队列中的数据进行删除的功能。
请参见图2示出的本申请实施例提供的基于人机对话的消息队列管理方法中的数据***过程的流程示意图;上面介绍了数据删除过程,接下来介绍数据***过程,该过程可以包括:
步骤S210:电子设备获取数据***请求。
上述步骤S210的实施方式例如:电子设备通过HTTP协议或者HTTPS协议接收终端设备发送的数据***请求。
在步骤S210之后,执行步骤S220:电子设备从数据***请求解析出第二优先级值和第二数据属性,并根据第二优先级值和第二数据属性生成数据***语句。
在步骤S220之后,执行步骤S230:电子设备在MongoDB中执行数据***语句,获得MongoDB返回的***结果。
其中,***结果包括:***状态和第二数据标识。
上述步骤S230的实施方式例如:可以事先在电子设备上的MongoDB中需要去重的字段设置唯一索引,那么在MongoDB中***数据时,如果有重复字段的数据***,就不会***成功。具体地,电子设备在MongoDB中执行数据***语句,MongoDB会返回是否违反唯一索引规则的返回结果,如果违反唯一索引规则,则不允许***数据,即***结果为失败;如果不违反唯一索引规则,则允许***数据,即***结果为成功,获得MongoDB返回的***结果,***结果表征在数据属性的唯一索引约束下是否***成功。
可以理解的是,唯一索引不允许具有索引值相同的行,从而禁止重复的索引或键值。唯一索引用于确保索引字段不存储重复的值,即强制索引字段的唯一性。MongoDB在创建该索引时检查是否有重复的键值,并在每次使用***(insert)数据或更新(update)数据时进行检查。因此可以利用MongoDB唯一索引能够有效的对数据进行去重。
可选地,在获得MongoDB返回的***结果之后,还包括:
在步骤S230之后,执行步骤S240:电子设备判断***状态是否为成功。
在步骤S240之后,执行步骤S250:若***状态为成功,则以第二数据标识为键,以第二优先级值为具体值的形式存储至Redis的有序集合中。
在步骤S240之后,执行步骤S260:若***状态为失败,则输出数据***请求执行失败。
上面步骤S240至步骤S260的实施方式例如:电子设备判断***状态是否为成功;若***状态为成功,则以第二数据标识为键,以第二优先级值为具体值的形式存储至Redis的有序集合zset中;若***状态为失败,则输出数据***请求执行失败,就表示索引字段对应的数据重复,那么就不允许该数据进入Redis中。在具体实现过程中,还可以将MongoDB和Redis两者的数据操作绑定为原子操作,具体可以采用对MongoDB和Redis以加分布式锁的方式来实现。
在上述的实现过程中,通过在MongoDB中设置数据属性的唯一索引约束,从而实现了对消息队列中的数据进行有效地去重等操作。以及,采用对MongoDB和Redis以加锁的方式来实现将MongoDB和Redis两者的数据操作绑定为原子操作,从而有效地保证了MongoDB和Redis两者的数据一致性。
请参见图3示出的本申请实施例提供的基于人机对话的消息队列管理方法中的数据更新过程的流程示意图;上面介绍了数据***过程,接下来介绍数据更新过程,该过程可以包括:
步骤S310:电子设备获取数据更新请求。
上述步骤S310的实施方式例如:电子设备通过HTTP协议或者HTTPS协议获取数据更新(update)请求。
在步骤S310之后,执行步骤S320:电子设备从数据更新请求解析出数据标识、第三优先级值和第三数据属性,并根据数据标识、第三优先级值和第三数据属性生成数据更新语句。
在步骤S320之后,执行步骤S330:电子设备在MongoDB中执行数据更新语句,获得MongoDB返回的更新结果。
在步骤S330之后,执行步骤S340:电子设备根据更新结果在Redis的ZSet中更新该数据标识对应的第三优先级值。
上述步骤S320至步骤S340的实施方式例如:电子设备从数据更新请求解析出数据标识、第三优先级值和第三数据属性,并根据数据标识、第三优先级值和第三数据属性生成数据更新语句,在MongoDB中执行数据更新语句,获得MongoDB返回的更新结果,更新结果表征在数据属性的唯一索引约束下是否更新成功。如果更新结果是成功,则在Redis的ZSet中更新该数据标识对应的第三优先级值;对应地,如果更新结果是失败,则重新在MongoDB中执行数据更新语句,获得MongoDB返回的重新更新结果。
在上述的实现过程中,通过从数据更新请求解析出第三优先级值和第三数据属性,并根据第三优先级值和第三数据属性生成数据更新语句;在MongoDB中执行数据更新语句,获得MongoDB返回的更新结果,从而实现了在MongoDB中更新数据的功能。
请参见图4示出的本申请实施例提供的基于人机对话的消息队列管理装置的结构示意图;本申请实施例提供了一种基于人机对话的消息队列管理装置400,包括:
删除请求获取模块410,用于获取数据删除请求,数据删除请求包括第一优先级值。
查询语句生成模块420,用于根据第一优先级值生成条件查询语句。
数据标识查询模块430,用于在数据库中查询出条件查询语句对应的第一数据标识,数据库中存储有数据标识与优先级值的对应关系。
数据记录删除模块440,用于在Redis的有序集合中删除第一数据标识对应的数据记录,数据记录是以数据标识为键,以优先级值为具体值存储于Redis的。
可选地,在本申请实施例中,数据删除请求还包括:第一数据属性;查询语句生成模块,包括:
删除请求解析模块,用于从数据删除请求中解析出第一优先级值和第一数据属性。
查询语句获得模块,用于对第一优先级值和第一数据属性进行拼接,获得条件查询语句。
可选地,在本申请实施例中,数据库包括:MongoDB;数据标识查询模块,包括:
查询结果获得模块,用于在MongoDB中执行条件查询语句,获得MongoDB返回的查询结果,查询结果包括条件查询语句对应的数据标识。
可选地,在本申请实施例中,有序集合为ZSet;数据记录删除模块,包括:
在Redis的ZSet中删除所有键为数据标识的数据记录。
可选地,在本申请实施例中,基于人机对话的消息队列管理装置,还包括:
***请求获取模块,用于获取数据***请求。
***语句生成模块,用于从数据***请求解析出第二优先级值和第二数据属性,并根据第二优先级值和第二数据属性生成数据***语句。
***结果获得模块,用于在MongoDB中执行数据***语句,获得MongoDB返回的***结果,***结果表征在数据属性的唯一索引约束下是否***成功。
可选地,在本申请实施例中,***结果包括:***状态和第二数据标识;基于人机对话的消息队列管理装置,还包括:
***状态判定模块,用于判断***状态是否为成功。
数据记录存储模块,用于若***状态是成功,则以第二数据标识为键,以第二优先级值为具体值的形式存储至Redis的有序集合中。
可选地,在本申请实施例中,基于人机对话的消息队列管理装置,还包括:
更新请求获取模块,用于获取数据更新请求。
更新语句生成模块,用于从数据更新请求解析出第三优先级值和第三数据属性,并根据第三优先级值和第三数据属性生成数据更新语句。
更新结构获得模块,用于在MongoDB中执行数据更新语句,获得MongoDB返回的更新结果,更新结果表征在数据属性的唯一索引约束下是否更新成功。
应理解的是,该装置与上述的基于人机对话的消息队列管理方法实施例对应,能够执行上述方法实施例涉及的各个步骤,该装置具体的功能可以参见上文中的描述,为避免重复,此处适当省略详细描述。该装置包括至少一个能以软件或固件(firmware)的形式存储于存储器中或固化在装置的操作***(operating system,OS)中的软件功能模块。
请参见图5示出的本申请实施例提供的电子设备的结构示意图。本申请实施例提供的一种电子设备500,包括:处理器510和存储器520,存储器520存储有处理器510可执行的机器可读指令,机器可读指令被处理器510执行时执行如上的方法。
本申请实施例还提供了一种计算机可读存储介质530,该计算机可读存储介质530上存储有计算机程序,该计算机程序被处理器510运行时执行如上的方法。
其中,计算机可读存储介质530可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(Static Random Access Memory, 简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read Only Memory, 简称EPROM),可编程只读存储器(Programmable Read-Only Memory, 简称PROM),只读存储器(Read-Only Memory, 简称ROM),磁存储器,快闪存储器,磁盘或光盘。
本申请实施例提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其他的方式实现。以上所描述的装置实施例仅是示意性的,例如,附图中的流程图和框图显示了根据本申请实施例的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以和附图中所标注的发生顺序不同。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这主要根据所涉及的功能而定。
另外,在本申请实施例中的各个实施例的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上的描述,仅为本申请实施例的可选实施方式,但本申请实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请实施例揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请实施例的保护范围之内。

Claims (10)

1.一种基于人机对话的消息队列管理方法,其特征在于,包括:
获取数据删除请求,所述数据删除请求包括第一优先级值;
根据所述第一优先级值生成条件查询语句;
在数据库中查询出所述条件查询语句对应的第一数据标识,所述数据库中存储有数据标识与所述优先级值的对应关系;
在Redis的有序集合中删除所述第一数据标识对应的数据记录,所述数据记录是以数据标识为键,以优先级值为具体值存储于所述Redis的。
2.根据权利要求1所述的方法,其特征在于,所述数据删除请求还包括:第一数据属性;所述根据所述第一优先级值生成条件查询语句,包括:
从所述数据删除请求中解析出所述第一优先级值和所述第一数据属性;
对所述第一优先级值和所述第一数据属性进行拼接,获得条件查询语句。
3.根据权利要求1所述的方法,其特征在于,所述数据库包括:MongoDB;所述在数据库中查询出所述条件查询语句对应的第一数据标识,包括:
在所述MongoDB中执行所述条件查询语句,获得所述MongoDB返回的查询结果,所述查询结果包括所述条件查询语句对应的数据标识。
4.根据权利要求3所述的方法,其特征在于,所述有序集合为ZSet;所述在Redis的有序集合中删除所述第一数据标识对应的数据记录,包括:
在所述Redis的ZSet中删除所有键为所述数据标识的数据记录。
5.根据权利要求4所述的方法,其特征在于,还包括:
获取数据***请求;
从所述数据***请求解析出第二优先级值和第二数据属性,并根据所述第二优先级值和所述第二数据属性生成数据***语句;
在所述MongoDB中执行所述数据***语句,获得所述MongoDB返回的***结果,所述***结果表征在数据属性的唯一索引约束下是否***成功。
6.根据权利要求5所述的方法,其特征在于,所述***结果包括:***状态和第二数据标识;在所述获得所述MongoDB返回的***结果之后,还包括:
判断所述***状态是否为成功;
若是,则以所述第二数据标识为键,以所述第二优先级值为具体值的形式存储至所述Redis的有序集合中。
7.根据权利要求4所述的方法,其特征在于,还包括:
获取数据更新请求;
从所述数据更新请求解析出第三优先级值和第三数据属性,并根据所述第三优先级值和所述第三数据属性生成数据更新语句;
在所述MongoDB中执行所述数据更新语句,获得所述MongoDB返回的更新结果,所述更新结果表征在数据属性的唯一索引约束下是否更新成功。
8.一种基于人机对话的消息队列管理装置,其特征在于,包括:
删除请求获取模块,用于获取数据删除请求,所述数据删除请求包括第一优先级值;
查询语句生成模块,用于根据所述第一优先级值生成条件查询语句;
数据标识查询模块,用于在数据库中查询出所述条件查询语句对应的第一数据标识,所述数据库中存储有数据标识与所述优先级值的对应关系;
数据记录删除模块,用于在Redis的有序集合中删除所述第一数据标识对应的数据记录,所述数据记录是以数据标识为键,以优先级值为具体值存储于所述Redis的。
9.一种电子设备,其特征在于,包括:处理器和存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述机器可读指令被所述处理器执行时执行如权利要求1至7任一所述的方法。
10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至7任一所述的方法。
CN202111615512.5A 2021-12-28 2021-12-28 一种基于人机对话的消息队列管理方法及装置 Active CN113986942B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111615512.5A CN113986942B (zh) 2021-12-28 2021-12-28 一种基于人机对话的消息队列管理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111615512.5A CN113986942B (zh) 2021-12-28 2021-12-28 一种基于人机对话的消息队列管理方法及装置

Publications (2)

Publication Number Publication Date
CN113986942A true CN113986942A (zh) 2022-01-28
CN113986942B CN113986942B (zh) 2022-04-26

Family

ID=79734594

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111615512.5A Active CN113986942B (zh) 2021-12-28 2021-12-28 一种基于人机对话的消息队列管理方法及装置

Country Status (1)

Country Link
CN (1) CN113986942B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116719821A (zh) * 2023-08-09 2023-09-08 北京联云天下科技有限公司 一种并发数据***Elasticsearch的排重方法、装置及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040015365A1 (en) * 1999-05-31 2004-01-22 Kumiko Ohmori Speech recognition based interactive information retrieval scheme using dialogue control to reduce user stress
CN105868033A (zh) * 2016-04-06 2016-08-17 江苏物联网研究发展中心 基于Redis实现优先级消息队列的方法及***
CN108460041A (zh) * 2017-02-20 2018-08-28 腾讯科技(深圳)有限公司 数据的处理方法和装置
CN109101580A (zh) * 2018-07-20 2018-12-28 北京北信源信息安全技术有限公司 一种基于Redis的热点数据缓存方法和装置
CN109977139A (zh) * 2019-03-18 2019-07-05 京东数字科技控股有限公司 基于类结构化查询语句的数据处理方法和装置
CN110019213A (zh) * 2017-12-04 2019-07-16 北京京东尚科信息技术有限公司 数据管理方法、装置、电子设备及存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040015365A1 (en) * 1999-05-31 2004-01-22 Kumiko Ohmori Speech recognition based interactive information retrieval scheme using dialogue control to reduce user stress
CN105868033A (zh) * 2016-04-06 2016-08-17 江苏物联网研究发展中心 基于Redis实现优先级消息队列的方法及***
CN108460041A (zh) * 2017-02-20 2018-08-28 腾讯科技(深圳)有限公司 数据的处理方法和装置
CN110019213A (zh) * 2017-12-04 2019-07-16 北京京东尚科信息技术有限公司 数据管理方法、装置、电子设备及存储介质
CN109101580A (zh) * 2018-07-20 2018-12-28 北京北信源信息安全技术有限公司 一种基于Redis的热点数据缓存方法和装置
CN109977139A (zh) * 2019-03-18 2019-07-05 京东数字科技控股有限公司 基于类结构化查询语句的数据处理方法和装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116719821A (zh) * 2023-08-09 2023-09-08 北京联云天下科技有限公司 一种并发数据***Elasticsearch的排重方法、装置及存储介质
CN116719821B (zh) * 2023-08-09 2023-10-10 北京联云天下科技有限公司 一种并发数据***Elasticsearch的排重方法、装置及存储介质

Also Published As

Publication number Publication date
CN113986942B (zh) 2022-04-26

Similar Documents

Publication Publication Date Title
CN109857724B (zh) 基于区块链实现支持多种数据库的方法及设备
US8219575B2 (en) Method and system for specifying, preparing and using parameterized database queries
CN111026749B (zh) 业务告警方法及装置
CN109086382B (zh) 一种数据同步方法、装置、设备及存储介质
CN110650164B (zh) 文件的上传方法、装置、终端以及计算机存储介质
CN112214617B (zh) 一种基于区块链技术的数字档案管理方法及***
CN109947729B (zh) 一种实时数据分析方法及装置
CN114385760A (zh) 增量数据实时同步的方法、装置、计算机设备及存储介质
CN112256715A (zh) 索引的更新方法、装置、电子设备以及存储介质
CN113986942B (zh) 一种基于人机对话的消息队列管理方法及装置
CN114048201A (zh) 一种基于分布式流计算引擎Flink的关键字段实时去重方法
CN111984732A (zh) 在区块链上实现去中心化检索的方法、节点及区块链网络
CN114461247A (zh) 热更新方法、装置、电子设备和计算机可读介质
CN112748866A (zh) 一种增量索引数据的处理方法和装置
CN115988001A (zh) 区块链***的共识投票处理方法、装置、设备以及介质
CN111753141B (zh) 一种数据管理方法及相关设备
CN112347355A (zh) 数据处理方法、装置、服务器及存储介质
CN111488117B (zh) 用于管理元数据的方法、电子设备和计算机可读介质
US11347689B2 (en) Method, device and computer program product for event ordering
CN111159142A (zh) 一种数据处理方法及装置
CN110990640B (zh) 一种数据判定方法、装置、设备及计算机可读存储介质
CN114490865A (zh) 数据库同步方法、装置、设备及计算机存储介质
CN109739883B (zh) 提升数据查询性能的方法、装置和电子设备
CN108491448B (zh) 一种数据推送的方法和装置
CN112988798A (zh) 一种日志处理方法、装置、设备及介质

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
GR01 Patent grant
GR01 Patent grant