当前位置: 首页 > article >正文

Java面试场景题(1)---如何使用redis记录上亿用户连续登陆天数

感谢uu们的观看,话不多说开始~

对于这个问题,我们需要先来了解一下~

海量数据都可以用bitmap来存储,因为占得内存小,速度也很快

我大概计算了一下~

完全够:
String类型=512M

1byte = 8个bit位 = 8个状态

512M=1024byte*1024*512*8=4294967296个状态,所以呢,用bitmap我们的内存是可以存下的

bitmap 0 0 0 0 0 0 0 0 0 0   0   0  0 

            0 1 2 3 4 5 6 7 8 9 10 11 12 ....4294967296

 主要怎么使用呢?

连续签到或者连续登陆?

可以用每天或者用户Id两个维度来存储bitmap

但是存储方式不一样,统计的方式也不一样

如:(根据每天)(适用用户量多的)

 前提(Id唯一的数字,比如id为5),那么你第一天 用户5 登录了,你可以存储为一...第二天...二...以此类推,到最后一天,以当天为起点,然后往前面推算,凡是碰到1的,就把他给统计,碰到0,就不再给用户继续统计,即可!但缺点(如图所示),不建议统计超过30天(如游戏签到)

因为统计太长内存变多数量增加,30天就设置key为30,过期就结束~         

    


http://www.kler.cn/news/361442.html

相关文章:

  • 数据结构与算法:贪心算法与应用场景
  • 秃姐学AI系列之:语义分割 + 数据集 | 转置卷积 + 代码
  • Java学习Day50:唤醒八戒(Excel相关)
  • 操作系统学习笔记-1.1操作系统的基本概念
  • 设计循环双端队列
  • LeetCode 精选 75 回顾
  • Web3的核心概念:去中心化如何改变互联网
  • 【C++刷题】力扣-#350-两个数组的交集II
  • Vue.js 学习总结(9)—— Vue 3 组件封装技巧
  • 零知识学习WLAN漫游二、无线漫游介绍(2)
  • Altium Designer 入门基础教程(三)
  • 10.22 MySQL
  • LabVIEW共享变量通信故障
  • Ubuntu20.04系统安装opencv
  • windows连接linux服务器上的jupyter lab
  • 16. Redis异步队列
  • 《测试能否转产品经理?——优势与难点并存的转型之路》
  • 用神经网络自动玩游戏
  • 文件上传漏洞详解----适合网络安全小白
  • 设计模式之设计模式分类
  • SQL自学:存储过程的理解、应用与语法
  • 微服务开发-Nacos服务治理
  • 前端算法:链表(力扣141、237题解法)
  • 15分钟学Go 第7天:控制结构 - 条件语句
  • 前端开发:Vue中数据绑定视图
  • 云计算的一些基本概念