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

Redis 如何存储上亿级别的用户状态?

1 ---- 前段时间,在网上看到一道面试题: 如何用redis存储统计1亿用户一年的登陆情况,并快速检索任意时间窗口内的活跃用户数量。 觉得很有意思,就仔细想了下 。...对于这题,有2个重要的点需要考虑: 1.如何用合适的数据类型来存储1亿用户的数据,用普通的字符串来存储肯定不行。...2.如何满足搜索,redis是一个键值对的内存结构,只能根据key来进行定位value值,无法做到像elastic search那样对文档进行倒排索引快速全文检索。...2 ---- 在redis 2.2.0版本之后,新增了一个位图数据,其实它不是一种数据结构。实际上它就是一个一个字符串结构,只不过value是一个二进制数据,每一位只能是0或者1。...通常来说使用场景分2类: 1.某一业务对象的横向扩展,key为某一个业务对象的id,比如记录某一个终端的功能开关,1代表开,0代表关。基本可以无限扩展,可以记录2^32个位信息。

1.3K40

Redis 如何存储上亿级别的用户状态?

1 ---- 前段时间,在网上看到一道面试题: 如何用redis存储统计1亿用户一年的登陆情况,并快速检索任意时间窗口内的活跃用户数量。 觉得很有意思,就仔细想了下 。...对于这题,有2个重要的点需要考虑: 1.如何用合适的数据类型来存储1亿用户的数据,用普通的字符串来存储肯定不行。...2.如何满足搜索,redis是一个键值对的内存结构,只能根据key来进行定位value值,无法做到像elastic search那样对文档进行倒排索引快速全文检索。...2 ---- 在redis 2.2.0版本之后,新增了一个位图数据,其实它不是一种数据结构。实际上它就是一个一个字符串结构,只不过value是一个二进制数据,每一位只能是0或者1。...通常来说使用场景分2类: 1.某一业务对象的横向扩展,key为某一个业务对象的id,比如记录某一个终端的功能开关,1代表开,0代表关。基本可以无限扩展,可以记录2^32个位信息。

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

Redis 如何存储上亿级别的用户状态?

前段时间,在网上看到一道面试题: 如何用redis存储统计1亿用户一年的登陆情况,并快速检索任意时间窗口内的活跃用户数量。 觉得很有意思,就仔细想了下 。并做了一系列实验,自己模拟了下 。...对于这题,有2个重要的点需要考虑: 1.如何用合适的数据类型来存储1亿用户的数据,用普通的字符串来存储肯定不行。...2.如何满足搜索,redis是一个键值对的内存结构,只能根据key来进行定位value值,无法做到像elastic search那样对文档进行倒排索引快速全文检索。...2 ---- 在redis 2.2.0版本之后,新增了一个位图数据,其实它不是一种数据结构。实际上它就是一个一个字符串结构,只不过value是一个二进制数据,每一位只能是0或者1。...通常来说使用场景分2类: 1.某一业务对象的横向扩展,key为某一个业务对象的id,比如记录某一个终端的功能开关,1代表开,0代表关。基本可以无限扩展,可以记录2^32个位信息。

64320

如何部署一个生产级别的 Kubernetes 应用

QoS 主要分为 Guaranteed、Burstable 和 Best-Effort三类,优先从高到低。我们先分别来介绍下这三种服务类型的定义。...Guaranteed(有保证的) 属于该级别的 Pod 有以下两种: Pod 中的所有容器都且仅设置了 CPU 和内存的 limits Pod 中的所有容器都设置了 CPU 和内存的 requests...对于 Guaranteed 级别的 Pod,OOM_ADJ 参数设置成了-998,对于 Best-Effort 级别的 Pod,OOM_ADJ 参数设置成了1000,对于 Burstable 级别的 Pod...现在如果要想给应用设置资源大小,就又有一个问题了,应该如何设置合适的资源大小呢?...在使用过程中我们还可以指定 Kubernetes 在更新期间如何处理多个副本的切换方式,比如我们有一个3副本的应用,在更新的过程中是否应该立即创建这3个新的 Pod 并等待他们全部启动,或者杀掉一个之外的所有旧的

