利用redis生成唯一编号

参考: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;
        }
    }




}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值