阅读 97

redis使用场景及实现步骤

新闻、文章最新列表

使用到的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. key为article:list:all: + 文章id,value为值json

    2. redis中存入最新列表,使用sorted set(ZSET),score为文章的更新时间戳。

    3. redis中存入列表,使用sorted set(ZSET),score为文章的创建时间戳。

    1. 在数据库中创建

    2. 存入redis

  • 获取文章列表

    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数据库图:

image-20210929172344286

image-20210929172116438

\


作者:JohnZeng
链接:https://juejin.cn/post/7013283508726530055


文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