苍穹外卖-day05

redis基本入门

入门略过https://www.bilibili.com/video/BV1TP411v7v6?spm_id_from=333.788.videopod.episodes&vd_source=93f5f50fb9ce34ddae7abba08c6ea064&p=62

50-62级

记了感觉也不会看


每次使用redis时需要先启动服务

在redis目录下,进入cmd窗口,输入以下命令启动服务

redis-server.exe redis.windows.conf

在使用时必须先开启redis服务,然后可以在idea中连接

  • 初步使用
  1. 导入maven坐标
<!-- https://mvnrepository.com/artifact/org.springframework.data/spring-data-redis -->
<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-redis</artifactId>
    <version>2.7.3</version>
</dependency>
  1. 配置yaml文件中的redis数据源

2.1 application.yml

spring:
  redis:
    host: ${sky.redis.host}
    port: ${sky.redis.port}
    password: ${sky.redis.password}
    database: ${sky.redis.database}

2.2 application-dev.yml

redis有16个数据库这里使用库10

sky:
  redis:
    host: localhost
    port: 6379
    password: 123456
    database: 10
  1. 编写配置类,创建Redis Template对象
@Configuration
@Slf4j
public class RedisConfiguration {
    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
        log.info("开始创建redis模板对象");
        //设置redis连接工厂对象
        RedisTemplate redisTemplate = new RedisTemplate();
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        //设置redis key的序列化器
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(new StringRedisSerializer());

        return redisTemplate;
    }
 
}

完成


店铺营业状态设置

  • 一个常量类

public class ShopConstant {
    //营业
    public static final Integer ENABLE = 1;

    //休息
    public static final Integer DISABLE = 0;

    //redis字段
    public static final String SHOP_STATUS_KEY = "SHOP_STATUS";

}
  • 管理端设置店铺状态&查询店铺状态
@RestController("adminShopController")
@RequestMapping("/admin/shop")
@Api(tags = "商铺管理接口")
@Slf4j
public class ShopController {

    @Autowired
    private RedisTemplate<String, Integer> redisTemplate;


    /**
     * 设置店铺营业状态
     *
     * @param status
     * @return
     */
    @PutMapping("/{status}")
    @ApiOperation("设置店铺营业状态")
    public Result setStatus(@PathVariable Integer status){
        log.info("设置营业状态为:{}", status == 1 ? "营业中" : "打烊中");
        //操作redis数据库
        redisTemplate.opsForValue().set(SHOP_STATUS_KEY,status);
        return Result.success();
    }


    /**
     * 获取商铺营业状态
     *
     * @return
     */
    @GetMapping("/status")
    @ApiOperation("获取商铺营业状态")
    public Result<Integer> getStatus(){
        Integer status = (Integer) redisTemplate.opsForValue().get(SHOP_STATUS_KEY);
        log.info("查询店铺营业状态为:{}", status == 1 ? "营业中" : "打烊中");
        return Result.success(status);

    }

}
  • 用户端查询店铺营业状态
@RestController("userShopController")
@RequestMapping("/user/shop")
@Api(tags = "商铺管理接口")
@Slf4j
public class ShopController {

    @Autowired
    private RedisTemplate<String, Integer> redisTemplate;

    /**
     * 获取商铺营业状态
     *
     * @return
     */
    @GetMapping("/status")
    @ApiOperation("获取商铺营业状态")
    public Result<Integer> getStatus(){
        Integer status = (Integer) redisTemplate.opsForValue().get(SHOP_STATUS_KEY);
        log.info("营业状态{}",status);
        return Result.success(status);

    }
    
}

因为管理端和用户端都有一个ShopController,都以相同的名字(默认为首字母小写)注入到了SpringIOC容器中产生冲突,因此用户端的名字需要在@RestController注解另行设置

功能完成测试 提交

image-20250325144506612

posted @ 2025-03-25 19:15  han390  阅读(244)  评论(0)    收藏  举报