CN105808638A - 数据处理方法和系统 - Google Patents
数据处理方法和系统 Download PDFInfo
- Publication number
- CN105808638A CN105808638A CN201610100326.0A CN201610100326A CN105808638A CN 105808638 A CN105808638 A CN 105808638A CN 201610100326 A CN201610100326 A CN 201610100326A CN 105808638 A CN105808638 A CN 105808638A
- Authority
- CN
- China
- Prior art keywords
- redis
- connection
- connection pool
- metadata
- client
- 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
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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24532—Query optimisation of parallel queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
- G06F16/2456—Join operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24561—Intermediate data storage techniques for performance improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种数据处理方法和系统。上述方法包括以下步骤:从数据库获取元数据,并将所述元数据存储在redis中;建立redis连接池,并通过配置文件配置所述连接池;接收客户端的访问请求;根据所述访问请求从所述连接池中获取连接;通过所述连接从redis获取相应的目标元数据并进行操作;将操作后的目标元数据继续存储在redis中,并释放所述连接。上述数据处理方法和系统,减轻数据库损耗和服务器压力,提高了数据高并发的处理能力,且减轻redis被大量访问时频繁建立连接的开销,提高访问效率,缩短数据处理时间,可有效提高数据处理效率,并减少资源浪费。
Description
技术领域
本发明涉及数据处理技术领域,特别是涉及一种数据处理方法和系统。
背景技术
在举办某活动的时候,在某个时间段会有很多用户集中参与活动,例如抽奖、购物限时活动等,在该时间段内用户通过操作客户端参与活动,此时,服务器会接收到大量客户端的访问,需要频繁地从数据库中读取相应数据进行操作,造成服务器和数据库承受压力大且高并发的情况,增加了数据库损耗,数据处理的效率低,用户需要等待较长的时间才可成功参与活动。
发明内容
基于此,有必要提供一种数据处理方法,能够提高数据高并发的处理能力,提高数据处理效率且减轻服务器压力。
此外,还有必要提供一种数据处理系统,能够提高数据高并发处理能力,提高数据处理效率且减轻服务器压力。
一种数据处理方法,包括以下步骤:
从数据库获取元数据,并将所述元数据存储在redis中;
建立redis连接池,并通过配置文件配置所述连接池;
接收客户端的访问请求;
根据所述访问请求从所述连接池中获取连接;
通过所述连接从redis获取相应的目标元数据并进行操作;
将操作后的目标元数据继续存储在redis中,并释放所述连接。
在其中一个实施例中,所述根据所述访问请求从所述连接池中获取连接的步骤,包括:
根据所述访问请求向所述连接池请求获取连接;
判断所述连接池中是否存在空闲连接;
若存在,则分配一个空闲连接给所述客户端;
若不存在,则判断所述连接池中的当前连接数是否小于最大连接数,若是,则建立一个新的连接,并将所述新的连接分配给所述客户端,若否,则使所述客户端进入等待队列。
在其中一个实施例中,所述方法还包括:
获取业务信息,根据所述业务信息建立多个连接池;
启动redis的多个实例;
建立所述多个连接池与所述多个实例的对应关系。
在其中一个实施例中,所述根据所述访问请求从所述连接池中获取连接的步骤,包括:
根据所述访问请求获取目标元数据所属的业务信息;
根据所述目标元数据所属的业务信息查找匹配的连接池;
从所述匹配的连接池中获取连接;
所述通过所述连接从redis获取相应的目标元数据并进行操作,具体包括:
通过所述连接从redis获取目标元数据;
在与所述匹配的连接池对应的实例中对所述目标元数据进行操作。
在其中一个实施例中,在所述将操作后的目标元数据继续存储在redis中,并释放所述连接的步骤之后,还包括:
获取存储在redis的元数据的时效期;
判断所述存储在redis的元数据是否还在所述时效期内,若不在时效期内,则从redis中提取元数据返回给所述数据库并存储。
一种数据处理系统,包括:
存储模块,用于从数据库获取元数据,并将所述元数据存储在redis中;
配置模块,用于建立redis连接池,并通过配置文件配置所述连接池;
接收模块,用于接收客户端的访问请求;
获取模块,用于根据所述访问请求从所述连接池中获取连接;
操作模块,用于通过所述连接从redis获取相应的目标元数据并进行操作;
释放模块,用于将操作后的目标元数据继续存储在redis中,并释放所述连接。
在其中一个实施例中,所述获取模块包括:
请求单元,用于根据所述访问请求向所述连接池请求获取连接;
判断单元,用于判断所述连接池中是否存在空闲连接;
分配单元,用于当判断出所述连接池中存在空闲连接,则分配一个空闲连接给所述客户端;
所述判断单元还用于当判断出所述连接池中不存在空闲连接,则判断所述连接池中的当前连接数是否小于最大连接数;
所述分配单元还用于当判断出所述连接池中的当前连接数小于最大连接数,则建立一个新的连接,并将所述新的连接分配给所述客户端;
等待单元,用于当判断出所述连接池中的当前连接数不小于最大连接数,则使所述客户端进入等待队列。
在其中一个实施例中,所述系统还包括:
建立模块,用于获取业务信息,根据所述业务信息建立多个连接池;
启动模块,用于启动redis的多个实例;
关系模块,用于建立所述多个连接池与所述多个实例的对应关系。
在其中一个实施例中,所述获取模块包括:
业务获取单元,用于根据所述访问请求获取目标元数据所属的业务信息;
查找单元,用于根据所述目标元数据所属的业务信息查找匹配的连接池;
连接获取单元,用于从所述匹配的连接池中获取连接;
所述操作模块包括:
数据获取单元,用于通过所述连接从redis获取目标元数据;
操作单元,用于在与所述匹配的连接池对应的实例中对所述目标元数据进行操作。
在其中一个实施例中,所述系统还包括:
时效模块,用于获取存储在redis的元数据的时效期;
判断模块,用于判断所述存储在redis的元数据是否还在所述时效期内,若不在时效期内,则从redis中提取元数据返回给所述数据库并存储。
上述数据处理方法和系统,当在活动期间,可将与活动相关的元数据存储在redis当中,当大量客户端进行访问时,直接从redis读取数据而不需要频繁地访问数据库,减轻数据库损耗和服务器压力,提高了数据高并发的处理能力,且在redis中建立连接池管理连接及数据操作,减轻redis被大量访问时频繁建立连接的开销,提高访问效率,缩短数据处理时间,可有效提高数据处理效率,并减少资源浪费。
附图说明
图1为一个实施例中数据处理方法的流程示意图;
图2为一个实施例中客户端获取连接的流程示意图;
图3为一个实施例中客户端获取并操作目标元数据的流程示意图;
图4为一个实施例中判断存储在redis的元数据是否在时效期内的流程示意图;
图5为一个实施例中数据处理系统的结构示意图;
图6为一个实施例中获取模块的内部结构示意图;
图7为另一个实施例中数据处理系统的结构示意图;
图8为又一个实施例中数据处理系统的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
如图1所示,一种数据处理方法,包括以下步骤:
步骤S110,从数据库获取元数据,并将元数据存储在redis中。
具体的,redis是一种key-value(键-值)型的分布式存储系统,可支持多种的value类型,包括string(字符串)、list(链表)、set(集合)、zset(sortedset,有序集合)和hash(哈希类型)等,存储和读取数据的速率都很高。元数据可以为活动期间需要被频繁访问读取或操作的数据,例如抽奖活动相关的活动规则、奖品信息、客户信息等,将元数据存储在redis当中,可使客户端在活动期间直接访问redis来获取当中的元数据而不需要访问数据库,增加数据处理效率。
步骤S120,建立redis连接池,并通过配置文件配置连接池。
具体的,可通过在redis建立连接池管理redis的连接,并通过预设的配置文件配置连接池。配置文件中可定义扫描空闲连接的时间、最大连接数、最大等待时间、最大空闲连接数等连接池相关的基本参数,其中,扫描空闲连接的时间指的是每隔该时间扫描并检测连接池中的空闲连接,最大连接数指的是连接池中所能容纳的连接的最大数目,最大等待时间指的是客户端进入等待队列等待的最长时间,最大空闲连接数指的是连接池中空闲连接的最大数目。
步骤S130,接收客户端的访问请求。
具体的,当用户通过客户端参与活动时,服务器会接收客户端的访问请求,访问请求中包含有访问的目标元数据等信息,可根据访问请求生成相应的redis命令,并从redis获取相应的目标元数据进行操作。
步骤S140,根据访问请求从连接池中获取连接。
具体的,当接收到客户的访问请求时,可向连接池请求一个连接,并通过该连接连接redis,获取相应的目标元数据并进行操作。如图2所示,在一个实施例中,步骤S140根据访问请求从连接池中获取连接,包括以下步骤:
步骤S202,根据访问请求向连接池请求获取连接。
步骤S204,判断连接池中是否存在空闲连接,若是,则执行步骤S206,若否,则执行步骤S208。
具体的,当接收到客户端的访问请求,可根据该访问请求向连接池请求获取一个连接,并判断连接池是否存在空闲连接,如果存在空闲连接,即可分配一个空闲连接给客户端,使客户端连接redis。在其它的实施例中,可定时对连接池中的空闲连接进行检测,并判断空闲连接在连接池中保持空闲状态的时间是否超过预设的空闲时间,空闲时间可根据实际情况进行设定,例如5毫秒、10毫秒、20毫秒等,当连接在连接池中保持空闲状态的时间超过预设的空闲时间时,即会被空闲连接回收器线程回收,可保证资源的有效利用,减少资源浪费。
步骤S206,分配一个空闲连接给客户端。
具体的,将空闲连接分配给客户端后,客户端可通过该连接连接redis,并获取目标元数据进行操作,即用户在客户端可成功参与活动。
步骤S208,判断连接池中的当前连接数是否小于最大连接数,若是,则执行步骤S210,若否,则执行步骤S212。
具体的,若连接池中不存在空闲连接,可进一步判断连接池中的当前连接数是否小于预设的最大连接数,若小于最大连接数,可建立一个新的连接并将该新建立的连接分配给客户端使用,若当前连接数不小于最大连接数,即当前连接数已达到最大连接数,则使客户端进入等待队列。
步骤S210,建立一个新的连接,并将新的连接分配给客户端。
步骤S212,使客户端进入等待队列。
具体的,客户端进入等待队列后,若等待时间达到预设的最大等待时间仍没有空闲连接可分配给该客户端,即向客户端返回无空闲连接的信息,客户端可选择重新向连接池请求获取连接。
步骤S150,通过该连接从redis获取相应的目标元数据并进行操作。
具体的,客户端与redis建立连接后,可通过redis的相关命令获取所需的目标元数据,并进行操作,例如,通过get命令获取目标元数据,通过del命令删除一个key及对应的value等。
步骤S160,将操作后的目标元数据继续存储在redis中,并释放连接。
具体的,操作完成后,可将被读取并操作的目标元数据继续存储在redis中,方便其它客户端进行读取操作,并释放客户端获取的连接。例如,手机的某APP(Application,应用程序)举办抽奖活动,活动时间为1月1日至1月3日,在此时间段内,有大量的用户参与该抽奖活动。服务器可先从数据库中获取元数据存储在redis当中,元数据包括活动规则、奖品信息、抽奖概率、用户信息等在抽奖活动期间需要被频繁访问的数据。当用户通过APP参与活动时,客户端会向服务器发送访问请求,并从连接池中获取连接,连接redis成功后从redis中读取相关的目标元数据。客户端可先获取抽奖概率及奖品信息,根据抽奖概率使用户在APP进行抽奖,服务器根据抽奖结果对奖品信息的数据进行操作。若用户所中奖品还有剩余,将所中奖品的数量减1并向客户端返回所中奖品,若所中奖品无剩余,可顺延至下一等级的奖品,并将下一等级的奖品数量减1并向客户端返回下一等级的奖品。当该用户抽奖完成后,将抽奖概率及更新后的抽奖信息等返回redis存储。
上述数据处理方法,当在活动期间,可将与活动相关的元数据存储在redis当中,当大量客户端进行访问时,直接从redis读取数据而不需要频繁地访问数据库,减轻数据库损耗和服务器压力,提高了数据高并发的处理能力,且在redis中建立连接池管理连接及数据操作,减轻redis被大量访问时频繁建立连接的开销,提高访问效率,缩短数据处理时间,可有效提高数据处理效率,并减少资源浪费。
在一个实施例中,上述数据处理方法,还包括以下步骤:
(1)获取业务信息,根据业务信息建立多个连接池。
具体的,可建立多个连接池,并根据预设的配置文件进行配置,再根据业务信息将连接池与业务信息进行关联,例如,业务A是客户信息管理,对应使用连接池A,业务B是抽奖活动管理,对应使用连接池B,业务C是活动评论/发言管理,对应使用连接池C等,可以理解地,可采用其它不同的对应关系,例如多个不同的业务对应一个连接池等。
(2)启动redis的多个实例。
具体的,可在多个服务器上同时启动多个redis实例,形成redis集群用于业务处理,redis支持主从同步,元数据可从主服务器向任意数量的从服务器上同步,并实现主服务器与从服务器之间的关联。不同的服务器启动不同的redis实例,每个实例用于进行不同的业务,处理不同的元数据。
(3)建立多个连接池与多个实例的对应关系。
具体的,可建立连接池与实例的对应关系,对应关系可为一对一,一个实例处理一个业务,并使用一个连接池,但不限于此。例如,业务A使用实例A处理元数据,实例A使用连接池A,可在实例A中加入如下注解:
Autowired
Qualifier("jedisPoolA")
protectedJedisPooljedisPool;
其中,jedisPoolA即为连接池A,通过建立连接池与实例的对应关系,将业务进行分块处理,每个redis实例只需处理相关业务对应的元数据,减轻了服务器的压力,增加了数据处理效率。
如图3所示,在一个实施例中,上述数据处理方法,还包括以下步骤:
步骤S302,根据访问请求获取目标元数据所属的业务信息。
具体的,可根据客户端发送的访问请求获取目标元数据所属的业务信息,即检测客户端需要访问哪一个业务的数据,例如客户端要获取用户的账号信息,可检测出账号信息属于业务A客户信息管理,即由业务A对应的redis实例A所属的服务器进行处理。
步骤S304,根据目标元数据所属的业务信息查找匹配的连接池。
具体的,根据预先建立的业务信息与连接池的对应关系,可查找到匹配的连接池,客户端从该连接池获取目标元数据,并进行操作。例如,客户端需要访问业务A客户信息管理的元数据,与业务A匹配的连接池为连接池A,则客户端从连接池A中获取连接,并通过该连接从redis获取目标元数据进行操作。
步骤S306,从匹配的连接池中获取连接。
步骤S308,通过连接从redis获取目标元数据。
步骤S310,在与匹配的连接池对应的实例中对目标元数据进行操作。
具体的,根据预先建立的业务信息、连接池及实例的对应关系,在对应的实例中进行数据处理。例如,客户端需要对账号信息进行修改,账号信息对应业务A客户信息管理,与业务A匹配的连接池为连接池A,且连接池A与实例A对应,即可在连接池A中获取连接后,在实例A中从redis获取客户端所需的账号信息,并执行修改操作。
上述数据处理方法,通过启动redis的多个实例、建立多个连接池,并将多个实例与多个连接池关联,实现对业务的分块处理,每个redis实例只需处理相关业务对应的元数据,减轻了服务器的压力,增加了数据处理效率。
如图4所示,在一个实施例中,上述数据处理方法,在步骤S160将操作后4目标元数据继续存储在redis中,并释放连接之后,还包括:
步骤S402,获取存储在redis的元数据的时效期。
具体的,存储在redis的元数据具有时效期,该时效期可为活动期间,例如某活动的活动时间为1月1日早上7点至晚上24点,则存储在redis与该活动相关的元数据的时效期为1月1日早上7点至晚上24点。
步骤S404,判断存储在redis的元数据是否还在时效期内,若是,则执行步骤S408,若否,则执行步骤S406。
具体的,若存储在redis的元数据不在对应的时效期内,即表示活动已结束,客户端基本不会或很少再访问元数据,可将某些更新的元数据返回数据库存储,例如与客户信息相关的元数据,在活动期间发生变更后需要返回数据库重新存储。而某些在活动过后无用的元数据,可直接删除,例如活动规则、抽奖概率等,在活动过后,这些元数据已不需要再存储,可直接从redis中删除。
步骤S406,从redis中提取元数据返回数据库并存储。
具体的,活动结束后,即元数据已不在时效期内,将redis中某些更新的元数据返回数据库存储后,可删除redis存储的与该活动相关的key及对应的value值,以及相关的业务信息、连接池等的对应关系。
步骤S408,不作处理。
上述数据处理方法,当在活动期间,可将与活动相关的元数据存储在redis当中,当大量客户端进行访问时,直接从redis读取数据而不需要频繁地访问数据库,减轻数据库损耗和服务器压力,提高了数据高并发的处理能力,且在redis中建立连接池管理连接及数据操作,减轻redis被大量访问时频繁建立连接的开销,提高访问效率,缩短数据处理时间,可有效提高数据处理效率,并减少资源浪费。
如图5所示,一种数据处理系统,包括存储模块510、配置模块520、接收模块530、获取模块540、操作模块550和释放模块560。
存储模块510,用于从数据库获取元数据,并将元数据存储在redis中。
具体的,redis是一种key-value型的分布式存储系统,可支持多种的value类型,包括string、list、set、zset和hash等,存储和读取数据的速率都很高。元数据可以为活动期间需要被频繁访问读取或操作的数据,例如抽奖活动相关的活动规则、奖品信息、客户信息等,将元数据存储在redis当中,可使客户端在活动期间直接访问redis来获取当中的元数据而不需要访问数据库,增加数据处理效率。
配置模块520,用于建立redis连接池,并通过配置文件配置连接池。
具体的,可通过在redis建立连接池管理redis的连接,并通过预设的配置文件配置连接池。配置文件中可定义扫描空闲连接的时间、最大连接数、最大等待时间、最大空闲连接数等连接池相关的基本参数,其中,扫描空闲连接的时间指的是每隔该时间扫描并检测连接池中的空闲连接,最大连接数指的是连接池中所能容纳的连接的最大数目,最大等待时间指的是客户端进入等待队列等待的最长时间,最大空闲连接数指的是连接池中空闲连接的最大数目。
接收模块530,用于接收客户端的访问请求。
具体的,当用户通过客户端参与活动时,服务器会接收客户端的访问请求,访问请求中包含有访问的目标元数据等信息,可根据访问请求生成相应的redis命令,并从redis获取相应的目标元数据进行操作。
获取模块540,用于根据访问请求从连接池中获取连接。
具体的,当接收到客户的访问请求时,可向连接池请求一个连接,并通过该连接连接redis,获取相应的目标元数据并进行操作。
如图6所示,在一个实施例中,获取模块540包括请求单元542、判断单元544、分配单元546和等待单元548。
请求单元542,用于根据访问请求向所述连接池请求获取连接。
判断单元544,用于判断连接池中是否存在空闲连接。
具体的,当接收到客户端的访问请求,可根据该访问请求向连接池请求获取一个连接,并判断连接池是否存在空闲连接,如果存在空闲连接,即可分配一个空闲连接给客户端,使客户端连接redis。在其它的实施例中,可定时对连接池中的空闲连接进行检测,并判断空闲连接在连接池中保持空闲状态的时间是否超过预设的空闲时间,空闲时间可根据实际情况进行设定,例如5毫秒、10毫秒、20毫秒等,当连接在连接池中保持空闲状态的时间超过预设的空闲时间时,即会被空闲连接回收器线程回收,可保证资源的有效利用,减少资源浪费。
分配单元546,用于当判断出连接池中存在空闲连接,则分配一个空闲连接给客户端。
具体的,将空闲连接分配给客户端后,客户端可通过该连接连接redis,并获取目标元数据进行操作,即用户在客户端可成功参与活动。
判断单元544还用于当判断出连接池中不存在空闲连接,则判断连接池中的当前连接数是否小于最大连接数。
具体的,若连接池中不存在空闲连接,可进一步判断连接池中的当前连接数是否小于预设的最大连接数,若小于最大连接数,可建立一个新的连接并将该新建立的连接分配给客户端使用,若当前连接数不小于最大连接数,即当前连接数已达到最大连接数,则使客户端进入等待队列。
分配单元546还用于当判断出连接池中的当前连接数小于最大连接数,则建立一个新的连接,并将新的连接分配给所述客户端。
等待单元548,用于当判断出连接池中的当前连接数不小于最大连接数,则使客户端进入等待队列。
具体的,客户端进入等待队列后,若等待时间达到预设的最大等待时间仍没有空闲连接可分配给该客户端,即向客户端返回无空闲连接的信息,客户端可选择重新向连接池请求获取连接。
操作模块550,用于通过连接从redis获取相应的目标元数据并进行操作。
具体的,客户端与redis建立连接后,可通过redis的相关命令获取所需的目标元数据,并进行操作,例如,通过get命令获取目标元数据,通过del命令删除一个key及对应的value等。
释放模块560,用于将操作后的目标元数据继续存储在redis中,并释放连接。
具体的,操作完成后,可将被读取并操作的目标元数据继续存储在redis中,方便其它客户端进行读取操作,并释放客户端获取的连接。例如,手机的某APP(Application,应用程序)举办抽奖活动,活动时间为1月1日至1月3日,在此时间段内,有大量的用户参与该抽奖活动。服务器可先从数据库中获取元数据存储在redis当中,元数据包括活动规则、奖品信息、抽奖概率、用户信息等在抽奖活动期间需要被频繁访问的数据。当用户通过APP参与活动时,客户端会向服务器发送访问请求,并从连接池中获取连接,连接redis成功后从redis中读取相关的目标元数据。客户端可先获取抽奖概率及奖品信息,根据抽奖概率使用户在APP进行抽奖,服务器根据抽奖结果对奖品信息的数据进行操作。若用户所中奖品还有剩余,将所中奖品的数量减1并向客户端返回所中奖品,若所中奖品无剩余,可顺延至下一等级的奖品,并将下一等级的奖品数量减1并向客户端返回下一等级的奖品。当该用户抽奖完成后,将抽奖概率及更新后的抽奖信息等返回redis存储。
上述数据处理系统,当在活动期间,可将与活动相关的元数据存储在redis当中,当大量客户端进行访问时,直接从redis读取数据而不需要频繁地访问数据库,减轻数据库损耗和服务器压力,提高了数据高并发的处理能力,且在redis中建立连接池管理连接及数据操作,减轻redis被大量访问时频繁建立连接的开销,提高访问效率,缩短数据处理时间,可有效提高数据处理效率,并减少资源浪费。
如图7所示,上述数据处理系统,除了包括存储模块510、配置模块520、接收模块530、获取模块540、操作模块550和释放模块560,还包括建立模块570、启动模块580和关系模块590。
建立模块570,用于获取业务信息,根据业务信息建立多个连接池。
具体的,可建立多个连接池,并根据预设的配置文件进行配置,再根据业务信息将连接池与业务信息进行关联,例如,业务A是客户信息管理,对应使用连接池A,业务B是抽奖活动管理,对应使用连接池B,业务C是活动评论/发言管理,对应使用连接池C等,可以理解地,可采用其它不同的对应关系,例如多个不同的业务对应一个连接池等。
启动模块580,用于启动redis的多个实例。
具体的,可在多个服务器上同时启动多个redis实例,形成redis集群用于业务处理,redis支持主从同步,元数据可从主服务器向任意数量的从服务器上同步,并实现主服务器与从服务器之间的关联。不同的服务器启动不同的redis实例,每个实例用于进行不同的业务,处理不同的元数据。
关系模块590,用于建立多个连接池与多个实例的对应关系。
具体的,可建立连接池与实例的对应关系,对应关系可为一对一,一个实例处理一个业务,并使用一个连接池,但不限于此。例如,业务A使用实例A处理元数据,实例A使用连接池A,可在实例A中加入如下注解:
Autowired
Qualifier("jedisPoolA")
protectedJedisPooljedisPool;
其中,jedisPoolA即为连接池A,通过建立连接池与实例的对应关系,将业务进行分块处理,每个redis实例只需处理相关业务对应的元数据,减轻了服务器的压力,增加了数据处理效率。
在一个实施例中,获取模块540还包括业务获取单元、查找单元和连接获取单元。
业务获取单元,用于根据访问请求获取目标元数据所属的业务信息。
具体的,可根据客户端发送的访问请求获取目标元数据所属的业务信息,即检测客户端需要访问哪一个业务的数据,例如客户端要获取用户的账号信息,可检测出账号信息属于业务A客户信息管理,即由业务A对应的redis实例A所属的服务器进行处理。
查找单元,用于根据目标元数据所属的业务信息查找匹配的连接池。
具体的,根据预先建立的业务信息与连接池的对应关系,可查找到匹配的连接池,客户端从该连接池获取目标元数据,并进行操作。例如,客户端需要访问业务A客户信息管理的元数据,与业务A匹配的连接池为连接池A,则客户端从连接池A中获取连接,并通过该连接从redis获取目标元数据进行操作。
连接获取单元,用于从匹配的连接池中获取连接。
操作模块550包括数据获取单元和操作单元。
数据获取单元,用于通过连接从redis获取目标元数据。
操作单元,用于在与匹配的连接池对应的实例中对目标元数据进行操作。
具体的,根据预先建立的业务信息、连接池及实例的对应关系,在对应的实例中进行数据处理。例如,客户端需要对账号信息进行修改,账号信息对应业务A客户信息管理,与业务A匹配的连接池为连接池A,且连接池A与实例A对应,即可在连接池A中获取连接后,在实例A中从redis获取客户端所需的账号信息,并执行修改操作。
上述数据处理系统,通过启动redis的多个实例、建立多个连接池,并将多个实例与多个连接池关联,实现对业务的分块处理,每个redis实例只需处理相关业务对应的元数据,减轻了服务器的压力,增加了数据处理效率。
如图8所示,在另一个实施例中,上述数据处理系统,除了包括存储模块510、配置模块520、接收模块530、获取模块540、操作模块550、释放模块560、建立模块570、启动模块580和关系模块590,还包括时效模块600及判断模块610。
时效模块600,用于获取存储在redis的元数据的时效期。
具体的,存储在redis的元数据具有时效期,该时效期可为活动期间,例如某活动的活动时间为1月1日早上7点至晚上24点,则存储在redis与该活动相关的元数据的时效期为1月1日早上7点至晚上24点。
判断模块610,用于判断存储在redis的元数据是否还在时效期内,若不在时效期内,则从redis中提取元数据返回给数据库并存储。
具体的,若存储在redis的元数据不在对应的时效期内,即表示活动已结束,客户端基本不会或很少再访问元数据,可将某些更新的元数据返回数据库存储,例如与客户信息相关的元数据,在活动期间发生变更后需要返回数据库重新存储。而某些在活动过后无用的元数据,可直接删除,例如活动规则、抽奖概率等,在活动过后,这些元数据已不需要再存储,可直接从redis中删除。
活动结束后,即元数据已不在时效期内,将redis中某些更新的元数据返回数据库存储后,可删除redis存储的与该活动相关的key及对应的value值,以及相关的业务信息、连接池等的对应关系。
上述数据处理系统,当在活动期间,可将与活动相关的元数据存储在redis当中,当大量客户端进行访问时,直接从redis读取数据而不需要频繁地访问数据库,减轻数据库损耗和服务器压力,提高了数据高并发的处理能力,且在redis中建立连接池管理连接及数据操作,减轻redis被大量访问时频繁建立连接的开销,提高访问效率,缩短数据处理时间,可有效提高数据处理效率,并减少资源浪费。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种数据处理方法,其特征在于,包括以下步骤:
从数据库获取元数据,并将所述元数据存储在redis中;
建立redis连接池,并通过配置文件配置所述连接池;
接收客户端的访问请求;
根据所述访问请求从所述连接池中获取连接;
通过所述连接从redis获取相应的目标元数据并进行操作;
将操作后的目标元数据继续存储在redis中,并释放所述连接。
2.根据权利要求1所述的数据处理方法,其特征在于,所述根据所述访问请求从所述连接池中获取连接的步骤,包括:
根据所述访问请求向所述连接池请求获取连接;
判断所述连接池中是否存在空闲连接;
若存在,则分配一个空闲连接给所述客户端;
若不存在,则判断所述连接池中的当前连接数是否小于最大连接数,若是,则建立一个新的连接,并将所述新的连接分配给所述客户端,若否,则使所述客户端进入等待队列。
3.根据权利要求1或2所述的数据处理方法,其特征在于,所述方法还包括:
获取业务信息,根据所述业务信息建立多个连接池;
启动redis的多个实例;
建立所述多个连接池与所述多个实例的对应关系。
4.根据权利要求3所述的数据处理方法,其特征在于,所述根据所述访问请求从所述连接池中获取连接的步骤,包括:
根据所述访问请求获取目标元数据所属的业务信息;
根据所述目标元数据所属的业务信息查找匹配的连接池;
从所述匹配的连接池中获取连接;
所述通过所述连接从redis获取相应的目标元数据并进行操作,具体包括:
通过所述连接从redis获取目标元数据;
在与所述匹配的连接池对应的实例中对所述目标元数据进行操作。
5.根据权利要求1所述的数据处理方法,其特征在于,在所述将操作后的目标元数据继续存储在redis中,并释放所述连接的步骤之后,还包括:
获取存储在redis的元数据的时效期;
判断所述存储在redis的元数据是否还在所述时效期内,若不在时效期内,则从redis中提取元数据返回给所述数据库并存储。
6.一种数据处理系统,其特征在于,包括:
存储模块,用于从数据库获取元数据,并将所述元数据存储在redis中;
配置模块,用于建立redis连接池,并通过配置文件配置所述连接池;
接收模块,用于接收客户端的访问请求;
获取模块,用于根据所述访问请求从所述连接池中获取连接;
操作模块,用于通过所述连接从redis获取相应的目标元数据并进行操作;
释放模块,用于将操作后的目标元数据继续存储在redis中,并释放所述连接。
7.根据权利要求6所述的数据处理系统,其特征在于,所述获取模块包括:
请求单元,用于根据所述访问请求向所述连接池请求获取连接;
判断单元,用于判断所述连接池中是否存在空闲连接;
分配单元,用于当判断出所述连接池中存在空闲连接,则分配一个空闲连接给所述客户端;
所述判断单元还用于当判断出所述连接池中不存在空闲连接,则判断所述连接池中的当前连接数是否小于最大连接数;
所述分配单元还用于当判断出所述连接池中的当前连接数小于最大连接数,则建立一个新的连接,并将所述新的连接分配给所述客户端;
等待单元,用于当判断出所述连接池中的当前连接数不小于最大连接数,则使所述客户端进入等待队列。
8.根据权利要求6或7所述的数据处理系统,其特征在于,所述系统还包括:
建立模块,用于获取业务信息,根据所述业务信息建立多个连接池;
启动模块,用于启动redis的多个实例;
关系模块,用于建立所述多个连接池与所述多个实例的对应关系。
9.根据权利要求8所述的数据处理系统,其特征在于,所述获取模块包括:
业务获取单元,用于根据所述访问请求获取目标元数据所属的业务信息;
查找单元,用于根据所述目标元数据所属的业务信息查找匹配的连接池;
连接获取单元,用于从所述匹配的连接池中获取连接;
所述操作模块包括:
数据获取单元,用于通过所述连接从redis获取目标元数据;
操作单元,用于在与所述匹配的连接池对应的实例中对所述目标元数据进行操作。
10.根据权利要求6所述的数据处理系统,其特征在于,所述系统还包括:
时效模块,用于获取存储在redis的元数据的时效期;
判断模块,用于判断所述存储在redis的元数据是否还在所述时效期内,若不在时效期内,则从redis中提取元数据返回给所述数据库并存储。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610100326.0A CN105808638B (zh) | 2016-02-23 | 2016-02-23 | 数据处理方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610100326.0A CN105808638B (zh) | 2016-02-23 | 2016-02-23 | 数据处理方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105808638A true CN105808638A (zh) | 2016-07-27 |
CN105808638B CN105808638B (zh) | 2019-03-29 |
Family
ID=56466417
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610100326.0A Active CN105808638B (zh) | 2016-02-23 | 2016-02-23 | 数据处理方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105808638B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106844753A (zh) * | 2017-02-16 | 2017-06-13 | 北京天元创新科技有限公司 | 一种构建网元树组件的方法以及装置 |
CN108073684A (zh) * | 2017-11-16 | 2018-05-25 | 深圳市买买提信息科技有限公司 | 一种数据处理方法、服务器及计算机可读存储介质 |
CN108475216A (zh) * | 2016-08-03 | 2018-08-31 | 甲骨文国际公司 | 用于在多租户数据库环境中的连接的高效再利用的系统和方法 |
CN108491466A (zh) * | 2018-03-06 | 2018-09-04 | 平安科技(深圳)有限公司 | 电子装置、访问指令信息获取方法及存储介质 |
CN110009478A (zh) * | 2019-03-01 | 2019-07-12 | 百融金融信息服务股份有限公司 | 贷款授信方法及装置、存储介质、计算机设备 |
CN111870937A (zh) * | 2020-07-13 | 2020-11-03 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、模拟服务器及时效性应用 |
CN112418900A (zh) * | 2020-02-13 | 2021-02-26 | 上海哔哩哔哩科技有限公司 | 数据处理方法及计算机设备 |
CN114221964A (zh) * | 2021-12-13 | 2022-03-22 | 中国平安财产保险股份有限公司 | 一种访问请求处理方法、装置、计算机设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101876996A (zh) * | 2009-12-01 | 2010-11-03 | 广州从兴电子开发有限公司 | 一种内存数据库到文件数据库的数据同步方法及系统 |
CN102710763A (zh) * | 2012-05-29 | 2012-10-03 | 新华网股份有限公司 | 一种分布式缓存池化、分片及故障转移的方法及系统 |
CN102945251A (zh) * | 2012-10-12 | 2013-02-27 | 浪潮电子信息产业股份有限公司 | 一种利用内存数据库技术优化磁盘数据库性能的方法 |
CN103365929A (zh) * | 2012-04-10 | 2013-10-23 | 阿里巴巴集团控股有限公司 | 一种数据库连接的管理方法及系统 |
CN104657502A (zh) * | 2015-03-12 | 2015-05-27 | 浪潮集团有限公司 | 基于Hadoop对海量数据进行实时统计的系统和方法 |
-
2016
- 2016-02-23 CN CN201610100326.0A patent/CN105808638B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101876996A (zh) * | 2009-12-01 | 2010-11-03 | 广州从兴电子开发有限公司 | 一种内存数据库到文件数据库的数据同步方法及系统 |
CN103365929A (zh) * | 2012-04-10 | 2013-10-23 | 阿里巴巴集团控股有限公司 | 一种数据库连接的管理方法及系统 |
CN102710763A (zh) * | 2012-05-29 | 2012-10-03 | 新华网股份有限公司 | 一种分布式缓存池化、分片及故障转移的方法及系统 |
CN102945251A (zh) * | 2012-10-12 | 2013-02-27 | 浪潮电子信息产业股份有限公司 | 一种利用内存数据库技术优化磁盘数据库性能的方法 |
CN104657502A (zh) * | 2015-03-12 | 2015-05-27 | 浪潮集团有限公司 | 基于Hadoop对海量数据进行实时统计的系统和方法 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108475216B (zh) * | 2016-08-03 | 2022-07-22 | 甲骨文国际公司 | 用于在多租户数据库环境中的连接的高效再利用的系统和方法 |
CN108475216A (zh) * | 2016-08-03 | 2018-08-31 | 甲骨文国际公司 | 用于在多租户数据库环境中的连接的高效再利用的系统和方法 |
CN106844753B (zh) * | 2017-02-16 | 2019-12-20 | 北京天元创新科技有限公司 | 一种构建网元树组件的方法以及装置 |
CN106844753A (zh) * | 2017-02-16 | 2017-06-13 | 北京天元创新科技有限公司 | 一种构建网元树组件的方法以及装置 |
CN108073684A (zh) * | 2017-11-16 | 2018-05-25 | 深圳市买买提信息科技有限公司 | 一种数据处理方法、服务器及计算机可读存储介质 |
CN108491466A (zh) * | 2018-03-06 | 2018-09-04 | 平安科技(深圳)有限公司 | 电子装置、访问指令信息获取方法及存储介质 |
CN108491466B (zh) * | 2018-03-06 | 2022-08-30 | 平安科技(深圳)有限公司 | 电子装置、访问指令信息获取方法及存储介质 |
CN110009478A (zh) * | 2019-03-01 | 2019-07-12 | 百融金融信息服务股份有限公司 | 贷款授信方法及装置、存储介质、计算机设备 |
CN112418900A (zh) * | 2020-02-13 | 2021-02-26 | 上海哔哩哔哩科技有限公司 | 数据处理方法及计算机设备 |
CN111870937A (zh) * | 2020-07-13 | 2020-11-03 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、模拟服务器及时效性应用 |
CN111870937B (zh) * | 2020-07-13 | 2021-10-22 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、模拟服务器及时效性应用 |
CN114221964A (zh) * | 2021-12-13 | 2022-03-22 | 中国平安财产保险股份有限公司 | 一种访问请求处理方法、装置、计算机设备及存储介质 |
CN114221964B (zh) * | 2021-12-13 | 2023-10-03 | 中国平安财产保险股份有限公司 | 一种访问请求处理方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105808638B (zh) | 2019-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105808638A (zh) | 数据处理方法和系统 | |
CN107943841B (zh) | 流式数据处理方法、系统和计算机可读存储介质 | |
CN110096336B (zh) | 数据监控方法、装置、设备和介质 | |
US20150317246A1 (en) | Memory Reclamation Method and Apparatus | |
CN111460236A (zh) | 基于数据湖的大数据采集治理快速检索系统 | |
JP2002132742A (ja) | サービス実行方法および装置 | |
CN112486913B (zh) | 一种基于集群环境下的日志异步存储方法和设备 | |
CN103761275A (zh) | 一种分布式文件系统中元数据的管理方法 | |
CN106445414A (zh) | 终端设备可用存储空间扩展方法和系统 | |
CN105554121A (zh) | 实现分布式缓存系统负载均衡的方法及系统 | |
CN103378919A (zh) | 一种fi消息的传输方法及装置 | |
CN102609421A (zh) | 数据查询方法及装置 | |
CN104899274A (zh) | 一种内存数据库高效远程访问方法 | |
CN103885990A (zh) | 搜索方法及系统 | |
CN109787884B (zh) | 一种消息推送方法和装置 | |
CN109933609A (zh) | 一种批量生成id的方法及终端 | |
CN110740155B (zh) | 分布式系统中的请求处理方法及装置 | |
CN102411631A (zh) | 一种嵌入式浏览器磁盘缓存的方法 | |
CN103377292B (zh) | 数据库结果集缓存方法及设备 | |
CN103294494A (zh) | 一种虚拟系统自动化部署的方法和系统 | |
CN102724301B (zh) | 云数据库系统以及云数据读写处理方法、设备 | |
CN100451974C (zh) | 会话表管理方法及装置 | |
CN110689386B (zh) | 一种电子票据开具方法及系统 | |
US20110035748A1 (en) | Data processing method, data processing program, and data processing system | |
CN102831017A (zh) | 一种高效分布式并行鉴权系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |