持久化数据设计 (重点)

# 用户搜索历史列表
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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值