springBoot:redis使用

需求:查询酒店房间列表

1、引入依赖

        
        
            org.springframework.boot
            spring-boot-starter-data-redis
        

2、配置yml文件

server:
  port: 8083
spring:
  application:
    name: room-service
  redis:
    host: 120.27.149.6
    port: 6379
    password: redis
    timeout: 10000
    database: 0

3、实体类

注意:redis要求存入的对象必须序列化,不然会报没有序列化的错误。所以需要继承Serializable 接口序列化

package com.hmall.common.pojo;


import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;


/**
 * 

* 房间表 *

* * @author itcast * @since 2023-08-25 */ @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) public class Room implements Serializable { private static final long serialVersionUID = 1L; /** * 主键id */ private Long id; /** * 地址 */ private String address; /** * 房型 1:酒店 2:民宿 */ private Integer type; /** * 楼栋 */ private String loudong; /** * 房间号 */ private Integer number; /** * 床位号 */ private Long bed; /** * 入住状态 1:未入住 2:入住中 */ private Integer status; /** * 房间人员关系表id */ private Integer userRomId; /** * 房间价格 */ private Double price; /** * 损耗状态 1:未损耗 2:有损耗 */ private Integer wastageStatus; }

4、业务层使用

    @Autowired
    private RedisTemplate redisTemplate;


    /*查询房间列表*/
    @Override
    public List getRoomList(Integer type, Integer status) {
        List list = null;

        String keyId = "room_" + type + "_" + status;
        //查找redis缓存
        list = (List) redisTemplate.opsForValue().get(keyId);

        if (list != null) {
            return list;
        }

        LambdaQueryWrapper lwq = new LambdaQueryWrapper<>();
        if (status != 0) {
            lwq.eq(Room::getStatus, status);
        }
        if (type != 0) {
            lwq.eq(Room::getType, type);
        }
        list = list(lwq);

        System.out.println("list:" +list);

        //存储数据到redis,过期时间50分钟
        redisTemplate.opsForValue().set(keyId, list, 50, TimeUnit.MINUTES);

        return list;
    }


    /*新增房间*/
    @Override
    public void add(Room room) {
        String keyId = "room_" + room.getType() + "_" + room.getStatus();
        //删除redis缓存
        redisTemplate.delete(keyId);
        //保存数据
        save(room);
    }

你可能感兴趣的:(redis,数据库,缓存)