一、Redis工具类
import org.springframework.data.redis.core.RedisCallback;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Set;
import java.util.concurrent.TimeUnit;
@Service
public class RedisUtils {
@Resource
private RedisTemplate<String, Object> redisTemplate;
public Long pushToList(String key, String value) {
return redisTemplate.opsForList().leftPush(key, value);
}
public void putValue(String key, Object value) {
redisTemplate.opsForValue().set(key, value);
}
public void putValue(String key, Object value, long time) {
redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);
}
public Object getValue(String key) {
return redisTemplate.opsForValue().get(key);
}
public void expire(String key, long time) {
redisTemplate.expire(key, time, TimeUnit.SECONDS);
}
public void remove(String key) {
redisTemplate.delete(key);
}
public void removeByKeys(String keys) {
Set<String> keysSet = redisTemplate.keys(keys);
if (keysSet != null) {
redisTemplate.delete(keysSet);
}
}
public Long incrId(final String key) {
return (Long) redisTemplate.execute((RedisCallback<Long>) connection -> {
RedisSerializer<String> serializer = redisTemplate.getStringSerializer();
byte[] keys = serializer.serialize("sequence:id_" + key);
if (keys != null) {
return connection.incr(keys);
} else {
return 0L;
}
});
}
public Boolean setIfAbsent(String lockKey, Object value) {
return redisTemplate.opsForValue().setIfAbsent(lockKey, value);
}
public Boolean setIfAbsent(String lockKey, Object value, long time) {
return redisTemplate.opsForValue().setIfAbsent(lockKey, value, time, TimeUnit.SECONDS);
}
}
二、实际应用:
Boolean aBoolean = redisUtils.setIfAbsent(key,value,60);
if(aBoolean){
业务逻辑.....
}