Springboot集成redis的坑

2019-07-16  本文已影响0人  young十三

一、问题

1、使用redis工具类方法

    /**
     * 插入普通数据的同时设置过期时间
     *
     * @param key   数据的键
     * @param value 数据的值
     * @param time  数据的过期时间
     */
    public boolean set(String key, Object value, long time) {
        boolean setResult = false;
        try {
            if (key == null) {
                logger.error("插入值出错: 键为空");
            } else if (value == null) {
                logger.error("插入值出错: 值为空");
            } else if (time <= 0) {
                logger.error("插入值出错: 有效期小于0");
            } else {
                this.redisTemplate.opsForValue().set(key, value, time);
                setResult = true;
            }
        } catch (Exception e) {
            logger.error("插入值出错:" + key, e);
        }
        return setResult;
    }

2、在执行if语句代码时和预期相反

String smsLoginCode = redisService.get(redisKey) + "";

if (!verifyCode.equals(smsLoginCode)){
      return ResultResponse.getResultInfo(ResultEnum.ILLEGAL_VERITY_CODE);
}

debug发现smsLoginCode 发现有很多空格

二、方案

1、原因

this.redisTemplate.opsForValue()使用了第三个set方法,意思是将value从指定的位置开始覆盖原有的值。如果指定的开始位置大于字符串长度,先补空格在追加。

void set(K var1, V var2);
void set(K var1, V var2, long var3, TimeUnit var5);
void set(K var1, V var2, long var3);

2、修改方法

     /**
     * 插入普通数据的同时设置过期时间
     *
     * @param key   数据的键
     * @param value 数据的值
     * @param time  数据的过期时间
     */
    public boolean set(String key, Object value, long time) {
        boolean setResult = false;
        try {
            if (key == null) {
                logger.error("插入值出错: 键为空");
            } else if (value == null) {
                logger.error("插入值出错: 值为空");
            } else if (time <= 0) {
                logger.error("插入值出错: 有效期小于0");
            } else {
                //修改
                this.redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);
                setResult = true;
            }
        } catch (Exception e) {
            logger.error("插入值出错:" + key, e);
        }
        return setResult;
    }

纸上得来终觉浅,绝知此事要躬行。

上一篇下一篇

猜你喜欢

热点阅读