# 用户搜索历史列表
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中, 方便排序(点赞数/评论数/文章数排行)