SpringBoot集成Redis

2025-11-03 14:56:32

1、Maven依赖引入:

<dependency>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-data-redis</artifactId>

</dependency>

2、首先在你的SpringBoot工程中找到你的 application.properties 文件。

向里面添加如下配置:

#-------------------------------------Redis配置信息start----------------------#指定几号数据库spring.redis.database = 0#Redis服务器地址spring.redis.host = localhost#Redis服务器连接端口spring.redis.port = 6379# Redis服务器连接密码(默认为空)spring.redis.password = # 连接超时时间(毫秒)spring.redis.timeout = 5000# 连接池最大连接数(使用负值表示没有限制)spring.redis.jedis.pool.max-active=600# 连接池最大阻塞等待时间(使用负值表示没有限制)spring.redis.jedis.pool.max-wait=1000# 连接池中的最大空闲连接spring.redis.jedis.pool.max-idle=8# 连接池中的最小空闲连接spring.redis.jedis.pool.min-idle=0#-------------------------------------Redis配置信息end----------------------

SpringBoot集成Redis

3、然后写一个RedisUtils的工具类,网上很多粘一个就行,这里我只是简单的放了几个方法。

@Componentpublic class RedisUtils {    @Resource    private RedisTemplate<String, String> redisTemplate;    /**     * 指定缓存失效时间     *     * @param key  键     * @param time 时间(秒)     * @return     */    public boolean expire(String key, long time) {        try {            if (time > 0) {                redisTemplate.expire(key, time, TimeUnit.SECONDS);            }            return true;        } catch (Exception e) {            e.printStackTrace();            return false;        }    }    /**     * 根据key 获取过期时间     *     * @param key 键 不能为null     * @return 时间(秒) 返回0代表为永久有效     */    public long getExpire(String key) {        return redisTemplate.getExpire(key, TimeUnit.SECONDS);    }    /**     * 判断key是否存在     *     * @param key 键     * @return true 存在 false不存在     */    public boolean hasKey(String key) {        try {            return redisTemplate.hasKey(key);        } catch (Exception e) {            e.printStackTrace();            return false;        }    }    /**     * 删除缓存     *     * @param key 可以传一个值 或多个     */    @SuppressWarnings("unchecked")    public void del(String... key) {        if (key != null && key.length > 0) {            if (key.length == 1) {                redisTemplate.delete(key[0]);            } else {                redisTemplate.delete(CollectionUtils.arrayToList(key));            }        }    }    //============================String=============================    /**     * 普通缓存获取     *     * @param key 键     * @return 值     */    public Object get(String key) {        return key == null ? null : redisTemplate.opsForValue().get(key);    }    /**     * 普通缓存放入     *     * @param key   键     * @param value 值     * @return true成功 false失败     */    public boolean set(String key, String value) {        try {            redisTemplate.opsForValue().set(key, value);            return true;        } catch (Exception e) {            e.printStackTrace();            return false;        }    }    /**     * 普通缓存放入并设置时间     *     * @param key   键     * @param value 值     * @param time  时间(秒) time要大于0 如果time小于等于0 将设置无限期     * @return true成功 false 失败     */    public boolean set(String key, String value, long time) {        try {            if (time > 0) {                redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);            } else {                set(key, value);            }            return true;        } catch (Exception e) {            e.printStackTrace();            return false;        }    }    /**     * 递增     *     * @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);    }    /**     * 递减     *     * @param key   键     * @param delta 要减少几(小于0)     * @return     */    public long decr(String key, long delta) {        if (delta < 0) {            throw new RuntimeException("递减因子必须大于0");        }        return redisTemplate.opsForValue().increment(key, -delta);    }}

4、然后。。。。然后就可以了啊简单吧。但是没有那么简单

上面我们写的是0号的数据库,现在我们测试使用的是3号数据库(大家在用的时候按照业务需求就好)

5、我们写一个测试类用来添加:存入一个

key=ceshi001

value=123456

的值

SpringBoot集成Redis

6、然后我们去看Redis数据库中是什么,看图为什么变成这样了呢。

但是到此我们发现,Redis已经集成成功可以进行存储了。

SpringBoot集成Redis

7、我们来解决key值的问题:其实就是序列化的问题

我们来建立一个RedisConfiguration的类,下面显示格式可能不对,直接粘贴使用就好。但是序列化的方式也有很多,可以自行百度。

@Configurationpublic class RedisConfiguration {    @Bean    public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory redisFactory){        StringRedisTemplate template = new StringRedisTemplate(redisFactory);        JdkSerializationRedisSerializer jdkSerializationRedisSerializer=new JdkSerializationRedisSerializer();        template.setValueSerializer(jdkSerializationRedisSerializer);        template.afterPropertiesSet();        return template;    }

}

SpringBoot集成Redis

8、好我们再去运行一次:

发现这次对了。

其实就是序列化的问题,如果不写会有默认的序列化方式

所以开发中如果遇到有两个工程中,去取同一个key值取到的确实null

不用质疑你的Redis有问题,也不用质疑为什么别人能拿到。

那就是key的序列化问题,你们的序列化方式要统一。

(再说一下,一般公司开发会统一的不会遇到这样的问题,如果遇到了说明你们的开发不统一)

SpringBoot集成Redis

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