一、使用 Docker 快速安装 Redis
1、安装 redis,使用 docker 方式
使用 Docker 中国,镜像中国 加速下载 https://www.bbsmax.com/A/amd083yqdg/
2、命令安装
1 2 3 4 5 6 7 8 | 获取 Redis 镜像 docker pull registry.docker-cn.com/library/redis 启动 Redis 容器,并设置端口映射 docker run -d -p 6379 : 6379 --name myredis imgId 查看运行的 Docker 容器 docker ps |
二、引入 redis 的 starter
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
三、配置 Redis
在 SpringBoot 的配置文件中配置 Redis 信息
1 2 | #redis 的配置信息 spring.redis.host= 192.168 . 8.119 |
四、RedisAutoConfiguration
当在项目中导入 redis 的相关依赖时,RedisAutoConfiguration 就会生效。
RedisAutoConfiguration 会给我们导入两个用于操作 Redis 的类:
其中:
1 2 3 | StringRedisTemplate stringRedisTemplate; //操作k-v都是字符串的 RedisTemplate redisTemplate; //k-v 都是对象的 |
五、使用 RedisTemplate 操作 Redis
1、操作常用数据结构
Redis 常见的五大数据类型
1 2 3 4 5 | String 字符串 redisTemplate.opsForValue(); //操作字符串 list 列表 redisTemplate.opsForList(); //操作list Set 集合 redisTemplate.opsForSet(); //操作set Hash 散列 redisTemplate.opsForHash(); //操作hash ZSet 有序集合 redisTemplate.opsForZSet(); //操作有序set |
代码示例:
@Test
public void test01() {
// redis 中保存数据
//stringRedisTemplate.opsForValue().append("msg", "hello");
// 读取数据
String msg = stringRedisTemplate.opsForValue().get("msg");
System.out.println("msg = " + msg);
//操作列表
stringRedisTemplate.opsForList().leftPush("myList", "1");
stringRedisTemplate.opsForList().leftPush("myList", "2");
stringRedisTemplate.opsForList().leftPush("myList", "3");
}
2、保存对象
使用 Redis 保存自定义的 JavaBean 对象,JavaBean 需要实现序列化 Serializable 接口。
示例:
@Test
public void test02() {
Employee emp = employeeMapper.getEmpById(1);
//默认如果保存对象,使用 jdk 序列化机制,序列化后的数据保存到 redis 中
redisTemplate.opsForValue().set("emp-01", emp);
}
通过 Redis 的可视化工具看到的效果:
默认使用的是 JDK 序列化机制来保存的。
如果想把数据以 JSON 的方式保存,怎么办呢?
(1)保存数据的时候,自己将对象转为 json 字符串
(2)redisTemplate 有默认的序列化规则,可以自己定制序列化器
配置自定义序列化器:
@Configuration
public class MyRedisConfig {
@Bean
public RedisTemplate<Object, Employee> empRedisTemplate(
RedisConnectionFactory redisConnectionFactory)
throws UnknownHostException {
RedisTemplate<Object, Employee> template = new RedisTemplate<Object, Employee>();
//设置默认的序列化器
template.setDefaultSerializer(new Jackson2JsonRedisSerializer<Employee>(Employee.class));
template.setConnectionFactory(redisConnectionFactory);
return template;
}
}
保存数据:
@Autowired
RedisTemplate<Object, Employee> empRedisTemplate; //使用自定义的 redisTemplate
@Test
public void test02() {
Employee emp = employeeMapper.getEmpById(1);
//如果想保存 JSON 字符串
//1. 将数据以 json 的方式保存,自己将对象转为 json 字符串
//2. redisTemplate 有默认的序列化规则
empRedisTemplate.opsForValue().set("emp-02", emp);
}
查看效果:
分类:
SpringBoot
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· 面试官:你是如何进行SQL调优的?