参考:https://blog.csdn.net/weixin_42171657/article/details/81455346
/**
* 创建者: apple
* 创建时间:2019/9/5.
* 功能模块:
*/
@Service
public class RedisUtils extends RedisService {
@Autowired
private RedisTemplate<String, String> redisTemplate;
@Autowired
private RedisTemplate<Object, Object> redisTemplateObject;
/**
* 递增
* @param key 键
* @param delta 要增加几(大于0)
* @return
*/
public long incr(String key, long delta) {
if (delta < 0) {
throw new RuntimeException("递增因子必须大于0");
}
return redisTemplate.opsForValue().increment(key, delta);
}
//设置-有超时时间
public String getNo(String key,int length){
if(notHasKey(key)){
this.set(key, "1");
expire(key,24 * 60 * 60L);
return autoFill("1",length);
}else{
return autoFill(String.valueOf(incr(key,1L)),length);
}
}
//设置-没有超时时间
public String getNoWithOutExpire(String key,int length){
if(notHasKey(key)){
//新增key-value
this.set(key, "1");
return autoFill("1",length);
}else{
return autoFill(String.valueOf(incr(key,1L)),length);
}
}
/**
* 自动补全x位数自增序列
*/
public static String autoFill(String v,int fillLength) {
int length = v.length();
if (length >= fillLength) {
return v;
}
int rest = fillLength - length;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < rest; i++) {
sb.append('0');
}
sb.append(v);
return sb.toString();
}
/**
* 判断key是否存在
* @param key 键
* @return true 存在 false不存在
*/
public boolean notHasKey(String key) {
try {
return !redisTemplate.hasKey(key);
} catch (Exception e) {
return false;
}
}
}