SpringBoot使用Redis缓存
默认的缓存是在内存中定义HashMap,生产中使用Redis的缓存中间件
Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件
1、安装Docker
安装redis在docker上
#拉取redis镜像
docker pull redis
#启动redis[bfcb1f6df2db]docker images的id
docker run -d -p 6379:6379 --name redis01 bfcb1f6df2db
2、Redis的Template
Redis的常用五大数据类型
String【字符串】、List【列表】、Set【集合】、Hash【散列】、ZSet【有序集合】
分为两种一种是StringRedisTemplate,另一种是RedisTemplate
根据不同的数据类型,大致的操作也分为这5种,以StringRedisTemplate为例
stringRedisTemplate.opsForValue() --String
stringRedisTemplate.opsForList() --List
stringRedisTemplate.opsForSet() --Set
stringRedisTemplate.opsForHash() --Hash
stringRedisTemplate.opsForZset() -Zset
1、导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2、修改配置文件
spring.redis.host=192.168.179.131
3、添加测试类
@Autowired
StringRedisTemplate stringRedisTemplate;//操作字符串【常用】
@Autowired
RedisTemplate redisTemplate;//操作k-v都是对象
@Test
public void test01(){
// stringRedisTemplate.opsForValue().append("msg", "hello");
String msg = stringRedisTemplate.opsForValue().get("msg");
System.out.println(msg);
}
写入数据
读取数据
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vcEffH8E-1583034189796)(D:\JAVA学习\SpringBoot学习\SpringBoot基础笔记\images2\38.redis02.jpg)]
3、测试保存对象
对象需要序列化
1、序列化bean对象
public class Employee implements Serializable {
2、将对象存储到Redis
@Test
public void test02(){
Employee emp = employeeMapper.getEmpById(2);
redisTemplate.opsForValue().set("emp-01", emp);
}
3、效果演示
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yIMjhFDF-1583034189799)(D:\JAVA学习\SpringBoot学习\SpringBoot基础笔记\images2\38.redis03.jpg)]
4、以json方式传输对象
1、新建一个Redis的配置类MyRedisConfig,
@Configuration
public class MyRedisConfig {
@Bean
public RedisTemplate<Object, Employee> empRedisTemplate(
RedisConnectionFactory redisConnectionFactory)
throws UnknownHostException {
RedisTemplate<Object, Employee> template = new RedisTemplate<Object, Employee>();
template.setConnectionFactory(redisConnectionFactory);
Jackson2JsonRedisSerializer<Employee> jsonRedisSerializer = new Jackson2JsonRedisSerializer<Employee>(Employee.class);
template.setDefaultSerializer(jsonRedisSerializer);
return template;
}
2、编写测试类
@Autowired
RedisTemplate<Object,Employee> empRedisTemplate;
@Test
public void test02(){
Employee emp = employeeMapper.getEmpById(2);
empRedisTemplate.opsForValue().set("emp-01", emp);
}
3、测试效果
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9NpoEOVY-1583034189809)(D:\JAVA学习\SpringBoot学习\SpringBoot基础笔记\images2\39.redis04.jpg)]