SpringBoot整合Redis实现缓存操作

一、首先添加maven依赖
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-redis</artifactId>
            <version>1.4.7.RELEASE</version>
        </dependency>
二、在spring boot application properties文件中添加配置
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.password=
spring.redis.timeout=10000
spring.redis.pool.max-idle=8
spring.redis.pool.min-idle=0
spring.redis.pool.max-active=8
spring.redis.pool.max-wait=-1
三、写一个Redis公共的操作类

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.data.redis.serializer.SerializationException;
import org.springframework.stereotype.Service;

@Service
public class RedisUtil {

    private static final String REDIS_KEY = "test";

    @Autowired
    private RedisTemplate redisTemplate;

    /**
     * 通过redisTemplate实现ValueOperations接口,调用其set方法
     * 实现redis添加键值对
     * @param key
     * @param value
     */
    public void setKeyValue(String key, Object value) {
        ValueOperations<String, Object> valueOperations = redisTemplate.opsForValue();
        valueOperations.set(getKey(key), value);
    }

    /**
     * 通过redisTemplate实现ValueOperations接口,调用其get方法
     * 根据key查询数据
     * @param key
     * @return
     */
    public Object getValue(String key) {
        ValueOperations<String, Object> valueOperations = redisTemplate.opsForValue();
        return valueOperations.get(getKey(key));
    }

    /**
     * 通过redisTemplate的delete
     * 根据key删除redis中的键值对
     * @param key
     */
    public void delValue(String key) {
        redisTemplate.delete(getKey(key));
    }

    /**
     * 判断redis是否存在key
     *
     * @param key
     * @return
     */
    public boolean exists(final String key) {
        Object object = getValue(getKey(key));
        if (object != null) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 调用该方法生成key
     *
     * @param keys
     * @return
     */
    public String getKeys(Object... keys) {
        StringBuilder sb = new StringBuilder();
        for (Object source: keys){
            sb.append(source);
            sb.append(":");
        }
        sb.deleteCharAt(sb.length() - 1);
        return sb.toString();
    }

    /**
     * 每个系统设置自定义的redisKey
     * 避免key重复,如:多个系统相同的用户都是用同一个redis缓存
     * 在多在PC调用的时候就会出现序列化不一致
     * @param keys
     * @return
     */
    private String getKey(Object... keys) {
        StringBuilder sb = new StringBuilder(REDIS_KEY);
        for (Object source : keys) {
            sb.append(source);
            sb.append(":");
        }
        sb.deleteCharAt(sb.length() - 1);
        return sb.toString();
    }
}

猜你喜欢

转载自blog.csdn.net/m0_37845840/article/details/80053026
今日推荐