场景1:统计用户A在今年以来的上线次数

基础知识:

setbit 用于设置某个key某个offset下面比特位的值,只能是0或1

bitcount 用于统计每个key中,比特位被标记为1的个数

如:

> setbit a 0 1
> setbit a 1 0
> setbit a 2 1               // a的值为 101
> bitcount a
return > 2

例子:

> setbit A 0 0
> setbit A 1 1
> setbit A 2 0
> setbit A 3 1
> setbit A 4 0
> ...
> setbit A 365 1> bitcount A
return > 3

即使运行 10 年,占用的空间也只是每个用户 10*365 比特位(bit),也即是每个用户 456 字节。

场景2:统计连续登陆3天的用户总数

第一天 day 1

0 0 1 0 1
user_id = 4 user_id = 3 user_id = 2 user_id = 1 user_id = 0
> setbit key user_id [is_login]
> setbit day1 0 1
> setbit day1 1 0
> setbit day1 2 1
> setbit day1 3 0
> setbit day1 4 0

第一天 day 2

1 0 1 0 1
user_id = 4 user_id = 3 user_id = 2 user_id = 1 user_id = 0
> setbit day2 0 1
> setbit day2 1 0
> setbit day2 2 1
> setbit day2 3 0
> setbit day2 4 1

第一天 day 3

1 0 1 0 1
user_id = 4 user_id = 3 user_id = 2 user_id = 1 user_id = 0
> setbit day3 0 1
> setbit day3 1 0
> setbit day3 2 1
> setbit day3 3 0
> setbit day3 4 1

利用 bitop 进行按位并操作

BITOP可能是一个缓慢的命令,它的时间复杂度是O(N)。 在处理长字符串时应注意一下效率问题。

bitop AND destkey_Total3 day1 day2 day3bitcount destkey_Total3return > 2

利用 Redis Bitmap 统计用户在线次数相关推荐

  1. Teams数据统计 - 用户在线离线状态

    前几天我在wechat的moments里看到以为朋友发了腾迅会议的对用户个人的年度数据统计,看上去很有大数据感.    实际上 Teams 也具备的类似的能力,只是它把这个能力开放给了开发人员,我们可 ...

  2. SessionListener与SessionAttributeListener统计用户在线问题

    最近用户急要一个在线统计用户列表的模块,在网上搜了些例子,大部分都是用SessionListener统计在线人数的,无法得到具体访问的用户列表.尝试了一下用 HttpSessionAttributeL ...

  3. 腾讯面试:bitmap统计元素出现次数,使用较少内存

    有10亿个uint32元素,判断其中是否有相同元素. 看到这个大数据的题目,还有内存限制,就用bitmap.在数据量比较少的情况下用hash表也是个不错的方法. 这里要用2个bitmap,占用总内存1 ...

  4. 统计用户在线登录人数

    2019独角兽企业重金招聘Python工程师标准>>> 服务器启动时,开启一个线程进行记录,线程对象中定义一个静态变量 public class ResourceLog implem ...

  5. redis位图法bitmap统计活跃用户

    位图法 位图(bitmap),就是用位(bit)来表示存放的某种状态,如开关,有无.在redis中,字符串是以二进制的形式存储的,因此位图在redis中并不是一种数据类型,而是一种字符串的表现形式.位 ...

  6. Redis bitmap、hyperlog、布隆过滤器、RoaringBitmap原理应用场景与日活的统计的具体应用

    传统方案-mysql 缺点: 1.空间占用大 2.统计逻辑复杂,比如 统计最近 30 天用户的累计活跃天(每个用户在 30 天里有 N 天使用 app,N 为 1-30,然后将月活跃用户的 N 天加总 ...

  7. redis bitmap

    2019独角兽企业重金招聘Python工程师标准>>> 今天无意中看到了redis的一些基本应用场景,记录一下bitmap的用法,觉得比较实用. 下面摘取看到的内容 位操作(大数据处 ...

  8. python统计英文单词出现次数并把结果生成字典

    最近舍友在学Python,有个作业是为了解决统计单词出现次数并把结果输出成字典这个问题,感觉挺有趣的,就写了一段demo代码,分享在博客上,希望对你有所帮助. 1.解决思路 (1)排除掉其他干扰项. ...

  9. redis 用setbit(bitmap)统计活跃用户

    getspool.com的重要统计数据是实时计算的.Redis的bitmap让我们可以实时的进行类似的统计,并且极其节省空间.在模拟1亿2千8百万用户的模拟环境下,在一台MacBookPro上,典型的 ...

最新文章

  1. POJ1887解题报告(最长下降子序列)
  2. 服务器网站显示多协议,解决高防IIS8服务器https协议多个同时访问的解决方法
  3. JDBC连接sql server数据库
  4. webstorm 左侧文件目录树(不显示,怎么办?) - 设置篇
  5. SpatiaLite空间索引(一)
  6. 【Flink】requested virtual cores for application master 1 exceeds the maximum number of virtual cores
  7. Morpheus:虚拟现实的新杀器
  8. 操作手册与用户手册的区别
  9. Kubernetes Pod健康检查-livenessProbe和readinessProbe
  10. 高通 NFC开发基础知识 之 “NDEF及NFC Record”
  11. #牛客网 吐泡泡 (栈)
  12. 处理大数据的关键技术及应用
  13. 南卡和漫步者蓝牙耳机哪个好?高性价比蓝牙耳机深度对比
  14. 【数据结构】栈的应用-算术表达式求值#数据结构实验任务书
  15. 语音识别相关会议期刊、资料、主页博客
  16. freeswitch呼入落地测试信息
  17. 数据数仓的三种建模方式
  18. Suricata高性能配置
  19. Aspect Based Sentiment Analysis经典模型
  20. Windows系统中怎样使用12.7及其以上版本的iTunes 制作Iphone手机铃声

热门文章

  1. SPOJ AMR12E Dyslexic Gollum 解题报告
  2. Linux命令之more(11)
  3. Android图片轮播效果
  4. Qemu使用及常见开发板的模拟
  5. 手绘黑板粉笔主题教学课件PPT模板
  6. 《一分钟经理人》十分钟阅读完一本书-思维导图
  7. 专科段《生产与运作管理》课程复习资料(5)——分析计算题
  8. 应届生,找java后端开发要什么水平才算合格?
  9. 辽宁自考 Java语言程序设计 课程代码 01019 备考整理(一)
  10. 原创100篇文章,产品经理大百科到底写了啥?