1.1K20

滴滴开源的Tinyid如何每天生成亿级别的ID?

Tinyid在滴滴客服部门使用,均通过tinyid-client方式接入,每天生成亿级别的id。 tinyid系统架构图 ?...的工厂,每个biz_type生成一个IdGenerator实例。...全局唯一的id:无论怎样都不能重复,这是最基本的要求了 高性能:基础服务尽可能耗时少,如果能够本地生成最好 高可用:虽说很难实现100%的可用性,但是也要无限接近于100%的可用性 简单易用: 能够拿来即用...一批id,我们可以看成是一个id范围,例如(1000,2000],这个1000到2000也可以称为一个"号段",我们一次向db申请一个号段,加载到内存中,然后采用自增的方式来生成id,这个号段用完后,再次向..., max_id, step, version from tiny_id_info where biz_type='test'; B.计算新的max_id: new_max_id = max_id +

82921

如何实现毫秒级别的抽奖系统

业务进行分析 我们首先对业务场景进行定义,如何快速的从 1000w 数据中找到 10 个数据作为中奖用户,重复100次,每次作为我们终将的名单,切每一个用户不能重复中奖。...基于这个过程我们如何把这个过程高效的实现呢? 数据库实现: 使用数据库是最直接的方法,但在处理大规模数据时,性能可能成为瓶颈。...spop usrlist 10 需要注意的问题 在使用redis方案时候,需要考虑一下问题: 1000w数据如何预热到缓存中? 1000w数据大概占用多少空间? 整体的性能大概是多少?...对于上面几个问题我们分别来看: 预热我们可以采用job定时预热的模式,采用 sharding +多线程的方式写入redis 对于占用空间问题,如果一个userId 占用 n 个字节,1000w大概占用1000w

19410

【追求极致】我是如何把easy级别的算法题做成hard级别的

我这里只是一个建议,如果可以,请追求极致。 下面我举几个例子,也算是顺便一起来刷几道题。...案例1:构建乘积数组 题目描述:给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…A[i-1]A[i+1]…A[n-1]。...案例2:数组中重复的数字 题目描述:在一个长度为n的数组里的所有数字都在0到n-1的范围内。数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。...请找出数组中任意一个重复的数字。例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么2和3就是重复的数字了,那么可以随意返回2或者返回3都可以了,任意选择一个即可。 解法 这道题简单吗?...时间复杂度是 O(nlogn),空间复杂度O(1). 2、用一个哈希表来存放这些数组,把数组元素值作为 key,相同元素的个数作为 value。

43220

如何设置一个生产级别的高可用etcd集群

在之前的文章中,我们详细介绍了K3s的架构以及部署场景,给尚未了解K3s的朋友提供了一个很好的入门方向。...那么,在本文中我们将探索如何配置一个3节点的etcd集群,它将会被用于高可用、多节点的K3s集群中。...etcd是云原生生态中最受欢迎的开源项目之一,它是云原生计算基金会(CNCF)孵化的项目,目前已经成为Kubernetes基础架构的核心构件。...在本教程结束的时候,你将完成部署一个启用了TLS的3节点etcd集群,作为具有多个master的高可用K3s集群的外部数据存储。 首先,请确保你有3个带有静态IP地址的Linux host。...现在你拥有了一个安全、分布式的以及高可用的etcd集群,它已经为生产K3s集群环境做好了准备。 在下一篇文章中,我将向你详细介绍如何安装和配置一个具有高可用控制平面的4节点K3s集群。保持关注哟~!

1.2K00

SRE 究竟是如何保障上亿级别的大促活动

一年一度的双11活动已经成了一个全民狂欢的节日。 这一天,如何应对运营的各类指标压力,保障业务系统关键时候不挂,又成了研发和运维同学的梦魇。...首先,SRE团队会和运营团队、业务团队沟通电商活动当前的推广情况,结合历史数据计算每个模块的性能指标。...技术优化 以电商活动为例, 当性能压测遇到一个问题涉及业务团队多个组件时,会发现同一个性能问题有多种解决办法。...可以计算出整个活动的5秒均值峰值是2.5万人,而活动开始第一秒的请求是均值的2倍,这样粗略估计出请求峰值为5万人。...(1)限流优先。 Service A > Service B > Service C (2)扩容优先

