CN106874098A - 基于redis实现的高并发临界资源处理方法及系统 - Google Patents

基于redis实现的高并发临界资源处理方法及系统 Download PDF

Info

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
Application number
CN201710121306.6A
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.)
Shanghai Shinian Information Technology Co Ltd
Original Assignee
Shanghai Shinian Information 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 Shanghai Shinian Information Technology Co Ltd filed Critical Shanghai Shinian Information Technology Co Ltd
Priority to CN201710121306.6A priority Critical patent/CN106874098A/zh
Publication of CN106874098A publication Critical patent/CN106874098A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task 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是一个高性能的内存数据库。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,则认为某线程获取了所述临界资源的访问。
CN201710121306.6A 2017-03-02 2017-03-02 基于redis实现的高并发临界资源处理方法及系统 Pending CN106874098A (zh)

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)

* Cited by examiner, † Cited by third party
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 中国科学院软件研究所 一种读写锁实现方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
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