Redis应用技术(3)List和Set在Feed流中的选择

news2024/9/24 21:25:06

在数据推送的时候,我们使用Feed流

Feed流有三种推送数据的方式(以微博订阅为例)

        1.推模式(Push)

                将数据在发出后直接推到每个收件箱中.这样会造成发送方的内存占用很大  

         2.拉模式

                       用户每次登录后主动的将数据从收件箱中拉去到,会造成用户的负载增加(如果关注的人很多,甚至会导致上千万条数据的情况)

         3.推拉结合模式

                对于普通用户,该用户发布的信息实时推送到订阅的粉丝手中,而对应于大v(拥有粉丝数量众多的用户),对于其粉丝分两种情况:

                        1.非活跃用户 :  采用拉模式,即该用户上线后才去获取数据

                        2.活跃用户: 采用推模式,将数据推送到该用户的收件箱中

        三者的对比 

 在实现Feed流的时候(用推方案)选用List还是Set的取舍问题:        

        技术要求:

                 必须是有序的收件箱,因为要根据数据的先后顺序分页拉取数据的结果             

         

        List: 

                可以通过下标实现有序的要求,但是面对动态生成的数据会出现问题,由于list的下标是不可变得,所以会出现插入新数据之后导致之前的分页 信息错乱,具体情况如下所示,重复读取了数据6

                原本第二页应当是

         SortedSet:

                可以通过score来实现排序的要求,也就是说在取数据的时候按照时间戳(自行设计的当做score的变量)来实现取后几名的情况.同时可以在取得数据后记住当前页的最后的时间戳,在下次取数据的时候直接和存取的上次取得的最后的时间戳做比较,只有大于上次时间戳的数据才来做分页.

总结: 当数据会发生变化时,将数据存到SortedSet中!!(比如排行榜之类的情况)

        

                

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/170954.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringCloud——config远程连接github 踩坑

说明 我们现在使用spring cloud config 远程连接github会存在网络跟不上问题,以及本地git密钥问题。 1.github更改了密钥策略原来生成的rsa会导致报错,需要使用命令重新生成ed25519密钥2.配置需要按照上述配置 force-pull: true #这个参数不加可能会有…

Linux系统的启动与关闭

✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:Java案例分…

vue-循环引用感想

vue-循环引用感想开场-什么是循环引用探讨-怎么用后话如果我们要在主组件中传方法到子组件呢普通的porps传参依赖注入开场-什么是循环引用 刚开始看着这个官方文档上的循环引用十分的不解,意思是什么呢?看着官网的意思,大概举了个文件管理器…

Exceeded limit on max bytes to buffer : 262144

springboot版本 2.7.3springcloud版本 2021.0.3POST请求的body是1M多,请求网关提示报错。org.springframework.core.io.buffer.DataBufferLimitException: Exceeded limit on max bytes to buffer : 262144at org.springframework.core.io.buffer.LimitedDataBuffer…

使用 Burpsuite 测试的常用操作(一)

大家好啊,我是大田。今天分享一下 Burpsuite 在工作中常用操作,本文先说说其中两个操作。一、了解一下 Burpsuite 做什么1、Burpsuite 是一个黑客工具、安全测试工具、半自动化抓包、篡改信息。2、他能做:代理工具 Proxy 、爬虫 Spider、暴力…

python与excel

一、安装anaconda(阿里云镜像库) pip config list -v#pip在哪里寻找pip.conf文件 阿里云镜像: 1、安装完成,命令行输入:conda config生成.condarc文件(运行期配置文件) 2、如果原本的源中的源地址是 https&#xff0…

手撕Pytorch源码#2.Dataset类 part2

写在前面手撕Pytorch源码系列目的:通过手撕源码复习了解高级python语法熟悉对pytorch框架的掌握在每一类完成源码分析后,会与常规深度学习训练脚本进行对照本系列预计先手撕python层源码,再进一步手撕c源码版本信息python:3.6.13p…

十四.文件操作