2.4K21

如何快速鉴别“菜鸟”级别和“大神”级别的程序员?

很多公司在面试程序员的时候有的都不用笔试,直接谈上一段时间就能给出结论这个人技术能力是不是适合做,能拿到多少工资,识别程序员水平高低谈上几句话就能搞定 如何鉴别一个程序员水平的高低?...2.直接上机器写代码,这种国内很多公司都会这么干,直接上机实现一个功能,谷歌这种公司倒是经常采用这种方式,由于这种方式在现实中操作起来还是比较麻烦,所以大部分公司还是以笔试或者面试为主,直接上机写代码可以很直观的看到代码逻辑思维...3.直接面试中通过实际的项目案例来考察,基本上按照简历上做的项目问几个在实际用到的细节就能大致判断一个人水平高低,记得有个同事说起如何面试,直接会说专业的知识一直问到底,知道的多的直接录取,虽然有点夸张但是有一定道理的...通过上面的三条,其实如何鉴别菜鸟还是大神都已经一目了然了。 ?...3.抗压能力也是菜鸟程序员和高手一个很大的差异,菜鸟遇到大的需求会觉得暗无天日,还会怀疑是不是自己不适合做程序员,高手来再大的需求都会很沉稳,任何一个程序员都会遇到项目紧急状态,抗压能力没有很难在这个行业呆下去

61820

千万级别的数据量如何设计导出

参考解决方案 针对你现在的数据库,千万级别的,不管采取什么方案,什么 POI 工具在线导出方案都会超时。 原因有: 数据处理时间会很长,生成的文件会很大,网络传输回来肯定会超时。...其次 Excel 建议的数据量一般是不超过 5 万,全部导入到一个文件中,客户的电脑是根本打不开的,Excel 早就会被拖死了。这样的数据给你们业务毫无意义。...你这还是一个用户导出的情况,如果 10 个用户同时导出,你试试看? 所以,你需要和业务商量你们到底要这些数据干什么。但是放一个文件中肯定是没有任何意义的。...然后将生成的文件放到某一个存储位置,通常可以是云存储。

1.3K00

DB 也可以成为一个系统级别的半仙

其实上都属于 DB的初级级别, DB 的追求的终极水平就是一个系统级别的半仙. 当然当一个半仙也不是那么简单的, 99-81渡难到时没有, 但背锅那必然是常有的事情....成为半仙也是要从背锅开始,例如可能因为莫名的硬件问题, 你的数据库就不稳定了,此时你就的化身为除了DB 层次以外的, 系统级别的专业或非专业认识,将自己从泥潭里面"择"清楚, 所谓莲花出污泥而不染....例如将一堆应用系统,架设在一台 ORACLE 的架构师和应用开发,你就知道他的水平如何了, 因为这样的系统,要不就是没数据, 没并发,随便搞搞,糊弄领导, 要比就是在作死, 在程序设计初期根本不考虑并发...在往深层次去,就是看系统中的表设计和业务的逻辑结构之间的问题, 例如一个系统表完全要根据三范式来设计, 那你就要预想到,很可能因为业务复杂,你的一个查询就会变成 N 个表的 LEFT JOIN , 系统的性能如何...一个系统设计,尤其复杂系统的设计,在数据库中的体现, 表如何分冷热, 某些字段是否要冗余, 有些数据存储是否要分库分表, 数据存储的格式,是传统还是JSON.

29220

你是一个什么级别的程序员?

