• 微服务-使用Redis实现分布式缓存


    在单体中对于key信息和用户信息是放在内存中放的,通过session进行管理。

    微服务是要放在分布式缓存中,以实现服务的无状态化

      @Autowired
      private StringRedisTemplate redisTemplate;
    
      @Value("${file.prefix}")
      private String imgPrefix;
      
      /**
       * 1.首先通过缓存获取
       * 2.不存在将从通过数据库获取用户对象
       * 3.将用户对象写入缓存,设置缓存时间5分钟
       * 4.返回对象
       * @param id
       * @return
       */
      public User getUserById(Long id) {
        String key = "user:"+id;
        String json =  redisTemplate.opsForValue().get(key);
        User user = null;
        //如果为空则从数据库中查找
        if (Strings.isNullOrEmpty(json)) {
          user =  userMapper.selectById(id);
          user.setAvatar(imgPrefix + user.getAvatar());
          //反序列化成json存入缓存
          String string  = JSON.toJSONString(user);
          redisTemplate.opsForValue().set(key, string);
          redisTemplate.expire(key, 5, TimeUnit.MINUTES);
        }else {
        //不为空则将缓存中的json对象反序列化成user对象
          user = JSON.parseObject(json,User.class);
        }
        return user;
      }
  • 相关阅读:
    Unity中的shadows(一)
    位1的个数
    Lua的协程
    安装SQL Server 2016时报0x84b10001生成XML文档时出错
    pcl registeration
    SO3和SE3的使用
    save_obj
    vulkan
    gcc编译选项
    全局函数与全局变量 多次使用、引用
  • 原文地址:https://www.cnblogs.com/xiangkejin/p/9010572.html
Copyright © 2020-2023  润新知