Redis分布式锁
* 分布锁满足两个条件,一个是加有效时间的锁,一个是高性能解锁
* 采用redis命令setnx(set if not exist)、setex(set expire value)实现
* 【千万记住】解锁流程不能遗漏,否则导致任务执行一次就永不过期
* 将加锁代码和任务逻辑放在try,catch代码块,将解锁流程放在finallypackage com.concurrent.schedule;
import com.concurrent.util.IpUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.management.MalformedObjectNameException;
import java.util.concurrent.TimeUnit;
/**
* Created by zhangjiawen on 2019/8/13.
*/
@Component
public class RedisSchedule {
private Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
private StringRedisTemplate redisTemplate;
private static final String publicKey="CommonKey";
Boolean lock=false;
@Scheduled(cron="*/5 * * * * *")
public void setNx() {
System.out.println("TimeUnit.SECONDS"+TimeUnit.SECONDS);
try {
String ipConfig=IpUtil.getIp() + ":" + IpUtil.getPort();
lock= redisTemplate.o