redis缓存案例1,使用不同数据结构设计点赞功能


前言

这是阅读《Redis实战》的案例,结合自己项目经历对案例的思考;
参考书本地址为:http://redisinaction.com


一、需求

  1. 用户访问文章,不能直接查数据库;
  2. 每个用户可以对每篇文章点一次赞;
  3. 文章列表的排序规则为<发布时间戳+(点赞数*432)>
  4. 文章可以加入自定义分组里;
  5. 分组的排序依然使用排序;

二、用例

  1. 作者发布文章;
  2. 访客查询文章详情;
  3. 访客对每篇文章投票,每篇文章只有7天投票时间;
  4. 访客查询所有文章列表,默认排序是<发布时间戳+(点赞数*432)>
  5. 作者创建或删除分组;
  6. 作者把文章放进分组,文章和分组为多对多关系;
  7. 访客查询分组文章列表,默认排序是<发布时间戳+(点赞数*432)>

三、建模

在这里插入图片描述

四、概要设计

1. 文章发布接口post_article()

  1. 文章写入数据库,得到article_id,假设是92617;
  2. 创建文章散列,类型hash,key为article:92617,成员对应数据库字段和值;
  3. 创建文章投票集合,类型set,key为voted:92617,成员为空;本人user_id,如:user:234487;
  4. 创建默认排序集合,类型zset,key为score:,并将article:92617作为成员写入,分数为创建时间戳;
  5. 创建时间排序集合,类型zset,key为time:,并将article:92617作为成员写入,分数为创建时间戳;

3. 用户投票接口article_vote(user, article)

  1. 判断是否投票过期;

2. 文章详情接口get_article(article)

  1. 拼接key=‘article:’+article.id;
  2. 从文章散列取得详情;
  3. 从文章投票集合

3. 文章投票用户列表接口get_article_vote_users(article_id)

4. 所有文章列表接口get_articles()

5. 创建和删除分组接口add_remove_groups()

6. 文章和分组绑定接口post_group_articles()

7. 获取分组中的文章get_group_articles()

8. 数据回写数据库

9. 缓存服务重启,从数据库导入缓存服务器

五、参考代码

https://github.com/huangz1990/riacn-code


总结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值