SpringBoot学习——springboot整合Redis实现数据缓存
版权声明:转载请注明来源 https://blog.csdn.net/qq_24598601/article/details/89284040
SpringBoot 整合 Redis 数据库实现数据缓存的本质是整合 Redis 数据库,通过对需要“缓存”的数据存入 Redis 数据库中,下次使用时先从 Redis 中获取,Redis 中没有再从数据库中获取,这样就实现了 Redis 做数据缓存。
按照惯例,下面一步一步的实现 Springboot 整合 Redis 来存储数据,读取数据。
一、POM 文件添加 Redis 环境
首页第一步还是在项目添加 Redis 的环境, Jedis。
<!-- Redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
二、在 application.properties 添加自定义配置的 Redis 参数
第二步需要将一些 Redis 的配置信息配置到 application.properties 文件中
spring.redis.pool.max-idle=10
spring.redis.pool.min-idle=5
spring.redis.pool.max-total=20
spring.redis.hostName=127.0.0.1
spring.redis.port=6379
使用 yml 的配置如下:
spring:
### Redis Configuration
redis:
pool:
max-idle: 10
min-idle: 5
max-total: 20
hostName: 127.0.0.1
port: 6379
这里的配置信息模仿 datasource 的配置,除了键(max-idle、min-idle、hostName、port 等)的名称必须和所对应的对象属性一致外,其他可根据自己喜好命名,例如下面配置:
springboot.redis.pool.max-idle=10
springboot.redis.pool.min-idle=5
springboot.redis.pool.max-total=20
springboot.redis.hostName=127.0.0.1
springboot.redis.port=6379
1
2
3
4
5
这样也是可以的,其实质就是这里的这些 Redis 参数是自定义的参数,SpringBoot 没有对其有规定,关于自定义参数的获取可参考文章:SpringBoot学习——yml 文件中自定义参数解析对象 ,properties 文件也是一样的方式获取。
三、编写一个 RedisConfig 注册到 Spring 容器
编写一个 RedisConfig 注册到 Spring 容器,主要步骤有:
创建并注册 JedisPoolConfig 对象,通过 @ConfigurationProperties 来获取配置文件中的连接池配置信息;
创建并注册 JedisConnectionFactory 对象并注入上一步的 JedisPoolConfig 对象,同时使用 @ConfigurationProperties 来获取配置文件中的连接配置信息;
创建并注册 RedisTemplate 对象并注入上一步的 JedisConnectionFactory 对象;
通过 @Autowired private RedisTemplate<String, Object> redisTemplate; 使用 RedisTemplate 对象;
具体的 RedisConfig 对象代码如下:
package com.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import redis.clients.jedis.JedisPoolConfig;
/**
* 描述:Redis Config 注册
* @author lytao123
*/
@Configuration
public class RedisConfig {
/**
* 1.创建 JedisPoolConfig 对象。在该对象中完成一些连接池的配置
*/
@Bean
@ConfigurationProperties(prefix="spring.redis.pool")
public JedisPoolConfig jedisPoolConfig() {
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
return jedisPoolConfig;
}
/**
* 2.创建 JedisConnectionFactory:配置 redis 连接信息
*/
@Bean
@ConfigurationProperties(prefix="spring.redis")
public JedisConnectionFactory jedisConnectionFactory(JedisPoolConfig jedisPoolConfig) {
JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory(jedisPoolConfig);
return jedisConnectionFactory;
}
/**
* 3.创建 RedisTemplate:用于执行 Redis 操作的方法
*/
@Bean
public RedisTemplate<String, Object> redisTemplate(JedisConnectionFactory jedisConnectionFactory) {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
// 关联
redisTemplate.setConnectionFactory(jedisConnectionFactory);
// 为 key 设置序列化器
redisTemplate.setKeySerializer(new StringRedisSerializer());
// 为 value 设置序列化器
redisTemplate.setValueSerializer(new StringRedisSerializer());
return redisTemplate;
}
}
四、使用 RedisTemplate
第四步就是使用 RedisTemplate ,使用方法如下所示,但不局限于下面的使用方式,可以是数据库的各种使用方式。
package com.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.bean.Users;
/**
* @Description 整合 Redis 测试Controller
* @author 欧阳
* @since 2019年4月13日 下午3:20:08
* @version V1.0
*/
@RestController
public class RedisController {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
@RequestMapping("/redishandle")
public String redishandle() {
//添加字符串
redisTemplate.opsForValue().set("author", "欧阳");
//获取字符串
String value = (String)redisTemplate.opsForValue().get("author");
System.out.println("author = " + value);
//添加对象
//重新设置序列化器
redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer());
redisTemplate.opsForValue().set("users", new Users("1" , "张三"));
//获取对象
//重新设置序列化器
redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer());
Users user = (Users)redisTemplate.opsForValue().get("users");
System.out.println(user);
//以json格式存储对象
//重新设置序列化器
redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer<>(Users.class));
redisTemplate.opsForValue().set("usersJson", new Users("2" , "李四"));
//以json格式获取对象
//重新设置序列化器
redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer<>(Users.class));
user = (Users)redisTemplate.opsForValue().get("usersJson");
System.out.println(user);
return "home";
}
}
例如上述的具体使用方法是运行启动类,访问 http://localhost:8080/redishandle 后, Redis 数据库中将存入三个数据,其key分别是 author、users、usersJson。使用命令 get key 可验证 Redis 中是否有这三个 key 的数据。
--------------------- ---------------------------------------------
我就想问一下,RedisTemplate,这个已经封装了还要手动实例化它,干啥?
作者:lytao123
来源:CSDN
原文:https://blog.csdn.net/qq_24598601/article/details/89284040
版权声明:本文为博主原创文章,转载请附上博文链接!
SpringBoot学习——springboot整合Redis实现数据缓存相关推荐
- Spring整合Redis做数据缓存(Windows环境)
当我们一个项目的数据量很大的时候,就需要做一些缓存机制来减轻数据库的压力,提升应用程序的性能,对于java项目来说,最常用的缓存组件有Redis.Ehcache和Memcached. Ehcache是 ...
- springboot redis 刷新时间_「SpringBoot实战」SpringCache + Redis实现数据缓存
关注我的微信公众号:后端技术漫谈 不定期推送关于后端开发.爬虫.算法题.数据结构方面的原创技术文章,以及生活中的逸闻趣事. 我目前是一名后端开发工程师.主要关注后端开发,数据安全,网络爬虫,物联网,边 ...
- spring-boot 整合redis作为数据缓存
添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>sp ...
- 【Java项目中 利用Redis实现数据缓存】
文章目录 Java SpringBoot项目中 用Redis实现数据缓存 1 环境搭建 1.1 maven坐标 1.2 配置文件 1.3 配置类 2 实现缓存短信验证码 3 缓存菜品数据 4 Spri ...
- Springboot:整合redis对接口数据进行缓存
文章目录 Springboot:整合redis对接口数据进行缓存 一.注解及其属性介绍 @Cacheable @CacheEvict @CachePut @CacheConfig 二.代码实现 1.创 ...
- SpringBoot+Redis完成数据缓存(内容丰富度一定超出你的想象)
SpringBoot+Redis完成数据缓存 去年今日此门中 人面桃花相映红 人面不知何处去 桃花依旧笑春风 感谢相遇!感谢自己,努力的样子很给力! 为了更多朋友看见,还是和大家说一声抱歉,限制为粉丝 ...
- spring boot 缓存_Spring Boot 集成 Redis 实现数据缓存
Spring Boot 集成 Redis 实现数据缓存,只要添加一些注解方法,就可以动态的去操作缓存了,减少代码的操作. 在这个例子中我使用的是 Redis,其实缓存类型还有很多,例如 Ecache. ...
- [Springboot]SpringCache + Redis实现数据缓存
前言 本文实现了SpringCache + Redis的集中式缓存,方便大家对学习了解缓存的使用. 本文实现: SpringCache + Redis的组合 通过配置文件实现了自定义key过期时间:k ...
- SpringBoot 使用jedis整合redis实现缓存处理
目录 简介 redis基本结构: 代码实现 1.新建Springboot项目,添加必要的依赖 pom.xml: 2. 在application.yml配置文件中添加 redis的相关配置 3.Spri ...
- 8分钟带你学会SpringBoot整合Redis来实现缓存技术
1.概述 随着互联网技术的发展,对技术要求也越来越高,所以在当期情况下项目的开发中对数据访问的效率也有了很高的要求,所以在项目开发中缓存技术使用的也越来越多,因为它可以极大的提高系统的访问速度,关于缓 ...
最新文章
- 编程语言发展70年,用50种不同语言输出「Hello World」
- iptables端口映射实例
- 论文解读 | 基于正则化图神经网络的脑电情绪识别
- VTK:圆锥用法实战
- 《剑指offer》链表分割
- python入门html_python-html入门
- python利用()写模块_介绍一下我自己写的一些Python模块
- java520.1314表白_520最新表白公式,拿去不谢!
- drivers/mfd/Mfd-core.c
- #SORA#celery研究中的一个小问题
- pdf虚拟打印机怎么用来转换文件
- 阿里性能调优工具Arthas
- Linux中ImageIO生成词云图片中文乱码
- 一个岔路口分别通向诚实国和说谎国。 来了两个人,已知一个是诚实国的,另一个是说谎国的。 诚实国永远说实话,说谎国永远说谎话。现在你要去说谎国, 但不知道应该走哪条路,需要问这两个人。请问应该怎么问?(
- 【WEB】前端系统配色方案(全览)
- 第3章第9节:快速提取幻灯片中的所有图片素材 [PowerPoint精美幻灯片实战教程]
- Spring源码窥探之:ImportBeanDefinitionRegistrar
- python3连接Oracle数据库
- Ubuntu 18.04 安装 网易云音乐
- 相片打印机原理_相片打印机怎么打印? 2021照片打印机(手机照片打印机)推荐...
热门文章
- 深入解读HBase2.0新功能之高可用读Region Replica
- 《Python密码学编程》——2.6 本书的文本换行
- javascript amp;amp; 和 || 最清晰的描述
- 【ML】PAC learning model
- html5下移标签,不可不知的html5标签
- VPP:Bihash简介
- FFmpeg编解码常用函数ffmpeg av_parser_parse2()函数
- Ubuntu终端常用命令
- 常用头文件和一些简单的函数
- TensorFlow 安装教程