Redis系列学习笔记14 微博功能分析

微博功能分析

UniqueSet 类
API作用实现原理
UniqueSet(client, key)设置唯一集合的客户端和键。
is_include(element)检查元素是否存在于唯一集合。SISMEMBER
add(element)将元素添加到唯一集合。SADD
user 类
API作用实现原理
User(client)设置执行操作时要使用的客户端。
create(name, email, password)根据给定的名字、邮箱和密码,创建一个新的用户,返回用户的 ID 。使用 HMSET 储存用户信息,使用 HSET 在 email 和ID 之间进行关联。
try_login(email, password)尝试使用给定的邮箱和密码进行登录,如果成功的话,返回该账号的ID、用户名等信息。根据 email 查找与之关联的用户 ID ,然后根据 ID 取出用户数据,进行密码对比。

用户关系

关注与被关注

RelationShip 类
API作用实现原理
RelationShip(client)设置关系类使用的客户端。
follow(fans, target)让 fans 关注 target 。将 fans 添加到 target 的粉丝集合里面,将 target 添加到 fans 的关注集合里面。
is_following(a, b)检查 a 是否正在关注 b 。检查 a 的关注集合是否包含 b 。
is_following_each_other(a, b)检查 a 和 b 是否关注了彼此。检查 a 的关注集合是否包含 b ,以及 b 的关注集合是否包含 a 。
get_all_following(user)返回用户关注的所有人。返回用户的整个关注集合。
get_all_fans(user)返回用户的所有粉丝。返回用户的整个粉丝集合。
common_following(a, b)返回 a 和 b 共同关注的人。计算 a 和 b 的关注集合的并集。

发微博

储存微博并将它广播至各个时间线

Message 类的实现
API作用实现原理
Message(client)设置客户端。
create(author, content)储存一条微博,并返回该微博的 ID 。使用 HMSET 将微博的相关信息储存到一个散列里面。
get_by_id(message_id)根据 ID 查找微博。使用 HGETALL 获取储存在散列里面的微博信息。

时间线

按照发表时间的先后顺序来储存微博

程序会为每个用户储存两条时间线:

  • 定制时间线,包含了用户自己以及用户正在关注的人发送的微博,键名为 weibo::user::id::custom_timeline 。
  • 个人时间线,只包含用户自己发送的微博,键名为weibo::user::id::personal_timeline 。
Timeline 类
API作用实现原理
Timeline(client)设置客户端。
custom_push(user_id, msg_id, time)将微博推入到用户的定制时间线里面。使用 ZADD 将微博 ID 添加到代表定制时间线的有序集合里面。
personal_push(user_id, msg_id,time)将微博推入到用户的个人时间线里面。使用 ZADD 将微博 ID 添加到代表个人时间线的有序集合里面。
broadcast(msg_id, time, *fans_ids)将微博推入到所有给定用户的定制时间线里面。遍历传入的所有用户 ID ,对每个ID 都执行一次 custom_push 。
custom_paging(user_id, n, count)按每页 count 条微博计算,获取用户定制时间线第 n 页的微博。使用 ZREVRANGE 以从新到旧的顺序取出有序集合储存的微博 ID 。
personal_paging(user_id, n, count)获取用户个人时间线第 n 页的微博,按每页 count 条微博计算。使用 ZREVRANGE 以从新到旧的顺序取出有序集合储存的微博 ID 。

为微博点赞

支持自己喜欢的微博

LikeMessage 类的实现
API作用实现原理
LikeMessage(client, msg_id)设置客户端和要进行操作的微博。
like(user_id)用户对微博点赞。将用户 ID 添加到集合里面。
is_liking(user_id)检查用户是否赞了该微博。使用 SISMEMBER 检查用户 ID是否存在于集合。
undo(user_id)取消用户的点赞。使用 SREM 将用户 ID 从集合中移除。
count()获取该微博的点赞人数。对集合执行 SCARD 。
get_all_liking_user()返回所有赞了该微博的用户。对集合执行 SMEMBERS 。

评论微博

对微博内容进行讨论

Comment 类
API作用实现原理
Comment(client)设置客户端。
create(author, content)创建评论。使用 HMSET 将评论储存到散列里面。
get_by_id(comment_id)获取指定的评论。使用 HGETALL 获取散列储存的评论信息。
CommentList 类
API作用实现原理
CommentList(client, message_id)设置客户端以及被评论的微博。
push(comment_id)为微博添加评论。使用 LPUSH 命令将评论ID推入到列表里面。
count()获取微博目前的评论数量。LLEN
paging(number, count)按每页 count 条评论计算,获取该微博第 number 页上的评论。LRANGE

转发微博

在一条微博里面引用另一条微博

修改之前发微博的接口,改为:create(author, content, origin_message_id=None)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值