可以用来做分布式限流操作。
我们在redis中存储一个数据为3
@Autowired
RedissonClient redissonClient;
@Autowired
StringRedisTemplate redisTemplate;
//信号量测试
//停车
@GetMapping("/park")
@ResponseBody
public String park() throws InterruptedException {
RSemaphore park = redissonClient.getSemaphore("park");//获取信号量
park.acquire();//获取
return "OK";
}
@GetMapping("/go")
@ResponseBody
public String go() {
RSemaphore park = redissonClient.getSemaphore("park");//获取信号量
park.release();//释放
return "OK";
}
boolean b = park.tryAcquire();是尝试获取一个信号量,如果获取到了,操作业务。获取不到,操作业务。
park.acquire();是强制获取,如果获取不到就等待
标签:信号量,redissonClient,park,---,获取,75,分布式
From: https://www.cnblogs.com/morehair/p/17084084.html