SpringBoot 集成Redis 对需要自增操作(increment)的key设置过期时间

方式一

@Autowired
private StringRedisTemplate stringRedisTemplate;

public String getNumber(String key) {
    ValueOperations<String, String> forValue = stringRedisTemplate.opsForValue();
    if (stringRedisTemplate.hasKey(key)) {
        Long increment = forValue.increment(key);
        return increment.toString();
    } else {
        RedisAtomicLong redisAtomicLong = new RedisAtomicLong(key, stringRedisTemplate.getConnectionFactory());
        //设置初值
        redisAtomicLong.set(0);
        //多久之后过期.设置10s后过期
        redisAtomicLong.expire(10, TimeUnit.SECONDS);
        //设置到什么时间过期.例:当前时间的60s后过期
        //redisAtomicLong.expireAt(new Date(System.currentTimeMillis() + 60 * 1000))
        Long increment = forValue.increment(key);
        return increment.toString();
    }
}

方式二

@Autowired
private StringRedisTemplate stringRedisTemplate;

public String getNumber(String key) {
    ValueOperations<String, String> forValue = stringRedisTemplate.opsForValue();
    if (stringRedisTemplate.hasKey(key)) {
        Long increment = forValue.increment(key);
        return increment.toString();
    } else {
    	//设置初值
        forValue.set(key,"10");
        BoundGeoOperations<String, String> ops = stringRedisTemplate.boundGeoOps(key);
        //多久之后过期.设置10s后过期
        ops.expire(10, TimeUnit.SECONDS);
        //设置到什么时间过期.例:当前时间的60s后过期
        //ops.expireAt(new Date(System.currentTimeMillis() + 60 * 1000));
        Long increment = forValue.increment(key);
        return increment.toString();
    }
}
posted @ 2022-03-07 18:03  叕叕666  阅读(406)  评论(0)    收藏  举报