RedisTool.java 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package org.springblade.common.utils;
  2. import org.slf4j.Logger;
  3. import org.slf4j.LoggerFactory;
  4. import org.springframework.data.redis.core.RedisTemplate;
  5. import org.springframework.stereotype.Component;
  6. import javax.annotation.Resource;
  7. import java.util.concurrent.TimeUnit;
  8. /**
  9. * 第一种分布式锁
  10. */
  11. @Component
  12. public class RedisTool {
  13. @Resource
  14. RedisTemplate redisTemplate;
  15. private final Logger log = LoggerFactory.getLogger(this.getClass());
  16. // 获取锁之前的超时时间(获取锁的等待重试时间)
  17. private long acquireTimeout = 20000;
  18. // 获取锁之后的超时时间(防止死锁)
  19. private int timeOut = 60*10;
  20. /**
  21. * 获取分布式锁
  22. * @return 锁标识
  23. */
  24. public boolean getRedisLock(String lockName, String val) {
  25. Boolean b = redisTemplate.opsForValue().setIfAbsent(lockName, val, timeOut, TimeUnit.SECONDS);
  26. if(b){
  27. return true;
  28. }else{
  29. log.info("lock err!");
  30. }
  31. return false;
  32. }
  33. /**
  34. * 释放分布式锁
  35. * @param lockName 锁名称
  36. */
  37. public void unRedisLock(String lockName) {
  38. redisTemplate.delete(lockName);
  39. log.info("releaseLock success!");
  40. }
  41. }