spring boot 基于redis实现数据缓存功能

发布于:2022-08-08 ⋅ 阅读:(363) ⋅ 点赞:(0)

 

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博客 


网站公告

今日签到

点亮在社区的每一天
去签到