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

Posted 开拖拉机的蜡笔小新

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微服务-使用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;
  }

 

以上是关于微服务-使用Redis实现分布式缓存的主要内容,如果未能解决你的问题,请参考以下文章

6.《持续演进的Cloud Native 云原生架构下微服务最佳实践》读书笔记-第三章基于Codis实现Redis分布式缓存集群

微服务框架 SpringCloud微服务架构 多级缓存 48 多级缓存 48.7 Redis 缓存预热

基于redis分布式缓存实现(新浪微博案例)

Redis 分布式缓存,是如何实现多台服务器SESSION 实时共享的

分布式架构体系知识

如何利用redis来进行分布式集群系统的限流设计