目录 一.为什么使用文件 二.什么是文件 1.程序文件和数据文件 2.文件名 三.文件的打开和关闭 1.文件指针 2.fopen函数和fclose函数 四.文件的顺序读写 1.顺序读写函数一览表 2.主要输入输出函数介绍 (1)字符输出函数futc (2&…

Python采集*瓣电影影评并实现可视化分析

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 又到了学Python时刻~ 环境使用: Python 3.8 解释器 Pycharm 编辑器 模块使用 import parsel >>> pip install parsel import requests >>> pip install requests import csv 安装python第三方…

LeetCode 1825 求出MK平均值【Set 队列】 HERODING的LeetCode之路

解题思路: 好久没更新力扣困难题的题解了,今天这道困难题有点意思,读罢题目一目了然,解题思路清晰明了,就是解题过程细节满满。这是一个数据流场景的问题,保留最后m个元素,但是要去除k个最大&am…

设计模式—工厂方法模式

工厂方法模式 文章目录工厂方法模式工厂方法模式是什么理解工厂方法模式代码实例运行截图工厂方法的优点工厂方法的不足工厂方法模式是什么 工厂方法模式属于创建型模式,也叫抽象构造模式, 工厂方法模式将工厂抽象化,并定义一个创建对象的接…

高级语言(C语言)、汇编语言、机器语言区别?编译器如何将高级语言编译成机器语言?

⾼级语⾔: 是相对于汇编语⾔⽽⾔的,是⾼度封装了的编程语⾔,与低级语⾔相对。它是以⼈类的⽇常语⾔为基础的⼀种编程语⾔,使⽤⼀般⼈易于接受的⽂字来表⽰(例如汉字、不规则英⽂或其他外语),从…

(二十四)List系列集合

目录 前言: 一、List集合的特有方法 二、List集合的遍历方式有几种? 三、Arraylist集合底层原理 四、LinkedList的特点 前言: List集合包括JavaList接口以及List接口的所有实现类。List集合中的元素允许重复,各元素的顺序放是对象插入的顺序&#xff…

C生万物 | C语言文件操作指南汇总【内附文件外排序源码】

👑作者主页:Fire_Cloud_1 🏠学习社区:烈火神盾 🔗专栏链接:万物之源——C 文章目录一、为什么使用文件?二、什么是文件?1、程序文件2、数据文件3、文件名三、文件的打开和关闭1、文件…

自动化测试【软件测试】

自动化测试 什么是自动化 有效减少人力的消耗,同时提高生活的质量 通过自动化测试有效减少人力的投入,同时提高了测试的质量和效率 由于回归测试,版本越来越多,版本回归的压力越来越大,仅仅通过人工测试来回归所有版本…

2.3、进程控制

整体框架 1、什么是进程控制? 进程控制的主要功能是对系统中的所有进程实施有效的管理, 它具有创建新进程、撤销已有进程、实现进程状态转换等功能。 简单来说:进程控制就是要实现进程状态转换 2、如何实现进程控制? 2.1、进程…

ATAC-seq分析:TSS 信号(7)

ATACseq ATACseq - 使用转座酶并提供一种同时从单个样本的转录因子结合位点和核小体位置提取信号的方法。 1. 数据类型 上面这意味着我们的数据中可能包含多种信号类型。 我们将从无核小体区域和转录因子(我们的较短片段)周围获得信号。我们的一部分信号…

2-Spring核心与设计思想

目录 1.Spring是什么? 2.容器是什么? 3.IoC是什么? 3.1.传统程序开发 3.2.控制反转式程序开发 3.3.对比总结规律 4.理解Spring IoC 4.1.将对象(Bean)存入到容器(Spring); 4.2.从容器中取出对象。 5.DI概念说明 1.Spring…

计算机编程背景

💖 欢迎来阅读子豪的博客(JavaEE篇 🤴) 👉 有宝贵的意见或建议可以在留言区留言 💻 欢迎 素质三连 点赞 关注 收藏 🧑‍🚀码云仓库:补集王子的代码仓库 不要偷走我小火…

classpath类路径是什么

Spring Boot 一、简介 classpath类路径在 Spring Boot 中既指程序在打包前的/java/目录加上/resource目录,也指程序在打包后生成的/classes/目录。两者实际上指的是同一个目录,里面包含的文件内容一模一样。 二、获取classpath路径 以下两种方式均可…