1.简单实现
目标:查找电梯总数时,先从 redis 缓存中查找,如果找不到,再从数据库中查找,然后放到 redis 缓存中。(项目采取三层结构,数据持久层已完成)
首先,在 pom.xml 文件中添加 redis 依赖。
<!-- 加载 spring boot redis 包 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
然后,在.properties文件中配置redis连接信息。默认端口是6379,
#配置 redis 连接信息
spring.redis.host=42.193.101.129
spring.redis.port=6379
#spring.redis.password=root
接下来编写代码。由于集成了mybatis-plus,直接从service层开始写。
ServiceImpl类中:
@Autowired
private RedisTemplate<Object,Object> redisTemplate;
/**
* 查找电梯总数时,先从 redis 缓存中查找,如果找不到,再从数据库中查找,然后放到 redis 缓存中。
* @return
*/
@Override
public int countElevators(){
//设置 redisTemplate 对象 key 的序列化方式
redisTemplate.setKeySerializer(new StringRedisSerializer());
int elevatorNumber;
try{
//从redis中获取缓存的电梯总数
elevatorNumber = (int) redisTemplate.opsForValue().get("elevatorNumber");
}catch(NullPointerException e){
System.out.println("缓存为空");
//查询
elevatorNumber = this.count();
//添加缓存
redisTemplate.opsForValue().set("elevatorNumber",elevatorNumber,15, TimeUnit.SECONDS);
}
return elevatorNumber;
}
return elevatorNumber;
}
controller层:
/**
* 查找电梯总数
* 请求地址:localhost:1823/demo/elevator/number
* @return
*/
@GetMapping(value = "/elevator/number")
public @ResponseBody String getElevatorNumber(){
return "一共有"+elevatorService.countElevators()+"部电梯";
}
运行本地redis并连接后,进行测试:
在云服务器使用宝塔面板安装redis,修改配置文件(注释掉默认的bind 127.0.0.1,在第69行;再将88行的protected-mode改为no),最后放行6379端口,再重启一下redis。 测试结果成功。
参考文章:
SpringBoot框架_星悦糖的博客-CSDN博客_springboot
idea连接云服务器上的redis报错:Failed to connect to any host resolved for DNS name.【已解决】_鹏少学Java的博客-CSDN博客