Spring Boot集成Redis:配置、序列化与持久化
创作时间:
作者:
@小白创作中心
Spring Boot集成Redis:配置、序列化与持久化
引用
CSDN
1.
https://blog.csdn.net/FL0905/article/details/143857183
本文将详细介绍如何在Spring Boot项目中集成Redis,包括配置、序列化和持久化等关键步骤。通过本文,你将掌握Redis的基本概念、常用数据类型及其在Spring Boot中的应用,以及如何进行性能优化和确保数据一致性。
一、简介
什么是Redis
Redis是一个开源的、基于内存的高性能键值对存储数据库,支持多种数据结构如字符串、哈希、列表、集合等。它以其卓越的性能、高可用性和持久性而广受欢迎。
为什么要使用Redis
Redis的使用可以解决以下问题:
- 低延迟读写:提升用户体验。
- 支撑海量数据和流量:适用于大数据和高流量的应用。
- 大规模集群管理:简化分布式应用的部署和管理。
- 成本考量:降低硬件、软件和人力成本。
二、常用Redis类型及操作
1. String类型
- 介绍:最基本的数据存储类型,用于存储单个数据。
- 基本操作:
- 添加/修改数据:
set key value - 获取数据:
get key - 删除:
del key
2. Hash类型
- 介绍:存储键值对集合,适用于存储对象。
- 基本操作:
- 添加/修改数据:
hset key field value - 获取数据:
hget key field - 删除数据:
hdel key field
3. List类型
- 基本概念:存储有序的数据集合。
- 基本操作:
- 添加/修改数据:
(左侧添加),lpush key value
(右侧添加)rpush key value - 获取数据:
lrange key start stop - 获取并移除数据:
(左侧移除),lpop key
(右侧移除)rpop key
4. Set类型
- 基本介绍:存储不重复的集合。
- 基本操作:
- 添加数据:
sadd key member - 获取数据:
smembers key - 删除数据:
srem key member
5. Sorted Set (zset)
- 概念:存储可排序的集合。
- 基本操作:
- 添加数据:
zadd key score member - 获取全部数据:
zrange key start stop - 删除数据:
zrem key member
三、Spring Boot整合Redis
引入依赖
在pom.xml中添加以下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.6.0</version>
</dependency>
配置yaml
在application.yml中配置Redis连接信息:
spring:
redis:
host: 自己的ip
port: 自己的端口号 # 默认 6379
database: 0 # Redis使用的数据库
timeout: 18000 # 连接超时事件毫秒
password: yourpassword # 密码(如果需要)
lettuce:
pool:
max-active: 20 # 连接池最大连接数
max-idle: 5 # 最大阻塞等待时间
min-idle: 0 # 连接池最小空闲连接
RedisTemplate模版序列化配置
配置RedisTemplate以使用JSON序列化:
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;
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<String,Object> redisTemplate(LettuceConnectionFactory lettuceConnectionFactory){
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(lettuceConnectionFactory);
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
}
Redis的Demo案例
以下是一个简单的测试案例,展示如何使用RedisTemplate:
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
@SpringBootTest
public class RedisTest {
@Autowired
RedisTemplate<String, Object> redisTemplate;
@Test
public void testString() {
String key = "name";
String name = "dession";
redisTemplate.opsForValue().set(key, name);
redisTemplate.expire(key, 1, TimeUnit.DAYS);
System.out.println("Retrieved from Redis: " + redisTemplate.opsForValue().get(key));
}
@Test
public void testHash() {
String key = "users";
redisTemplate.opsForHash().put(key, "name", "zhangsan");
redisTemplate.expire(key, 1, TimeUnit.DAYS);
Map<String, Object> map = new HashMap<>();
map.put("age", 12);
map.put("sex", "男");
redisTemplate.opsForHash().putAll(key, map);
Object name = redisTemplate.opsForHash().get(key, "name");
System.out.println("Name from Hash: " + name);
}
}
四、高级特性与安全性
高级特性
- 持久化:Redis支持RDB和AOF两种持久化方式,确保数据的安全性。
- 复制:通过主从复制,可以提高数据的可用性和读取性能。
- 哨兵模式:用于实现高可用性,自动故障转移。
- 集群:支持数据分片,提高存储和处理大规模数据集的能力。
安全性
- 密码认证:配置
requirepass指令设置密码,确保只有授权用户可以访问Redis。 - 网络隔离:将Redis部署在内网中,避免直接暴露在公网上。
- TLS/SSL:使用TLS/SSL加密数据传输,保护数据在传输过程中的安全。
五、性能优化
- 选择合适的数据类型:根据使用场景选择合适的数据类型,可以提高性能和降低内存使用。
- 调整内存使用策略:通过配置
maxmemory-policy,可以控制内存使用和数据淘汰策略。 - 监控和调优:使用Redis自带的监控工具或第三方工具,如Redisson、Spring Boot Actuator等,监控Redis性能并进行调优。
六、测试与部署
- 测试:在开发和测试环境中充分测试Redis的集成,确保功能正确性和性能满足要求。
- 部署:在生产环境中部署Redis时,考虑使用容器化技术如Docker,以便于管理和扩展。
七、数据一致性
- 缓存与数据库同步:确保缓存数据与数据库数据的一致性,可以使用延迟双删策略或消息队列来实现。
八、版本更新
- 平滑升级:定期检查Redis的新版本,按照官方文档进行平滑升级,以利用新特性和性能改进。
你可以在Spring Boot项目中成功集成Redis,并使用其强大的数据结构来优化你的应用程序。Redis的高级特性和最佳实践还需要你进一步探索和学习。希望这篇文章能帮助你更好地理解和使用Redis。
热门推荐
解锁心灵密码:心理教师如何设计一门走心的心理课程
在股票交易中如何正确进行委托操作?这种委托操作的注意事项有哪些?
房贷提前还款:等额本息VS等额本金,哪个更划算?
2025最新EPA鱼油推荐:EPA鱼油是什么?9个EPA鱼油推荐品牌评比
上海启动老年口腔健康促进行动,这些口腔保健知识请收好
什么是草本雾化器?
《一人之下》神级解读《西游记》,究竟有道理吗?
运动发型怎么扎?有请奥运选手们讲解
重巡洋舰:条约时代的海上巨兽
喉咙有异物感咳出白色痰?可能是慢性咽炎
冢怎么读 冢的意思
N-乙酰基-L-半胱氨酸(NAC)临床应用广泛 近年来市场销售情况良好
牙膏需要经常换品牌用吗?这份牙膏选购攻略请收好
股票什么是基本面及其影响因素?这种影响因素对股票投资有哪些作用?
掌握手机摄影参数优化技巧,轻松提升拍摄效果
16G与32G内存性能表现差距有多大?看完这个你就懂了!
补充酵母:营养与健康的完美搭配
数据科学行业的工资变化与未来
面试官问你期望的工资是多少,怎么回答最好?
如何通过溯源码买药
电脑为何需要定期关机?
CRAmed:微生物数据中介分析的新工具
实拍威海“刘公岛”,历史底蕴深厚,游客惊叹:5A级景区实至名归
今日寒露,三宜、三忌、三秘诀,过好深秋15天!
手工希腊酸奶制作教程
揭秘兔子眼睛颜色之谜:为什么小白兔的眼睛是红色的?
东京旅行前及旅行中,兑换日币方法大揭秘
半导体工艺 | 在晶圆上绘制电路的光刻工艺
传感器技术与应用:基本电量传感器、电位器式传感器、电感式传感器、电容式传感器详解
自发面与酵母:制作面食的最佳选择解析