持久化数据设计 (重点)
日期: 2019-08-27 分类: 个人收藏 318次阅读
# 用户搜索历史列表
user:<用户id>:search_history zset [{value:关键词, score:搜索时间}, {}, {}]
# 用户阅读历史列表
user:<用户id>:read_history zset [{value:文章id, score:阅读时间}, {}, {}]
# 所有用户的作品数量
# user:<用户id>:art_count string 13 incr/decr
user:all:art_count zset [{value: 用户id, score:作品数量}, {}, ]
# 所有文章的点赞数量
article:all:like_count zset [{value: 文章id, score: 点赞数}, {}, {}]
# zincrby 对分数+n zscore 获取分数 zrevrange 倒序排列
- 阅读历史/搜索历史 更新比较频繁
- 不在mysql中进行保存, 直接持久化到redis中, 丢失了也不太重要
- 点赞数/回复数 更新频繁
- 如果保存到mysql中, 就会大量的并发更新操作, 出现阻塞的情况 -> 取消mysql的冗余字段, 直接在redis中进行持久化
- 如果保存在redis的数据对象中, 需要经常进行序列化转换, 效率太低, 所以将统计数量从数据对象中提取出来单独存储, 这样也能减少持久化的数据总量
- 为了后续排序考虑, 将各类统计数量保存到对应的zset中, 方便排序(点赞数/评论数/文章数排行)
转载于:https://www.cnblogs.com/oklizz/p/11420241.html
除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog
标签:数据库
精华推荐