你是什么级别的程序员?   对于这个问题,相信各位在以往的面试中,应该有被问过的吧。很明显这个是一个开放式的问题,没有标准的答案。我是这样回答的:   我觉得我是一个中级程序员。为什么这样说呢?...领导:那么问题来了,如何能让其他人快速接手呢? 我:这个。。。。。 领导:很简单,要是所有人写的代码都一样,看别人的代码就像看自己的代码。这不就解决问题了吗? 我:是的。...领导:那么问题又来了,如何让所有人写的代码都一样呢? 我:我们可以用alibaba开发的idea的插件扫描代码,制定相应的代码规范,并进行实施。 领导:我们制定的规范,你遵守了多少呢?...我:那你是如何划分程序员的等级呢? 领导:初级的程序员能根据自己掌握的技能完成相应的工作,然而中级程序员呢除了能完成工作,还能让别人快速的接手自己工作。高级程序员就是把初级变成中级。...结尾   很感谢你能看到最后,那么问题来了你是一个什么级别的程序员呢?   如果觉得对你有帮助,可以多多评论,多多点赞哦,也可以到我的主页看看,说不定有你喜欢的文章,也可以随手点个关注哦,谢谢。

48010

初学者如何写出大神级别的程序?

看完标题,点进来的大部分都是单片机菜鸟,很想学这大神的程序方法,本文小编就以一个编译不过的程序作例子,给你慢慢讲讲如何写出大神的程序。...起源 昨晚有小伙伴在群(Q群号:300384358 51单片机学习交流 )里问一个问题,截图好多,问题大概意思就是他的程序编译不过,求解。群友也给他支招好多,还是不行。...回归正题,今天主要讲的是如何写出大神的程序。 小编认为,程序功能怎么样,一眼看不出,但是程序节后,程序文件的界面是一眼就能看出是大神还是小白。...1、在必要的地方加上空行,区分出一个函数一个函数来 2、在每个函数里的函数体中的语句根据语句的结构做了缩进 3、给函数加了注释 还做了一些上图看不出的处理,后面小编慢慢说(文末视频里也有详细说明)。...这就是今天的重点,要写出大神的程序,起步很重要,基础不扎实,怎么成为大神。

34120

干货:快速开发一个Antd级别的组件库

但是这个过程你会发现一个问题,就是应该怎么更好的发布和管理维护这些组件呢。最后会发现网上的其他教程不是太零散了,就是有些细节不大到位。...但由于我们需要每个组件互相独立单独打包,所以需要一个个组件去引入,同时也要保持相应的文件结构。 ? 在这里使用了glob这个很好用的工具,能很方便匹配出对应的文件。...最后返回的是一个文件路径的映射对象,我们可以在控制台看看输入了哪些文件。 ? ok,接下来就是要怎样处理这些源文件了。...关于开发者如何配置Tree Shaking最后会讲到。...搞定,一个实用的组件库就发布完成了,快来动手试试吧。

2.2K40

在SQL Server里如何进行页级别的恢复

在今天的文章里我想谈下每个DBA应该知道的一个重要话题:在SQL Server里如何进行页级别还原操作。...我们来破坏一个页 第一步我想向你展示下如何建立表(或索引)里有个特定页损坏的情景,这里我们会进行一些魔术,因为开箱即用(out-of-box)的SQL Server本身不会引入任何损坏的页(如果有的话,...恭喜你找到了一个BUG)。...小结 在SQL Server里如何进行页级别恢复操作是每个DBA应该知道的。它是你工具箱里最重要的工具之一——尤其当你在处理很大的数据库时。...最后给你一个问题,各位看官:你是否有过在SQL Server进行页级别的恢复,如果是的话——对你来说它有多难/简单?请畅所欲言! 感谢关注!

79850

OpenCloudOS 如何基于 eBPF 实现容器级别的TCP 连接监控?

本文,将从网络的角度介绍如何基于 eBPF,实现容器级别的 TCP 连接监控。  ...本文,将从网络的角度介绍如何基于 eBPF,实现容器级别的 TCP 连接监控。  ...eBPF 在引入内核后,逐渐演进成为一个通用执行引擎,可基于此开发性能分析工具,网络过滤器等。eBPF 程序架构强调安全性和稳定性,看上去像内核模块,但却并不需要重新编译内核。...基于整机的系统级别的网络监控、追踪工具无法实现容器级别的控制,并不适用于云原生的容器场景。...如何实现更加精细的 cgroup、进程级别的资源监控,帮助管理员更好的了解系统的资源使用情况,已经成为广泛关注的问题,因此监控工具的容器化实现尤为重要。

36420
领券