首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Reddit 如何实现大规模的帖子浏览计数

然后将该数量展示给内容创建者和版主,以便他们更好地了解特定帖子上的活动。 在这篇文章中,我们将讨论我们如何大规模地实现计数。 计数方法 对浏览计数有四个主要要求: ◈ 计数必须是实时的或接近实时的。...不是每天或每小时的总量。 ◈ 每个用户在短时间内只能计数一次。 ◈ 显示的数量与实际的误差在百分之几。 ◈ 系统必须能够在生产环境运行,并在事件发生后几秒内处理事件。...为了实时保持准确的计数,我们需要知道某个特定的用户是否曾经访问过这个帖子。要知道这些信息,我们需要存储先前访问过每个帖子的用户组,然后在每次处理对该帖子的新访问时查看该组。...这个解决方案的一个原始实现是将这个唯一用户的集合作为散列表存储在内存中,并且以帖子 ID 作为键名。 这种方法适用于浏览量较少的文章,但一旦文章流行,阅读人数迅速增加,这种方法很难扩展。...stream-lib 中的代码有很好的文档,但是要理解如何正确使用这个库并且调整它以满足我们的需求是有些困难的。 ☉ Redis 的 HLL 实现(我们选择的)。

1.3K90
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    如何使用 Redis 实现大规模的帖子浏览计数

    img 本文我们就来聊一聊,Reddit 是如何在大规模下统计帖子浏览量的。 统计方法 我们对统计浏览量有四个基本的要求 计数必须达到实时或者接近实时。 每个用户在一个时间窗口内仅被记录一次。...帖子显示的统计数量的误差不能超过百分之几。 整个系统必须能在生成环境下,数秒内完成阅读计数的处理。 满足上面四个条件,其实比想象中要复杂。...和Scale两种实现 Twitter的Algebird库,Scala实现,Algebird的文档撰写非常好,但是关于它是如何实现HLL的,不是很容易理解。...stream-lib库中的HyperLogLog++实现,Java编写。 stream-lib代码的文档化做的很好,但我们对如何适当调优它,还是有些困惑的。...统计系统的第二部是一个称为Abacus 的kafka『消费者』它会真正的统计浏览量,并且让浏览量数据可以在整站和客户端上显示, 它接收从Nazar发送出来的事件消息,然后根据该消息中包含着标识值(Nazar

    2.1K40

    【精选好文】Reddit如何统计每个帖子的浏览量

    所以我们想要建立一个能够计算一个帖子浏览数的系统。这一数字会被展示给帖子的创作者和版主,以便他们更好的了解某个帖子的活跃程度。 在这篇博客中,我们将讨论我们是如何实现超大数据量的计数。...3、显示的浏览量与真实浏览量间允许有小百分之几的误差。 4、Reddit 是全球访问量第八的网站,系统要能在生产环境的规模上正常运行,仅允许几秒的延迟。...这种实现方式对于访问量低的帖子是可行的,但一旦一个帖子变得流行,访问量剧增时就很难控制了。甚至有的帖子有超过 100 万的独立访客!...2、stream-lib中提供的 HyperLogLog++, 采用 Java 实现。stream-lib 中的代码文档齐全,但有些难理解如何合适的使用并且改造的符合我们的需求。...我们将第二个 Kafka 的消费者称作 Abacus,用来进行真正浏览量的计算,并且将计算结果显示在网站或客户端。

    1.4K40

    如何检查列表中的某个帖子是否被当前用户投票

    在 Django 项目中,如果需要检查一个列表中的某个帖子是否被当前用户投票(比如点赞或踩),可以通过数据库查询实现。...以下是具体的实现方法,假设你使用的是 Django 并有如下的数据库模型结构:问题背景我正在创建一个reddit克隆,其中存在一个问题,我正在寻找一种方法来指示当前用户是否对某个特定问题进行过投票,而不会产生过多数据库请求...downvoted_by(self, user): return self.down_votes.filter(user=user).exists()然后,在视图中,我们可以使用这些方法来检查用户是否对某个帖子进行过投票...threads/detail.html', { 'thread': thread, 'comments': comments })最后,在模板中,我们可以使用这些变量来显示投票信息...set(upvoted_comments), 'downvoted_comments': set(downvoted_comments) })最后,在模板中,我们可以使用这些变量来显示投票信息

    4300

    图解面试题:如何找到喜欢的电影?

    “电影类别表”是对应电影(电影表中的电影编号)属于哪一类(类别表中的电影类别编号) 查找“电影表”中电影描述信息包含“机器人”的电影,以及对应的电影类别名称和电影数目(count(电影表.电影编号)...因为取的是这些表的共同数据,所以使用内联结。...而题目中的上述分类对应电影数量>=5部,是指该电影类别在原始表中的电影数量>= 5,而不是先用where子句筛选以后的表。 那么,这就需要把having子句放在where子句之前,如何到呢?...因为要用到电影类别编号数量大于5的电影类别编号,右表为筛选后的结果。因此需要用到右联结,只保留右表的全部数据,即电影类别编号为3的数据。...group by 科目类型having count(科目类型) >= 3) as bon a.科目类型 = b.科目类型where 姓名 like '猴%'group by a.科目类型; 推荐:如何从零学会

    1.1K00

    对于岗位人数少的职级,应该如何分析薪酬结构

    我们在做薪酬数据分析的时候,都会按照薪酬结构的各个职级,对岗位进行薪酬曲线的绘制和数据分析。最进行分析的时候,我们会去计算各个职级的中位值数据,这些都是一个标准的薪酬分析的流程。 ?...但是对有些企业来说,他们的岗位结构比较简单,岗位的职级就几个层级,岗位的人员也就3-4个人,对于这样的简单的数据,我们几乎不能去绘制岗位的薪酬曲线,对于这样的企业我们要如何去做数据分析呢,今天我们通过案例来分析下...按照传统的计算,我们是要算出各个职级的中位值,然后再和市场各个分位置去值一个曲线的对标,找出各个职级在市场的位置,如果按照常规流程做是这样的。 ? ?...但是我们考虑到岗位的本省数据比较少,在进行薪酬曲线绘制的时候数据的偶然性比较的大,所以除了我们可以做这样的薪酬曲线外,我们还可以做岗位的薪酬分布图,把每个岗位的薪酬数据在该岗位对应的市场分位置上用散点图做分布...在这个分析图上,X轴是经理岗位的市场分位置,经理岗位的3位员工的薪资分布分别对应在市场的分位置的范围上,通过这个图,就可以判断3个人的薪酬分布,薪酬是否具备竞争力。

    1.4K10

    国外公司是如何挖掘社交媒体数据的?

    数据的来源多种多样,而社交媒体是一个重要的数据来源渠道。那么国外的公司是如何挖掘社交媒体数据的呢? ---- 在小学时,我们的数学老师不断告诉我们“展示我们的成果”。...自然关注人数:通过非广告渠道获得的关注人数。 页面点赞:此指标显示页面和新页面点赞总数,同时包括与上周数据的对比。 ? 付费关注人数:通过投放广告获得的关注人数。...帖子覆盖率:此指标显示用户的总覆盖数量,即看到与你的网页相关的任何内容或广告的总人数。以及页面访问量,指的是页面帖子的留言总数。...反应:此指标显示用户对你发布帖子的不同反应,包括(Like, Love, Haha, Wow, Sad 和 Angry)。 不喜欢人数:不喜欢你的页面的人数。 ?...如果想掌握Facebook上粉丝的增长情况,可以重点把握参与率,新关注者,帖子覆盖率和自然关注人数。 如果在社交媒体发布了广告,则需要跟踪突出显示投资回报率的数据。

    4.5K101

    移动直播(LiteAV)如何比较统计直播间的观看人数?

    方案一: 腾讯云直播提供统计 API,开发者可以通过调用 查询统计信息 接口来查询某条直播流的统计信息的观看人数。 方案二....如果开发者项目工程中有使用到 云通信 组件,可以调用 IM 群人数统计接口。 目前方案一和二 都统计出来的人数不是很准确,如果开发者对在线人数要求不高,可以直接上述方案。...如果开发者需要很准确的统计在线人数,最好自己服务器实现统计逻辑。...增加观众数(Client -> Server) 当有新的观众加入时,意味着某个房间的观众数要 + 1,可以让 App 的观众端在进入房间时向 Server 发送一次累加请求。...减少观众数(Client -> Server) 当有观众退出房间时,意味着某个房间的观众数要 - 1,可以让 App 的观众端在退出房间时向 Server 发送一次累减请求。

    2.2K30

    Echo 的评论是如何显示的

    也就是说,某个帖子下的所有评论,它们的 entity_id 都是这个帖子的 id。某条评论下的所有回复,它们的 entity_id 都是这条评论的 id。)...比如用户 admin 发了一个帖子,用户 master 评论了这个帖子,那么这里的 target_id 存储的就是用户 admin 的 id。)...另外,这里的 Service 层也比较简单,就是调用了一下 Dao,我就不再多费口舌了。 表现层 评论与回复是在哪里显示的呢?帖子的详情页里面,对吧。 一篇帖子的详情页需要哪些东西呢?我们来看看 ?...、以及发布该评论的作者信息、点赞数量、回复数量、回复的相关信息、当前登录用户对该评论的点赞状态等 回复的相关信息被封装在评论的相关信息里面,既然回复和评论我们都放在一张表里面了,那自然不用多说,它和显示评论所需要的信息是一样的...封装评论的分页信息,这里就显示出我们分页模型的强大了,一套代码随处用,不了解的各位强烈推荐回看上篇文章 Echo 的帖子列表与分页是怎么做的 ?

    1K11

    深入探寻Engagement奥秘 - 6个核心指标

    这意味它是该页面未跳出用户的页面停留时间的平均值。 许多市场营销人员更喜欢在页面上监测滚动深度。它可以为内容提供更准确的参与度量标准。越多的人滚动浏览内容,参与度可能性越高。...另一种解决方案是CrazyEgg或Hotjar的滚动贴图技术,该技术可显示用户最喜欢的页面位置。 3....对话率的计算公式如下: 总评论数/关注者数* 100 =对话率 例如,有30条评论的帖子可能对一些人来说似乎是不太重要的帖子,但是对于只有250个喜欢的Facebook页面来说,这个数字将变得很有意义。...他可以告诉我们打开电子邮件的总人数。 2 点击率:点击邮件中链接的人数与总收件人的百分比。通过总共的(或独立的)点击次数除以发送的电子邮件数量并乘以100来计算。...3 转化率:在登录页上点击并完成操作的人数与总收件人数的百分比。 4 转发/分享率:转发你的电子邮件或点击“分享”的人数与总收件人数的百分比。 转化率尤为重要。

    2.1K90

    如何在不喜欢的情况下完成任务?

    其他时候你必须处理你不喜欢的任务(对我来说是写了很多测试或文档)或者没有挑战性的项目。如果你的工作没有意义,或者你被分配的任务似乎低于你的能力,找到动力可能很难。 所以你会怎么做?...许多人转向拖延或忽视任务 - 但这只会推迟不可避免的事情。你可以试着说出你的任务,也许你的经理会支持你,但在某些时候,工作还是需要完成。 如果你想成功,那么无论如何,它都会让你更好地适应这种场合。...这意味着学习如何应对挑战并提供有价值的结果。 由于这种情况经常发生在我身上,所以即使在我不喜欢的情况下,我已经抓住了五个最好的策略来完成惊人的工作。...从你的待办事项列表中删除一些东西可以让你的大脑获得快乐的小多巴胺,即使任务很小 - 它可以保持你的动力和你的借口。 尝试将您的下一个项目分成尽可能小的增量。...此外,如果您与聪明的朋友或导师交谈,他们可能会建议您如何开始或分享他们如何做类似的事情。您可以在同一时间变得更加轻松和智慧。

    49930

    如何做出技术和测试都喜欢的需求文档?

    在产品的工作中,需求文档的撰写是我们日常工作中必不可少的一环。很多产品经理会问什么样的需求文档是一篇比较好的文档呢?...你会发现你平常能找到的一些需求文档的模板各不一样,没有什么固定的版式,也没有哪个模板是大家公认的特别好的需求文档的模板。...有的产品经理写的的需求文档特别详细,一篇需求文档满满的全是文字,你虽然写的很详细,但是在实际开发的过程中,你会发现技术和测试同学还是会经常问你各种细节,是你需求文档描述的不够清楚吗?...有一些产品经理提供的需求文档,在静态的原型图上标记了各种复杂的业务逻辑说明,包含一些业务跳转,细节规则等,这类需求文档看起来比上面说的满满的全是文字稍微好一些,但是还是有些复杂,一些稍微复杂一些的业务逻辑...针对以上需求文档全是文字和静态原型图上标注各种的业务逻辑的问题,其实搭配上一些动态的交互、页面的跳转、业务流程图,会让需求文档的可读性和业务逻辑的清晰上有一个很好的解决。

    51710

    如何设计一个 70w 在线人数的弹幕系统 ?

    弱网导致的弹幕卡顿、丢失 该问题已在线上环境 性能与可靠性 百万用户同时在线,按照上文的推算,具体QPS将超过30w QPS。如何保证在双十一等重要活动中不出问题,至关重要。...在不包含扩展的情况下,对于服务器到客户端的内容,此头部大小只有2至10字节(和数据包长度有关);对于客户端到服务器的内容,此头部还需要加上额外的4字节的掩码。...Long Polling vs Websockets 无论是以上哪种方式,都使用到TCP长连接,那么TCP的长连接是如何发现连接已经断开了呢?...,加上使用的是数组作为存储结构,带来的读效率是相当高的。...最新2T+免费Java视频学习资料点击领取>> 在 Spring Boot 中,如何干掉 if else 4万字!Spring Security 从入门到精通!

    69210

    如何使特定的数据高亮显示?

    如上图所示,我们需要把薪水超过20000的行,通过填充颜色突出显示出来。如何实现呢?还是要用到excel里的“条件格式”哦。...如下图,在选中了薪水列数据之后,点击进行“大于”规则设置: 最终结果如下: 薪水大于20000的单元格虽然高亮显示了,但这并不满足我们的需求,我们要的是,对应的数据行,整行都高亮显示。...所以,在这里要提醒小伙伴们,如果想实现整行的突出显示,“突出显示单元格规则”是不适用的。“突出显示单元格规则”顾名思义,就是对符合规则的“单元格”进行设置,而不是对“数据行”进行设置。...其它excel内置的条件规则,也一样有这样的限制。 那么,要实现整行的条件规则设置,应该如何操作?既然excel内置的条件规则已经不够用了,下面就自己动手DIY新规则吧。...2.如何使特定数据行高亮显示? 首先,选定要进行规则设置的数据范围:选定第一行数据行后,同时按住Ctrl+Shift+向下方向键,可快速选定所有数据行。

    5.6K00
    领券