node.js xml listview github checkbox woocommerce postman vue学习教程 bootstrap后台管理模板 sql server 视频教程 jquery触发change事件 pytorch安装教程 python与机器学习 matlab注释一段 java获取字符串 重置hosts oracle分析函数 python模块 windows搭建python开发环境 python变量定义 python入门例子 javaqueue java抽象类 java8函数式接口 java基础课程 java地址 java自学编程入门教程 java字符串相等 linux系统如何安装 linux系统简介 方正流行体 脚本之家 flash相册制作 matlab2016a安装教程 字幕制作软件哪个好 苹果剪辑 cf透视辅助 16进制编辑器 go2lan gunzip
当前位置: 首页 > 学习教程  > 编程学习

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

2021/1/9 2:07:51 文章标签: 微博取消赞

微博功能分析 UniqueSet 类 API作用实现原理UniqueSet(client, key)设置唯一集合的客户端和键。is_include(element)检查元素是否存在于唯一集合。SISMEMBERadd(element)将元素添加到唯一集合。SADD user 类 API作用实现原理User(client)设置执行操作时要使用的客户端。cre…

微博功能分析

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)


本文链接: http://www.dtmao.cc/news_show_1100317.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?