当前位置: 首页 > 科技观察

Redisson分布式锁源码十一:Semaphore和CountDownLatch_0

时间:2023-03-15 14:07:05 科技观察

前言Redisson除了提供分布式锁,还提供了额外的同步组件,Semaphore和CountDownLatch。1.信号量是指在分布式场景下,只有3个凭证,也就意味着只会有3个线程同时执行业务。设置凭证参数列表:KEYS[1]:指定key在这里调用semaphoreKEYS[2]:redisson_sc:{semaphore}ARGV[1]:凭证编号3这个lua脚本比较简单,直接设置一个key的值to3.获取凭证参数列表:KEYS[1]:这里指定的key称为semaphoreARGV[1]:获取凭证的个数,默认为1。这个lua脚本是:获取key的值semaphoreif值大于等于1(获取Number的凭证),自减成功返回1,失败返回0。如果凭证获取成功,则直接返回。如果未获得凭据,它会旋转并等待。释放凭据释放凭据并自动增加Redis键的值。2、CountDownLatch输出如下:源码分析和设置latch个数类似。减少锁存器的数量会减小该值。而latch.await()就是自旋获取latch的值直到为0,然后继续执行。3.总结Redisson实现分布式Semaphore和CountDownLatch的基本内容是一样的,只是在Redis中维护一个公共变量,然后进行原子更新。本文转载自微信公众号“程序员小航”,可通过以下二维码关注。转载本文请联系程序员小航公众号。