CN106874098A - 基于redis实现的高并发临界资源处理方法及系统 - Google Patents
基于redis实现的高并发临界资源处理方法及系统 Download PDFInfo
- Publication number
- CN106874098A CN106874098A CN201710121306.6A CN201710121306A CN106874098A CN 106874098 A CN106874098 A CN 106874098A CN 201710121306 A CN201710121306 A CN 201710121306A CN 106874098 A CN106874098 A CN 106874098A
- Authority
- CN
- China
- Prior art keywords
- critical resource
- redis
- access
- thread
- key assignments
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Abstract
本发明提供了一种基于redis实现的高并发临界资源处理方法及系统,包括步骤1:redis的消息队列接收到多线程访问临界资源的请求;步骤2:在执行第一个访问请求时,为待访问的临界资源创建一个redis键值;步骤3:通过redis键值的访问计数判断临界资源是否被访问成功,若已经有任一个线程访问成功,则退回其余线程,并结束流程。本发明能够解决高并发时系统临界资源的并发访问问题,既不影响高并发时的性能,也不会产生死锁,实现高并发下临界资源的高效处理。
Description
技术领域
本发明涉及互联网临界资源处理技术领域,具体地,涉及基于redis实现的高并发临界资源处理方法及系统。
背景技术
在互联网大用户高并发的情况下,对于某些临界节点,为了避免并发的影响,通常会使用加锁等机制,来保护临界资源,避免多线程并发异常。
加锁本身也是一种常见的技术,缺点是当一个线程获取到锁之后,其他线程只能等待,直到释放锁,其他线程才能继续执行。在高并发情况下,对系统效率有很大的影响,并且因为锁的存在,可能会导致系统死锁的发生。另外,对于大容量的系统,通常会通过负载均衡来做服务器的水平扩展从而增加服务器的容量,在这种情况下,即使加锁也无法处理多个服务器之间的并发问题。
redis是一个高性能的内存数据库。redis使用单进程单线程模式,可以保证并发顺序。内存数据库,所有操作通过内存直接处理,效率极高,每秒可以处理高达800-1000万个请求,并支持分布式集群配置。利用redis的这个特点,可以轻松处理高并发情况下的临界资源问题。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种基于redis实现的高并发临界资源处理方法及系统。
根据本发明提供的基于redis实现的高并发临界资源处理方法,包括如下步骤:
步骤1:redis的消息队列接收到多线程访问临界资源的请求;
步骤2:在执行第一个访问请求时,为待访问的临界资源创建一个redis键值;
步骤3:通过redis键值的访问计数判断临界资源是否被访问成功,若已经有任一个线程访问成功,则退回其余线程,并结束流程。
优选地,所述步骤3包括:判断redis键值的访问计数,若访问计数为0时,则允许访问临界资源,并将访问计数自增1;若访问计数大于0,则认为某线程获取了所述临界资源的访问,结束流程。
根据本发明提供的基于redis实现的高并发临界资源处理系统,包括:
请求接收模块:通过redis的消息队列接收到多线程访问临界资源的请求;
redis键值创建模块:用于在执行第一个访问请求时,为待访问的临界资源创建一个redis键值;
访问结果判别模块:通过redis键值的访问计数判断临界资源是否被访问成功,若已经有任一个线程访问成功,则退回其余线程。
优选地,所述访问结果判别模块用于判断redis键值的访问计数,若访问计数为0时,则允许访问临界资源,并将访问计数自增1;若访问计数大于0,则认为某线程获取了所述临界资源的访问。
与现有技术相比,本发明具有如下的有益效果:
本发明提供的基于redis实现的高并发临界资源处理方法及系统,能够解决高并发时系统临界资源的并发访问问题,既不影响高并发时的性能,也不会产生死锁,实现高并发下临界资源的高效处理。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明提供的基于redis实现的高并发临界资源处理方法的流程图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
根据本发明提供的基于redis实现的高并发临界资源处理方法,包括如下步骤:
步骤1:当多线程访问临界资源的时候,系统会将多线程请求发送给redis的消息队列;
步骤2:Redis会按顺序,依次取出消息开始执行;
步骤3:当第一个请求执行时,创建一个临界资源的redis键值;
步骤4:判断步骤3中的redis键值的访问计数,当访问计数为0时,则允许访问临界资源,并将访问计数自增1;当访问计数的值大于0时,则认为某线程获取了所述临界资源的访问,结束流程。其他线程直接返回即可。
利用redis的这个特点,无需加锁,即可高效解决高并发下的临界资源并发问题。
下面结合具体实施例对本发明中的技术方案做更加详细的说明。
多线程请求,调用redis方法,执行对临界资源的访问。这些请求会依次会发送给redis消息队列。Redis处理进程按顺序依次取出消息执行。执行时,第一个请求首先为临界资源创建一个键值。然后个线程会判断该键值的访问计数,当访问计数为0时,则线程正常执行,并将访问计数+1.如果访问计数大于1,则表明已经有线程获取了此临界资源的访问,线程直接返回即可。
本发明还提供了基于redis实现的高并发临界资源处理系统,包括:
请求接收模块:通过redis的消息队列接收到多线程访问临界资源的请求;
redis键值创建模块:用于在执行第一个访问请求时,为待访问的临界资源创建一个redis键值;
访问结果判别模块:通过redis键值的访问计数判断临界资源是否被访问成功,若已经有任一个线程访问成功,则退回其余线程。
所述访问结果判别模块用于判断redis键值的访问计数,若访问计数为0时,则允许访问临界资源,并将访问计数自增1;若访问计数大于0,则认为某线程获取了所述临界资源的访问。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (4)
1.一种基于redis实现的高并发临界资源处理方法,其特征在于,包括如下步骤:
步骤1:redis的消息队列接收到多线程访问临界资源的请求;
步骤2:在执行第一个访问请求时,为待访问的临界资源创建一个redis键值;
步骤3:通过redis键值的访问计数判断临界资源是否被访问成功,若已经有任一个线程访问成功,则退回其余线程,并结束流程。
2.根据权利要求1所述的基于redis实现的高并发临界资源处理方法,其特征在于,所述步骤3包括:判断redis键值的访问计数,若访问计数为0时,则允许访问临界资源,并将访问计数自增1;若访问计数大于0,则认为某线程获取了所述临界资源的访问,结束流程。
3.一种基于redis实现的高并发临界资源处理系统,其特征在于,包括:
请求接收模块:通过redis的消息队列接收到多线程访问临界资源的请求;
redis键值创建模块:用于在执行第一个访问请求时,为待访问的临界资源创建一个redis键值;
访问结果判别模块:通过redis键值的访问计数判断临界资源是否被访问成功,若已经有任一个线程访问成功,则退回其余线程。
4.根据权利要求3所述的基于redis实现的高并发临界资源处理系统,其特征在于,所述访问结果判别模块用于判断redis键值的访问计数,若访问计数为0时,则允许访问临界资源,并将访问计数自增1;若访问计数大于0,则认为某线程获取了所述临界资源的访问。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710121306.6A CN106874098A (zh) | 2017-03-02 | 2017-03-02 | 基于redis实现的高并发临界资源处理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710121306.6A CN106874098A (zh) | 2017-03-02 | 2017-03-02 | 基于redis实现的高并发临界资源处理方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106874098A true CN106874098A (zh) | 2017-06-20 |
Family
ID=59169288
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710121306.6A Pending CN106874098A (zh) | 2017-03-02 | 2017-03-02 | 基于redis实现的高并发临界资源处理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106874098A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040045002A1 (en) * | 2000-10-05 | 2004-03-04 | Ricardo Berger | Method system and apparatus for multiprocessing |
CN101051281A (zh) * | 2007-05-16 | 2007-10-10 | 杭州华三通信技术有限公司 | 多cpu对临界资源进行互斥访问的方法和装置 |
CN102999378A (zh) * | 2012-12-03 | 2013-03-27 | 中国科学院软件研究所 | 一种读写锁实现方法 |
-
2017
- 2017-03-02 CN CN201710121306.6A patent/CN106874098A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040045002A1 (en) * | 2000-10-05 | 2004-03-04 | Ricardo Berger | Method system and apparatus for multiprocessing |
CN101051281A (zh) * | 2007-05-16 | 2007-10-10 | 杭州华三通信技术有限公司 | 多cpu对临界资源进行互斥访问的方法和装置 |
CN102999378A (zh) * | 2012-12-03 | 2013-03-27 | 中国科学院软件研究所 | 一种读写锁实现方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8930584B2 (en) | System and method for providing a linearizable request manager | |
CN106537863A (zh) | 网络设备中的处理并发性 | |
US20160335135A1 (en) | Method for minimizing lock contention among threads when tasks are distributed in multithreaded system and appratus using the same | |
Ravichandran et al. | Work stealing for multi-core hpc clusters | |
US7444634B2 (en) | Method and apparatus for providing dynamic locks for global resources | |
JP6759285B2 (ja) | ローカライズされたデータアフィニティシステム及びハイブリッド法 | |
JP6859518B2 (ja) | サーバへの攻撃を防ぐ方法及びデバイス | |
CN104219235A (zh) | 一种分布式交易请求方法及装置 | |
US20140279987A1 (en) | Workflow design for long-running distributed operations using no sql databases | |
US8108867B2 (en) | Preserving hardware thread cache affinity via procrastination | |
Oortwijn et al. | Distributed binary decision diagrams for symbolic reachability | |
JP6283376B2 (ja) | クラスタにおけるワークシェアリング多重化をサポートするためのシステムおよび方法 | |
US7516151B2 (en) | Parallel traversal of a dynamic list | |
CN106874098A (zh) | 基于redis实现的高并发临界资源处理方法及系统 | |
CN111008146A (zh) | 对云主机安全进行测试的方法及系统 | |
CN116662426A (zh) | 数据库连接的建立方法、装置、设备及介质 | |
US7539678B2 (en) | Systems and methods for controlling access to an object | |
CN113961364A (zh) | 一种大规模锁系统实现方法、装置、存储介质和服务器 | |
US20060136636A1 (en) | System and method for resolving conflicts of re-locking resources | |
CN112541041A (zh) | 一种数据处理方法、装置、服务器及存储介质 | |
CN112019343A (zh) | 一种OpenStack令牌优化方法及系统 | |
CN110968595A (zh) | 一种单线程sql语句执行方法、设备及存储介质 | |
Ong et al. | A parallel bloom filter string searching algorithm on a many-core processor | |
JP6412888B2 (ja) | ミドルウェアマシン環境において協働的同時並行性をサポートするためのシステムおよび方法 | |
Geetha et al. | Deadlock elimination of AND model requests in distributed systems |
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: 20170620 |
|
RJ01 | Rejection of invention patent application after publication |