千家信息网

SpringBoot2.0中如何集成Redis数据库实现缓存管理

发表于:2025-01-17 作者:千家信息网编辑
千家信息网最后更新 2025年01月17日,小编给大家分享一下SpringBoot2.0中如何集成Redis数据库实现缓存管理,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一
千家信息网最后更新 2025年01月17日SpringBoot2.0中如何集成Redis数据库实现缓存管理

小编给大家分享一下SpringBoot2.0中如何集成Redis数据库实现缓存管理,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

一、Redis简介

Spring Boot中除了对常用的关系型数据库提供了优秀的自动化支持之外,对于很多NoSQL数据库一样提供了自动化配置的支持,包括:Redis, MongoDB, Elasticsearch。这些案例整理好后,陆续都会上传Git。

SpringBoot2 版本,支持的组件越来越丰富,对Redis的支持不仅仅是扩展了API,更是替换掉底层Jedis的依赖,换成Lettuce。

二、Spring2.0集成Redis

1、核心依赖

    org.springframework.boot    spring-boot-starter-data-redis

2、配置文件

# 端口server:  port: 8008spring:  application:    # 应用名称    name: node08-boot-redis  # redis 配置  redis:    host: 127.0.0.1    #超时连接    timeout: 1000ms    jedis:      pool:        #最大连接数据库连接数,设 0 为没有限制        max-active: 8        #最大等待连接中的数量,设 0 为没有限制        max-idle: 8        #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。        max-wait: -1ms        #最小等待连接中的数量,设 0 为没有限制        min-idle: 0

这样Redis的环境就配置成功了,已经可以直接使用封装好的API了。

3、简单测试案例

import org.springframework.data.redis.core.RedisTemplate;import org.springframework.data.redis.core.StringRedisTemplate;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;import java.util.concurrent.TimeUnit;@RestControllerpublic class RedisController {    @Resource    private StringRedisTemplate stringRedisTemplate ;    @RequestMapping("/setGet")    public String setGet (){        stringRedisTemplate.opsForValue().set("cicada","smile");        return stringRedisTemplate.opsForValue().get("cicada") ;    }    @Resource    private RedisTemplate redisTemplate ;    /**     * 设置 Key 的有效期 10 秒     */    @RequestMapping("/setKeyTime")    public String setKeyTime (){        redisTemplate.opsForValue().set("timeKey","timeValue",10, TimeUnit.SECONDS);        return "success" ;    }    @RequestMapping("/getTimeKey")    public String getTimeKey (){        // 这里 Key 过期后,返回的是字符串 'null'        return String.valueOf(redisTemplate.opsForValue().get("timeKey")) ;    }}

4、自定义序列化配置

import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;import org.springframework.data.redis.serializer.StringRedisSerializer;import java.io.Serializable;/** * Redis 配置 */@Configurationpublic class RedisConfig {    private static final Logger LOGGER = LoggerFactory.getLogger(RedisConfig.class) ;    /**     * 序列化配置     */    @Bean    public RedisTemplate redisTemplate            (LettuceConnectionFactory  redisConnectionFactory) {        LOGGER.info("RedisConfig == >> redisTemplate ");        RedisTemplate template = new RedisTemplate<>();        template.setKeySerializer(new StringRedisSerializer());        template.setValueSerializer(new GenericJackson2JsonRedisSerializer());        template.setConnectionFactory(redisConnectionFactory);        return template;    }}

5、序列化测试

import com.boot.redis.entity.User;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;import java.util.ArrayList;import java.util.List;@RestControllerpublic class SerializeController {    @Resource    private RedisTemplate redisTemplate ;    @RequestMapping("/setUser")    public String setUser (){        User user = new User() ;        user.setName("cicada");        user.setAge(22);        List list = new ArrayList<>() ;        list.add("小学");        list.add("初中");        list.add("高中");        list.add("大学");        user.setEducation(list);        redisTemplate.opsForValue().set("userInfo",user);        return "success" ;    }    @RequestMapping("/getUser")    public User getUser (){        return (User)redisTemplate.opsForValue().get("userInfo") ;    }}

以上是"SpringBoot2.0中如何集成Redis数据库实现缓存管理"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

0