8. SpringBoot整合Redis
8.1 pom文件引入redis启动器
注意:redis启动器一定要有版本号,没有版本号pom文件也不会报错,代码中也能加入相应注解,但是SpringBoot无法将数据存到redis中.切记切记一定要有版本号
<!--Redis启动器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-redis</artifactId>
<version>1.2.8.RELEASE</version>
</dependency>
8.2 启动类加入@EnableCaching
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
/**
* 这是启动类
*/
@SpringBootApplication
@EnableCaching //开启redis缓存
public class SpringBootApplicationRunner {
public static void main(String[] args) {
SpringApplication.run(SpringBootApplicationRunner.class,args);
}
}
8.3 需求1: 查找所有用户时,就把数据存到redis中
- service.impl包下的UserServiceImpl类中的findAll()方法, 在此方法上加上@Cacheable注解, value="findAll"指的是存入redis中的key为findAll
@Cacheable(value = "findAll")
public List<User> findAll() {
System.out.println("从数据库查询数据********************");
return userDao.findAll();
}
- 启动redis-server.exe
启动后的redis是这样滴~
- 启动redis-client.exe, 用于查看redis中的数据
- 启动项目,浏览器范围localhost:8080/user.html, 然后redis客户端界面输入keys *,会发现key=findAll已存入redis中.
8.4 需求2: 删除redis中的数据
- service.impl包下的UserServiceImpl类中的**findUserByName()**方法, 在此方法上加上@CacheEvict注解, value="findAll"指的是删除redis中key为findAll的数据, allEntries = true代表确定要删除数据.
@Override
@CacheEvict(value = "findAll",allEntries = true)
public List<User> findUserByName(String name) {
return userMapper.queryUserByName(name);
}
- 重启项目, 浏览器输入localhost:8080/user/findUserByName/张. 然后再在redis-client客户端输入keys *, 会发现没有数据了, 说明redis中的数据已被删除.