如果不知道怎么用cache的,可以先点击下面的链接了解:
https://blog.csdn.net/zhangjian8641/article/details/108120384
本篇主要讲解怎么把cache与redis结合起来,用过cache的都知道,它默认是缓存到本地的。
1、引入MAVEN
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
2、配置文件
在application.yml中配置如下内容
spring:
cache:
type: redis
redis:
# Redis数据库索引(默认为0)
database: 1
# Redis服务器地址
host: 127.0.0.1
# Redis服务器连接端口
port: 6379
# Redis服务器连接密码(默认为空)
password:
# 连接超时时间(毫秒)
timeout: 2000
3、代码示例
package com.example.rediscache.impl;
import com.example.rediscache.dao.PersonRepository;
import com.example.rediscache.entity.Person;
import com.example.rediscache.service.DemoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import java.util.Optional;
@Service
@CacheConfig(cacheNames = {"myCache"})
public class DemoServiceImpl implements DemoService {
private final PersonRepository personRepository;
public DemoServiceImpl(PersonRepository personRepository) {
this.personRepository = personRepository;
}
@CachePut(key = "#person.id")
@Override
public Person save(Person person) {
Person p = personRepository.save(person);
System.out.println("为id,key为:" + p.getId() + "数据做了缓存");
return p;
}
@CacheEvict
@Override
public void remove(Integer id) {
System.out.println("删除了id,key为" + id + "的数据缓存");
personRepository.deleteById(id);
}
@Cacheable(key = "#person.id")
@Override
public Person findOne(Person person) {
Optional<Person> p = personRepository.findById(person.getId());
System.out.println("为id,key为:" + p.orElse(null) + "数据做了缓存");
return p.orElse(null);
}
}
4、在Application.java中加入@EnableCaching注解,启动缓存启动器
@EnableCaching
public class Application {
public static void main(String[] args) {
SpringApplication.run(app.class, args);
}
}
5、补充
实体要序列化