1.SpringBoot整合
SpringBoot操作数据:使用SpringData(SpringData包含:jpa、jdbc、mongodb、redis等)
SpringData是和SpringBoot齐名的项目。
说明:在SpringBoot2.x之后,原来使用的Jedis被替换为了lettuce。
- Jedis:底层采用的是直连,若有多个线程操作的话,是不安全的。(若想避免不安全,使用jedis pool连接池)更像BIO模式。
- lettuce:底层采用netty,实例可以在多个线程中共享,不存在线程不安全的情况。可以减少线程数量(不需要开连接池了)。更像NIO模式。
1.源码分析
SpringBoot所有的配置类,都有一个自动配置类 XXXAutoConfiguration。
自动配置类都会绑定一个properties 配置文件,RedisProperties。
RedisAutoConfiguration源码分析:
1 | public class RedisAutoConfiguration { |
2.整合测试
1.创建springboot项目的时候,在noSql里把Redis勾选上。
或者导入依赖
1 | <!--Redis--> |
2.在配置文件中进行配置(配置内容到 RedisProperties 类里面)
1 | # 默认就是localhost 所以在本地用,这个可以不写 |
3.编写测试程序
1 | // 1.注入Redis模板类 |
3.自定义RedisTemplate
1.关于序列化
1.无序列化(直接存储对象会报错)
1 |
|
2.序列化的两种方式(开发中,所有的实体类都会序列化)
- 方式一:实体类实现Serializable接口
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33// 实体类实现Serializable接口
public class User implements Serializable{
private String name;
private Integer age;
}
// 调用
还是调用前面的代码,程序正常执行。
```
- 方式二:把实体类 单独序列化
```java
public void test1() throws JsonProcessingException {
User user = new User("张三", 20);
// 开发一般使用json传递对象 (这里进行序列化)
String jsonUser = new ObjectMapper().writeValueAsString(user);
// 存数据
redisTemplate.opsForValue().set("user", jsonUser);
// 取数据
User redUser = (User)redisTemplate.opsForValue().get("user");
System.out.println(redUser);
}
编写自己的RedisTemplate。
*系统默认的RedisTemplate 序列化方式为jdk序列化。我们需要编写自己的序列化RedisTemplate *
1 | // 这是一个固定的模板,拿来就能用 |
测试:
1 | // 这里确保导入自己定义的RedisTemplate |