Golang基于redis实现的分布式信号量(semaphore)

前言:

    Semaphore是信号量,作用? 我想大家都知道。semaphore跟mutex的区别我想大家也知道了,我这里就不老生常谈,重复讲解了,有兴趣的朋友可以自行google相关的同步锁文章。

该文章后续会有更新, 原文地址, http://xiaorui.cc/?p=4822

像semaphore,mutex 可以支持多线程,也可以是多进程。但如果是在分布式集群环境想实现类似 semaphore的东西怎么做?  我们可以借助redis来实现,  我这里用了redis的hash、list、string实现的网络信号量。 利用redis hash存token的时间,list用来实现堵塞及非阻塞模式,利用redis string的setnx来实现分布式锁,锁的目的是用来原子性写一致。

该项目是使用golang写的,再具体代码就不详细描述了,有兴趣的可以直接看代码。

github的项目地址:

https://github.com/rfyiamcool/go_redis_semaphore

用法:

具体例子:

END.