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";// 操作文章的锁 }复制代码
步骤:
创建文章
key为
article:list:all: + 文章id
,value为值jsonredis中存入最新列表,使用sorted set(ZSET),score为文章的更新时间戳。
redis中存入列表,使用sorted set(ZSET),score为文章的创建时间戳。
在数据库中创建
存入redis
获取文章列表
通过
article:list:sort:createTime
获取文章id列表(按创建时间排序)。通过
redisTemplate.opsForValue().multiGet
获取文章列表,通过传入的参数key,组合成新的List返回前端(手写实现分页功能)。获取最新列表
通过
article:list:sort:updateTime
获取到最新文章id列表(按更新时间排序)。通过
redisTemplate.opsForValue().multiGet
获取文章列表,通过传入的参数key,组合成新的List返回前端(手写实现分页功能)。获取文章
从缓存中获取,如果没有,就从数据库中获取,在存进缓存。
更新浏览数数列表
article:list:sort:views
。更新缓存。
更新文章
使用
redisLockUtil
(自定义工具类)加锁,放置并发情况下对统一文章进行更新。更新缓存。
更新最新列表(更新时间score)。
释放锁。
删除文章
删除数据库。
删除缓存。(包括:更新时间列表
article:list:sort:updateTime
,文章列表article:list:all
,点赞数列表article:list:sort:views
,以及对应的文章键值对article:list:all:xxx
。)
redis数据库图:
\
作者:JohnZeng
链接:https://juejin.cn/post/7013283508726530055