CN106326410A - 一种数据查询方法及装置 - Google Patents
一种数据查询方法及装置 Download PDFInfo
- Publication number
- CN106326410A CN106326410A CN201610710436.9A CN201610710436A CN106326410A CN 106326410 A CN106326410 A CN 106326410A CN 201610710436 A CN201610710436 A CN 201610710436A CN 106326410 A CN106326410 A CN 106326410A
- Authority
- CN
- China
- Prior art keywords
- user identity
- thread
- data base
- identity
- data
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据查询方法及装置,用于实现多线程处理数据时对用户ID的正确查询。所述方法包括:采用多线程的方式发出获取待处理数据的用户身份标识的请求;按照预设顺序启动其中一条线程获取所述用户身份标识,且除所述其中一条线程之外的其他线程处于等待状态;当所述其中一条线程获取到所述用户身份标识时,启动所述其中一条线程的下一条线程获取所述用户身份标识。该技术方案避免了在数据库中未存储有用户身份标识时多条线程重复生成用户身份标识的情况,从而提高数据处理的效率。
Description
技术领域
本发明涉及互联网技术领域,尤其涉及一种数据查询方法及装置。
背景技术
数据库是按照数据结构来组织、存储和管理数据的仓库,数据库对数据的查询、处理速度远远超过普通文件的处理速度。随着移动互联网业务和用户数量的快速增长,传统的入库机制已经很难满足入库管理的需求,因此,采用多线程处理数据的方法应运而生。
在处理数据时,每行数据都需要根据数字身份识别框架OpenID和频道ID这两项从数据库中查找用户ID,如果查找不到,则生成用户ID并记录到数据库中。在单线程的情况下以上处理方式是没问题的,但是如果是多线程处理数据时则会出现问题。当多个线程同时或者先后根据相同的OpenID和频道ID来查找用户ID时,如果数据库中恰好没有对应的用户ID,则需要生成用户ID。由于多个线程是先后来查找的、可能前一个线程刚好生成了一个用户ID、但还未来得及把生成的用户ID记录到数据库中,另外一个线程就来查找相同的OpenID和频道ID对应的用户ID了,此时后来的线程发现没有对应的用户ID,就会又生成了一个新的用户ID并存入到数据库中,这样则把之前线程生成的用户ID给改变了,这样在后面进行业务分析处理时被修改之前的用户ID相关的数据就成为了错误数据了。
发明内容
本发明实施例提供一种数据查询方法及装置,用于实现多线程处理数据时对用户ID的正确查询。
一种数据查询方法,应用于支持脚本语言Lua的数据库中,包括以下步骤:
采用多线程的方式发出获取待处理数据的用户身份标识的请求;
按照预设顺序启动其中一条线程获取所述用户身份标识,且除所述其中一条线程之外的其他线程处于等待状态;
当所述其中一条线程获取到所述用户身份标识时,启动所述其中一条线程的下一条线程获取所述用户身份标识。
在一个实施例中,所述获取所述用户身份标识,包括:
判断所述数据库中是否存储有所述用户身份标识;
当所述数据库中存储有所述用户身份标识时,获取所述存储的用户身份标识;
当所述数据库中未存储有所述用户身份标识时,根据所述待处理数据的数字身份识别框架OpenID和频道ID生成所述用户身份标识。
在一个实施例中,所述根据所述待处理数据的数字身份识别框架OpenID和频道ID生成所述用户身份标识之后,所述获取所述用户身份标识,还包括:
将所述生成的用户身份标识和所述数字身份识别框架OpenID以及所述频道ID对应存储于所述数据库中。
在一个实施例中,所述生成所述用户身份标识,包括:
采用原子自增的方式生成所述用户身份标识。
在一个实施例中,所述将所述生成的用户身份标识和所述数字身份识别框架OpenID以及所述频道ID对应存储于所述数据库中,包括:
将所述生成的用户身份标识和所述数字身份识别框架OpenID以及所述频道ID以哈希表的方式存储于所述数据库中。
一种数据查询装置,应用于支持脚本语言Lua的数据库中,所述装置包括:
请求模块,用于采用多线程的方式发出获取待处理数据的用户身份标识的请求;
第一获取模块,用于按照预设顺序启动其中一条线程获取所述用户身份标识,且除所述其中一条线程之外的其他线程处于等待状态;
第二获取模块,用于当所述其中一条线程获取到所述用户身份标识时,启动所述其中一条线程的下一条线程获取所述用户身份标识。
在一个实施例中,所述第一获取模块包括:
判断单元,用于判断所述数据库中是否存储有所述用户身份标识;
获取单元,用于当所述数据库中存储有所述用户身份标识时,获取所述存储的用户身份标识;
生成单元,用于当所述数据库中未存储有所述用户身份标识时,根据所述待处理数据的数字身份识别框架OpenID和频道ID生成所述用户身份标识。
在一个实施例中,所述第一获取模块还包括:
存储单元,用于根据所述待处理数据的数字身份识别框架OpenID和频道ID生成所述用户身份标识之后,将所述生成的用户身份标识和所述数字身份识别框架OpenID以及所述频道ID对应存储于所述数据库中。
在一个实施例中,所述生成单元,还用于采用原子自增的方式生成所述用户身份标识。
在一个实施例中,所述存储单元,还用于将所述生成的用户身份标识和所述数字身份识别框架OpenID以及所述频道ID以哈希表的方式存储于所述数据库中。
本发明实施例的一些有益效果可以包括:
采用本发明实施例提供的技术方案,能够在多线程都发出获取待处理数据的用户身份标识的请求时,按照预设顺序启动其中一条线程获取用户身份标识,且除该线程之外的其他线程均处于等待状态,避免了在数据库中未存储有用户身份标识时多条线程重复生成用户身份标识的情况,并且,仅在当前线程获取到用户身份标识之后,才会启动下一条线程获取用户身份标识,使得之后的线程在获取用户身份标识时,可直接获取到数据库中存储的用户身份标识或者第一条线程生成的用户身份标识,而无需重复性生成错误的用户身份标识,从而提高数据处理的效率。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1为本发明实施例中一种数据查询方法的流程图;
图2为本发明实施例中一种数据查询方法中获取用户ID的流程图;
图3为本发明实施例中一种数据查询装置的框图;
图4为本发明实施例中一种数据查询装置中第一获取模块的框图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
图1为本发明实施例中一种数据查询方法的流程图。该数据查询方法应用于支持脚本语言Lua的数据库(例如数据库Redis)中,如图1所示,包括以下步骤S11-S13:
步骤S11,采用多线程的方式发出获取待处理数据的用户身份标识的请求。
步骤S12,按照预设顺序启动其中一条线程获取用户身份标识,且除其中一条线程之外的其他线程处于等待状态。
步骤S13,当其中一条线程获取到用户身份标识时,启动其中一条线程的下一条线程获取用户身份标识。
其中,用户身份标识即用户ID,因此以下简称用户ID。
上述实施例中,执行步骤S12时,预设顺序可设为多线程执行任务的先后顺序,例如,按照多线程执行任务的先后顺序,可先启动第一条线程获取用户ID,当第一条线程获取到用户ID时,再启动第二条线程获取用户ID,以此类推,直至所有线程都获取到用户ID。所启动的其中一条线程可按照如图2所示的步骤S21-S24来获取用户ID:
步骤S21,判断所述数据库中是否存储有用户ID;当数据库中存储有用户ID时,执行步骤S22;当数据库中未存储有用户ID时,执行步骤S23。
步骤S22,获取存储的用户ID。
步骤S23,根据待处理数据的数字身份识别框架OpenID和频道ID生成用户ID。
执行步骤S23时,可采用原子自增的方式生成用户ID。例如,当数据库为Redis时,可采用Redis中的incr命令生成用户ID。
步骤S24,将生成的用户ID和数字身份识别框架OpenID以及频道ID对应存储于数据库中。
执行步骤S24时,可将生成的用户ID和数字身份识别框架OpenID以及频道ID以哈希表的方式存储于数据库中。在该哈希表中,频道ID对应哈希表中的key,数字身份识别框架OpenID对应哈希表中的field,用户ID对应哈希表中的value。
当上述其中一条线程获取到用户ID之后,则启动下一条线程获取用户ID,下一条线程获取用户ID的方式与图2中所示的步骤S21-S24相同,即每条线程获取用户ID的方式均相同,因此不再赘述。
在一个具体实施例中,需要处理数据库Redis中的一行数据,当多条线程发出获取该行数据对应的用户ID请求时,由主线程启动多条线程中的第一条线程从Redis中获取用户ID,同时多线程中的其他线程均处于等待状态。如果Redis中存储有该行数据对应的用户ID,则第一条线程直接获取该用户ID;如果Redis中未存储有该行数据对应的用户ID,则第一条线程根据该行数据的数字身份识别框架OpenID和频道ID、并采用Redis中的incr命令生成该行数据对应的用户ID,同时将所生成的用户ID与该行数据的OpenID、频道ID对应存储在Redis中。此时,第一条数据已获取到用户ID,则由主线程启动下一条线程(即第二条线程)获取该行数据对应的用户ID,此时Redis中必然存储有该行数据对应的用户ID(因为即使Redis中预先未存储有该行数据对应的用户ID,也已由第一条线程在获取用户ID时生成并存储该行数据对应的用户ID),因此第二条线程可直接获取Redis中的用户ID,而无需再重复性生成错误的用户ID。可见,该实施例中的技术方案能够有效避免多条线程同时获取用户ID时导致的用户ID发生错误的情况。
采用上述任一实施例提供的技术方案,能够在多线程都发出获取待处理数据的用户身份标识的请求时,按照预设顺序启动其中一条线程获取用户身份标识,且除该线程之外的其他线程均处于等待状态,避免了在数据库中未存储有用户身份标识时多条线程重复生成用户身份标识的情况,并且,仅在当前线程获取到用户身份标识之后,才会启动下一条线程获取用户身份标识,使得之后的线程在获取用户身份标识时,可直接获取到数据库中存储的用户身份标识或者第一条线程生成的用户身份标识,而无需重复性生成错误的用户身份标识,从而提高数据处理的效率。
图3为本发明实施例中一种数据查询装置的框图。如图3所示,该装置应用于支持脚本语言Lua的数据库中,包括:
请求模块31,用于采用多线程的方式发出获取待处理数据的用户身份标识的请求;
第一获取模块32,用于按照预设顺序启动其中一条线程获取用户身份标识,且除其中一条线程之外的其他线程处于等待状态;
第二获取模块33,用于当其中一条线程获取到用户身份标识时,启动其中一条线程的下一条线程获取用户身份标识。
在一个实施例中,如图4所示,第一获取模块32包括:
判断单元321,用于判断数据库中是否存储有用户身份标识;
获取单元322,用于当数据库中存储有用户身份标识时,获取存储的用户身份标识;
生成单元323,用于当数据库中未存储有用户身份标识时,根据待处理数据的数字身份识别框架OpenID和频道ID生成用户身份标识。
在一个实施例中,第一获取模块32还包括:
存储单元,用于根据待处理数据的数字身份识别框架OpenID和频道ID生成用户身份标识之后,将生成的用户身份标识和数字身份识别框架OpenID以及频道ID对应存储于数据库中。
在一个实施例中,生成单元323还用于采用原子自增的方式生成用户身份标识。
在一个实施例中,存储单元还用于将生成的用户身份标识和数字身份识别框架OpenID以及频道ID以哈希表的方式存储于数据库中。
采用本发明实施例提供的装置,能够在多线程都发出获取待处理数据的用户身份标识的请求时,按照预设顺序启动其中一条线程获取用户身份标识,且除该线程之外的其他线程均处于等待状态,避免了在数据库中未存储有用户身份标识时多条线程重复生成用户身份标识的情况,并且,仅在当前线程获取到用户身份标识之后,才会启动下一条线程获取用户身份标识,使得之后的线程在获取用户身份标识时,可直接获取到数据库中存储的用户身份标识或者第一条线程生成的用户身份标识,而无需重复性生成错误的用户身份标识,从而提高数据处理的效率。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种数据查询方法,其特征在于,应用于支持脚本语言Lua的数据库中,所述方法包括:
采用多线程的方式发出获取待处理数据的用户身份标识的请求;
按照预设顺序启动其中一条线程获取所述用户身份标识,且除所述其中一条线程之外的其他线程处于等待状态;
当所述其中一条线程获取到所述用户身份标识时,启动所述其中一条线程的下一条线程获取所述用户身份标识。
2.根据权利要求1所述的方法,其特征在于,所述获取所述用户身份标识,包括:
判断所述数据库中是否存储有所述用户身份标识;
当所述数据库中存储有所述用户身份标识时,获取所述存储的用户身份标识;
当所述数据库中未存储有所述用户身份标识时,根据所述待处理数据的数字身份识别框架OpenID和频道ID生成所述用户身份标识。
3.根据权利要求2所述的方法,其特征在于,所述根据所述待处理数据的数字身份识别框架OpenID和频道ID生成所述用户身份标识之后,所述获取所述用户身份标识,还包括:
将所述生成的用户身份标识和所述数字身份识别框架OpenID以及所述频道ID对应存储于所述数据库中。
4.根据权利要求2或3所述的方法,其特征在于,所述生成所述用户身份标识,包括:
采用原子自增的方式生成所述用户身份标识。
5.根据权利要求3所述的方法,其特征在于,所述将所述生成的用户身份标识和所述数字身份识别框架OpenID以及所述频道ID对应存储于所述数据库中,包括:
将所述生成的用户身份标识和所述数字身份识别框架OpenID以及所述频道ID以哈希表的方式存储于所述数据库中。
6.一种数据查询装置,其特征在于,应用于支持脚本语言Lua的数据库中,所述装置包括:
请求模块,用于采用多线程的方式发出获取待处理数据的用户身份标识的请求;
第一获取模块,用于按照预设顺序启动其中一条线程获取所述用户身份标识,且除所述其中一条线程之外的其他线程处于等待状态;
第二获取模块,用于当所述其中一条线程获取到所述用户身份标识时,启动所述其中一条线程的下一条线程获取所述用户身份标识。
7.根据权利要求6所述的装置,其特征在于,所述第一获取模块包括:
判断单元,用于判断所述数据库中是否存储有所述用户身份标识;
获取单元,用于当所述数据库中存储有所述用户身份标识时,获取所述存储的用户身份标识;
生成单元,用于当所述数据库中未存储有所述用户身份标识时,根据所述待处理数据的数字身份识别框架OpenID和频道ID生成所述用户身份标识。
8.根据权利要求7所述的装置,其特征在于,所述第一获取模块还包括:
存储单元,用于根据所述待处理数据的数字身份识别框架OpenID和频道ID生成所述用户身份标识之后,将所述生成的用户身份标识和所述数字身份识别框架OpenID以及所述频道ID对应存储于所述数据库中。
9.根据权利要求7或8所述的装置,其特征在于,所述生成单元,还用于采用原子自增的方式生成所述用户身份标识。
10.根据权利要求8所述的装置,其特征在于,所述存储单元,还用于将所述生成的用户身份标识和所述数字身份识别框架OpenID以及所述频道ID以哈希表的方式存储于所述数据库中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610710436.9A CN106326410A (zh) | 2016-08-23 | 2016-08-23 | 一种数据查询方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610710436.9A CN106326410A (zh) | 2016-08-23 | 2016-08-23 | 一种数据查询方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106326410A true CN106326410A (zh) | 2017-01-11 |
Family
ID=57742403
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610710436.9A Pending CN106326410A (zh) | 2016-08-23 | 2016-08-23 | 一种数据查询方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106326410A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109284193A (zh) * | 2018-09-06 | 2019-01-29 | 平安科技(深圳)有限公司 | 一种基于多线程的分布式数据处理方法及服务器 |
CN109582674A (zh) * | 2018-11-28 | 2019-04-05 | 亚信科技(南京)有限公司 | 一种数据存储方法及系统 |
CN111708618A (zh) * | 2020-06-12 | 2020-09-25 | 北京思特奇信息技术股份有限公司 | 一种基于Java多线程的处理方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110251911A1 (en) * | 2010-04-12 | 2011-10-13 | Junger Peter J | Systems and/or methods for determining item serial number structure and intelligence |
CN103514216A (zh) * | 2012-06-29 | 2014-01-15 | 中国银联股份有限公司 | 基于数据库系统的流水号生成方法 |
CN105511969A (zh) * | 2015-11-25 | 2016-04-20 | 中国船舶工业系统工程研究院 | 一种跨进程的线程间进行互斥的方法 |
CN105608137A (zh) * | 2015-12-17 | 2016-05-25 | 厦门市美亚柏科信息股份有限公司 | 一种提取身份标识的方法和装置 |
-
2016
- 2016-08-23 CN CN201610710436.9A patent/CN106326410A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110251911A1 (en) * | 2010-04-12 | 2011-10-13 | Junger Peter J | Systems and/or methods for determining item serial number structure and intelligence |
CN103514216A (zh) * | 2012-06-29 | 2014-01-15 | 中国银联股份有限公司 | 基于数据库系统的流水号生成方法 |
CN105511969A (zh) * | 2015-11-25 | 2016-04-20 | 中国船舶工业系统工程研究院 | 一种跨进程的线程间进行互斥的方法 |
CN105608137A (zh) * | 2015-12-17 | 2016-05-25 | 厦门市美亚柏科信息股份有限公司 | 一种提取身份标识的方法和装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109284193A (zh) * | 2018-09-06 | 2019-01-29 | 平安科技(深圳)有限公司 | 一种基于多线程的分布式数据处理方法及服务器 |
CN109582674A (zh) * | 2018-11-28 | 2019-04-05 | 亚信科技(南京)有限公司 | 一种数据存储方法及系统 |
CN109582674B (zh) * | 2018-11-28 | 2023-12-22 | 亚信科技(南京)有限公司 | 一种数据存储方法及系统 |
CN111708618A (zh) * | 2020-06-12 | 2020-09-25 | 北京思特奇信息技术股份有限公司 | 一种基于Java多线程的处理方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8832173B2 (en) | System and method of multithreaded processing across multiple servers | |
CN104834688B (zh) | 一种二级索引建立方法和装置 | |
US11269902B2 (en) | Time series data management method, device, and apparatus | |
JP2017021804A5 (zh) | ||
CN110147455B (zh) | 一种人脸匹配检索装置及方法 | |
CN106326410A (zh) | 一种数据查询方法及装置 | |
CN109597834A (zh) | 基于redis的海量数据存储方法、装置、介质和设备 | |
CN106055353B (zh) | 数据更新方法及装置 | |
CN110716990A (zh) | 一种应用于数据交易的多数据源管理系统 | |
JP2018147301A (ja) | 計算機システム及び処理の割当方法 | |
CN107239568B (zh) | 分布式索引实现方法及装置 | |
CN112527479A (zh) | 任务执行方法、装置、计算机设备和存储介质 | |
US8498963B2 (en) | Method and system for data synchronization | |
CN108021688B (zh) | 一种数据处理方法及装置 | |
CN105893445A (zh) | 数据处理的方法、服务器和终端设备 | |
CN105740131B (zh) | 软件用户行为回退处理方法及装置 | |
CN106372121B (zh) | 服务器及数据处理方法 | |
CN113225368B (zh) | 一种区块链交易方法、装置、电子设备及存储介质 | |
CN111726249B (zh) | 网络设备的配置文件处理方法及装置 | |
CN109525649B (zh) | 一种zookeeper客户端的数据处理方法及装置 | |
CN101499086A (zh) | 异构模块数据共享系统及方法 | |
CN112579275A (zh) | 任务执行方法、装置、设备及存储介质 | |
CN108710665B (zh) | 数据回流方法、装置、系统及设备 | |
CN106406845A (zh) | 一种任务处理方法及装置 | |
JP2017004500A (ja) | 分析支援方法、分析支援プログラムおよび分析支援装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170111 |