第一段:?redis分布式锁原理
并发 到Redis里变成了串行排队,单线程
第二段:基于Redis的Setnx实现分布式锁?
①.、pom
<dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-data-redisartifactId> dependency>
package com.example.distributelock.controller; import com.example.distributelock.lock.RedisLock; import com.example.distributelock.lock.ZkLock; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @Slf4j public class RedisLockController { private RedisTemplate redisTemplate; @RequestMapping("redisLock") public String redisLock(){ log.info("我进入了方法!"); try (RedisLock redisLock = new RedisLock(redisTemplate,"redisKey",30)){ if (redisLock.getLock()) { log.info("我进入了锁!!"); Thread.sleep(15000); } catch (InterruptedException e) { } catch (Exception e) { log.info("方法执行完成"); return "方法执行完成"; @RequestMapping("zkLock") public String zkLock(){ log.info("我进入了方法!"); try (ZkLock zkLock = new ZkLock("localhost:2181","order")){ if (zkLock.getLock()) { log.info("我进入了锁!!"); Thread.sleep(15000); } catch (InterruptedException e) { } catch (Exception e) { log.info("方法执行完成"); return "方法执行完成"; } }
View Code
以上就是土嘎嘎小编为大家整理的基于Redis的Setnx实现分布式锁相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!