day20 Redis入门与店铺状态设置

前几天陆陆续续写了苍穹外卖的员工管理,菜品,分类,套餐管理等,未坚持每日学习,未写复盘

1. 今天做了什么

(day5的内容)

  1. Redis入门
    1. 安装
    2. Redis里的数据类型:字符串,哈希,集合,有序集合,列表
    3. Redis操作的命令
    4. java程序中操作Redis数据库:使用Spring Data Redis
      1. 配置
      2. 使用
  2. 店铺相关接口 , 使用Redis存储
    1. 设置店铺营业状态
    2. 获取店铺状态(用户端与管理端)
  3. 接口分组展示的配置

2. 核心知识点

Redis的基础使用

3. 深度思考

  1. 为什么使用Redis
    1. Redis将数据存在内存中,访问效率更高,可用于存方高频使用的数据
    2. 店铺状态只有一个值,使用Redis需要为它单独创建一个一行一列的表,而使用Redis这种键值对的方式就很方便

4. 踩过的坑

  1. 获取店铺状态有用户端与管理端,必须在使用@RestController(“userShopController”)注解是对其命名进行区分,否则会因为Bean对象名冲突报错

5. 遗留问题 / 想不通

  1. 通过@Bean注解在配置类中配置的Bean,使用范围是?
    1. 只有该配置类在springboot扫描范围内,才会加入IOC容器管理
    2. 只有被IOC容器管理的类,其非静态属性,才可以使用@Autowired注入Bean
  2. redisTemplate.setKeySerializer(new StringRedisSerializer());的作用
    1. 对key进行序列化
    2. java操作Redis时,使用java字符串作为key,所以为Key指定字符串序列化器,可以确保java字符串存进Redis还是该字符串
    3. 若不指定序列化器,使用默认序列化器,存进Redis的key与java字符串会不一致
    4. 也可以为Value设置序列化器
      // 设置 Value 的序列化器(通常用 Jackson,存 JSON 格式,方便其他语言读取)
      redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer<>(Object.class));
1
2
3
4
5
6
7
@Bean  
public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate redisTemplate = new RedisTemplate();
redisTemplate.setConnectionFactory(redisConnectionFactory);
redisTemplate.setKeySerializer(new StringRedisSerializer());// 设置key序列化器
return redisTemplate;
}