文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

SpringBoot2 中怎么利用Redis数据库实现缓存管理

2023-06-02 13:19

关注

SpringBoot2 中怎么利用Redis数据库实现缓存管理,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

一、Redis简介

Spring Boot中除了对常用的关系型数据库提供了优秀的自动化支持之外,对于很多NoSQL数据库一样提供了自动化配置的支持,包括:Redis, MongoDB, Elasticsearch。这些案例整理好后,陆续都会上传Git。
SpringBoot2 版本,支持的组件越来越丰富,对Redis的支持不仅仅是扩展了API,更是替换掉底层Jedis的依赖,换成Lettuce。
本案例需要本地安装一台Redis数据库。

二、SpringBoot2集成Redis

1、核心依赖

<dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-data-redis</artifactId></dependency>

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 ;        @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;@Configurationpublic class RedisConfig {    private static final Logger LOGGER = LoggerFactory.getLogger(RedisConfig.class) ;        @Bean    public RedisTemplate<String, Serializable> redisTemplate            (LettuceConnectionFactory  redisConnectionFactory) {        LOGGER.info("RedisConfig == >> redisTemplate ");        RedisTemplate<String, Serializable> 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<String> 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") ;    }}

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网行业资讯频道,感谢您对编程网的支持。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