- 引入starters
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
- application.properties中配置 redis所在主机的ip地址
spring.redis.host=192.168.8.201 #redis所在的主机ip
以上两步就已经和springboot整合好了。
- RedisAutoConfiguration配置类中有两个组件分别是 StringRedisTemplate(顾名思义是操作字符串的)和 RedisTemplate<Object, Object> (操作对象)来帮助我们操作Redis
-
在测试类中测试
a. 首先我们来看redis中没有任何数据
b. 测试类代码如下: 分别向redis存、取数据。
@Autowired
StringRedisTemplate stringRedisTemplate;
@Test
public void test01(){
//给redis中保存数据
stringRedisTemplate.opsForValue().append("msg","This is From SpringBoot");
//从redis中取出数据
String msg = stringRedisTemplate.opsForValue().get("msg");
System.out.println("=====>"+msg);
}
然后我们分别看到Redis保存了数据,并且控制台打印了数据
以上只是简单的字符串操作,包括list ,set hash等的操作类似。
* Redis常见的五大数据类型
* String(字符串)、List(列表)、Set(集合)、Hash(散列)、ZSet(有序集合)
* stringRedisTemplate.opsForValue()[String(字符串)]
* stringRedisTemplate.opsForList()[List(列表)]
* stringRedisTemplate.opsForSet()[Set(集合)]
* stringRedisTemplate.opsForHash()[Hash(散列)]
* stringRedisTemplate.opsForZSet()[ZSet(有序集合)]
下面讲解,保存对象到redis中去。
使用下面的代码直接保存对象到redis会报错,因为我们的实体类未序列化,所以实体类一定要序列化。(实现 Serializable 接口)
@Autowired
RedisTemplate redisTemplate;
//测试保存对象
@Test
public void test02(){
Employee empById = employeeMapper.getEmpById(1);
//默认如果保存对象,使用jdk序列化机制,序列化后的数据保存到redis中
redisTemplate.opsForValue().set("emp-01",empById);
}
序列化之后我们看到redis中确实保存了不过是序列化话后的数据
但是,我们更加习惯将数据以json的形式保存到redis中去。两种方法:
1.自己以json的形式保存到redis中去
2.RedisTemplate 中有默认的序列化规则。自定义一个序列化规则
我们来到RedisTemplate 源码中查看
有这么多序列化器
private RedisSerializer keySerializer = null;
private RedisSerializer valueSerializer = null;
private RedisSerializer hashKeySerializer = null;
private RedisSerializer hashValueSerializer = null;
private RedisSerializer<String> stringSerializer = new StringRedisSerializer();
默认使用的是JdkSerializationRedisSerializer
然后我们给他切换成json的序列化器就可以了,然后我们来自定义一个类叫MyRedisConfig,给他设置一个defaultSerializer如同
可以看到该方法需要传入 RedisSerializer 类, 进到RedisSerializer中选中类名然后Ctrl+h
我们看到, 有一个Jackson2JsonRedisSerializer类我们传入这个就ok了
完整配置如下:
@Configuration
public class MyRedisConfig {
@Bean
public RedisTemplate<Object, Employee> redisTemplate(
RedisConnectionFactory redisConnectionFactory)
throws UnknownHostException {
RedisTemplate<Object, Employee> template = new RedisTemplate<Object, Employee>();
template.setConnectionFactory(redisConnectionFactory);
template.setDefaultSerializer(new Jackson2JsonRedisSerializer<Employee>(Employee.class));
return template;
}
}
最后我们来测试:
Redish中保存了json格式的数据