likes
comments
collection
share

redis使用场景及实现步骤

作者站长头像
站长
· 阅读数 19

新闻、文章最新列表

使用到的redis key

public interface RedisKey {
    String ARTICLE_LIST = "article:list:all"; // 文章列表
    String ARTICLE_LIST_SORT_CREATE_TIME = "article:list:sort:createTime"; // 文章的创建时间
    String ARTICLE_LIST_SORT_UPDATE_TIME = "article:list:sort:updateTime";// 文章的更新时间
    String ARTICLE_LIST_SORT_VIEWS = "article:list:sort:views";// 文章的浏览数
    String ARTICLE_LIST_LOCK = "article:list:lock";// 操作文章的锁
}

步骤:

  • 创建文章

    1. 在数据库中创建

    2. 存入redis

      1. key为article:list:all: + 文章id,value为值json
      2. redis中存入最新列表,使用sorted set(ZSET),score为文章的更新时间戳。
      3. redis中存入列表,使用sorted set(ZSET),score为文章的创建时间戳。
  • 获取文章列表

    1. 通过article:list:sort:createTime获取文章id列表(按创建时间排序)。
    2. 通过redisTemplate.opsForValue().multiGet获取文章列表,通过传入的参数key,组合成新的List返回前端(手写实现分页功能)。
  • 获取最新列表

    1. 通过article:list:sort:updateTime获取到最新文章id列表(按更新时间排序)。
    2. 通过redisTemplate.opsForValue().multiGet获取文章列表,通过传入的参数key,组合成新的List返回前端(手写实现分页功能)。
  • 获取文章

    1. 从缓存中获取,如果没有,就从数据库中获取,在存进缓存。
    2. 更新浏览数数列表article:list:sort:views
    3. 更新缓存。
  • 更新文章

    1. 使用redisLockUtil(自定义工具类)加锁,放置并发情况下对统一文章进行更新。
    2. 更新缓存。
    3. 更新最新列表(更新时间score)。
    4. 释放锁。
  • 删除文章

    1. 删除数据库。
    2. 删除缓存。(包括:更新时间列表article:list:sort:updateTime,文章列表article:list:all,点赞数列表article:list:sort:views,以及对应的文章键值对article:list:all:xxx。)

redis数据库图:

redis使用场景及实现步骤

redis使用场景及实现步骤

\