redis封装常用方法 --不定期添加

Springboot集成Redis参考:https://blog.csdn.net/k15014428090/article/details/90377091

 

封装一个RedisUtils工具类:

注入StringRedisTemplate

@Autowired
private StringRedisTemplate redisTemplate;

根据key存缓存

/**
 *根据key - value插入缓存
 * @param key: 具体的key
 * @param value: 具体的值
 * @param time: 缓存过期时间
 * @param timeUnit: 缓存过期时间单位  例如天  TimeUnit.DAYS
 * */
public void setKey(String key, Object value, Long time, TimeUnit timeUnit){
    redisTemplate.opsForValue().set(key, value.toString(), time, timeUnit);
}

取缓存:

/**
 *根据key获取缓存
 * */
public String getKey(String key){
    return redisTemplate.opsForValue().get(key);
}
/**
 * 判断key是否存在
 * */
public boolean exitst(String key){
    return redisTemplate.hasKey(key);
}


/**
 * 根据key删除
 * */
public void remove(String key){
    if (exitst(key)){
        redisTemplate.delete(key);
    }
}

缓存value增加,适用于做统计用户浏览量,

/**
 * 缓存value自增
 * */
public Long increment(String key, Long num){
    return redisTemplate.opsForValue().increment(key, num);
}

利用redis去重:

/**
 *
 */
public void setBitmap(String key, Long uid) {
    redisTemplate.execute(new RedisCallback() {
        @Override
        public Boolean doInRedis(RedisConnection connection) throws DataAccessException {
            connection.setBit(((RedisSerializer) redisTemplate.getKeySerializer()).serialize(key), uid,
                    true);
            return true;
        }
    });
    redisTemplate.expire(key, 7, TimeUnit.DAYS);
}


/**
 * 统计
 */
public Long bitCount(String key) {
    return redisTemplate.execute(new RedisCallback() {
        @Override
        public Long doInRedis(RedisConnection connection) throws DataAccessException {
            return connection.bitCount(((RedisSerializer) redisTemplate.getKeySerializer()).serialize(key));
        }
    });
}

利用redis对key加锁

/**
 * 加锁操作
 */
public boolean tryLock(String key) {
    return redisTemplate.opsForValue().setIfAbsent(key, key);
}


/**
 * 加锁并设置过期时间 - 避免出现锁不释放情况
 */
public boolean tryLock(String key, Long time, TimeUnit unit) {
    return redisTemplate.opsForValue().setIfAbsent(key, key, time, unit);
}


/**
 * 释放锁服务
 */
public void unLock(String key) {
    redisTemplate.delete(key);
}

 

 

你可能感兴趣的:(redis)