zoukankan      html  css  js  c++  java
  • 微服务-使用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;
      }
  • 相关阅读:
    Spring——框架
    Spring——简介
    系统常识——系统碎片
    php5.3.3以上重启php-fpm的方法
    linux后端跑redis
    php的post
    微信场景二维码
    phantomjs和selenium模拟登陆qq空间
    python登录知乎
    python的request抓https的警告问题
  • 原文地址:https://www.cnblogs.com/xiangkejin/p/9010572.html
Copyright © 2011-2022 走看看