苍穹外卖-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中连接
- 初步使用
- 导入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>
- 配置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
- 编写配置类,创建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注解另行设置
功能完成测试 提交


浙公网安备 33010602011771号