Setbit
场景: 1亿个用户, 每个用户 登陆/做任意操作 ,记为今天活跃,否则记为不活跃
用法
周一:1001 0001 1001 0101 1011 0101
周二:1101 0001 1011 0101 1101 0111
周三:1011 0001 1001 0111 1011 0111
1登录用户在位上设置为1,没有登录的用户在位上设置为0
2每一位标识一个用户ID,如1001 0001代表有3个用户登录
3使用and交集,结果是1的用户说明这3天使连续登录的
周一:1001 0001 1001 0101 1011 0101
and
周二:1101 0001 1011 0101 1101 0111
and
周三:1011 0001 1001 0111 1011 0111
= :1001 0001 1001 0101 1001 0101

以上说明,= :1001 0001 1001 0101 1001 0101位上为1的用户都是连续3天都有登录的用户。

redis中的实现

--设置 周一 1001 0001
127.0.0.1:6379> setbit one 7 0
(integer) 0
127.0.0.1:6379> setbit one 0 1
(integer) 0
127.0.0.1:6379> setbit one 3 1
(integer) 0
127.0.0.1:6379> setbit one 7 1--设置 周二 1101 0001
127.0.0.1:6379> setbit two 7 0
(integer) 0
127.0.0.1:6379> setbit two 0 1
(integer) 0
127.0.0.1:6379> setbit two 1 1
(integer) 0
127.0.0.1:6379> setbit two 3 1
(integer) 0
127.0.0.1:6379> setbit two 7 1
--设置 周三 1011 0001127.0.0.1:6379> setbit third 7 0
(integer) 0
127.0.0.1:6379> setbit third 0 1
(integer) 0
127.0.0.1:6379> setbit third 2 1
(integer) 0
127.0.0.1:6379> setbit third 3 1
(integer) 0
127.0.0.1:6379> setbit third 7 1
(integer) 0

统计3天的连续登录用户案例

127.0.0.1:6379> bitop and res one two third
(integer) 1
127.0.0.1:6379> getbit res 0
(integer) 1
127.0.0.1:6379> getbit res 1
(integer) 0
127.0.0.1:6379> getbit res 2
(integer) 0
127.0.0.1:6379> getbit res 3
(integer) 1
127.0.0.1:6379> getbit res 4
(integer) 0
127.0.0.1:6379> getbit res 5
(integer) 0
127.0.0.1:6379> getbit res 6
(integer) 0
127.0.0.1:6379> getbit res 7
(integer) 1

结果是1001 0001 ,说明在0位,3位,7位的用户这3天都有登录

转载于:https://www.cnblogs.com/feiZhou/p/9344193.html

redis位图法统计活跃用户+统计3天的连续登录用户案例相关推荐

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

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

  2. mysql踢掉登录用户_centos 强制踢掉某登录用户的方法

    linux是一个多用户操作系统,用户可以在不同的地方链接上LINUX服务器,在系统中我们可以用w或者who来查看用户 [root@7273 ~]# who root pts/0 2018-05-5 2 ...

  3. 注销linux用户的方法,Linux下注销登录用户的方法

    当我们在进行Linux系统操作的时候,有时会出现断网但用户并没有退出登录的情况,这时就需要使用注销来处理了,下面小编就给大家介绍下Linux下注销用户的方法,一起来了解下吧. 经常在操作Linux的时 ...

  4. linux用户自动输入密码,Linux自动输入密码登录用户

    每次进去Linux系统,都有切换root用户,输入密码很麻烦,所以就写了一个小脚本,自动输入密码,登录到root用户, 1,首先检查一些是否安装了expect root@wuzs:/home/wuzs ...

  5. jwt怎么获取当前登录用户_spring oauth2如何获取当前登录用户信息

    使用spring oauth2框架做授权鉴定.想获取当前用户信息怎么办? 我们知道spring oauth2是基于spring security的实现的. spring security可以通过Sec ...

  6. 如何查看域控计算机是哪个用户登陆,查看域控制器上登录用户

    如何查看当前域控登录验证的用户?域内多台域控制器,如何查看某台域控制器上当前登录的用户或计算机?系统自动的工具好像没有实现此需求的办法,有无像脚本或者其他的思路来满足此需求呢?是指验证过的用户或计算机 ...

  7. sybase登录用户管理2

    修改登录用户 登录用户创建后,如需调整,则系统管理员sa可以使用ASE中的sp_modefylogin系统过程修改其设置. 语法: sp_modifylogin {loginname | " ...

  8. cookie之登录用户凭证

    简述 说到cookie,我想前端开发都有听说过吧,cookie的本质就是用来存储数据的,但不能存太多数据. cookie大多数是用来辨别用户身份的,但不止这一种用途,这就要看具体项目了. 今天我们要说 ...

  9. Spring boot显示登录用户

    显示登录用户 用户登录成功 页面显示登录用户信息 获取Session中,登录用户信息 使用Thymeleaf行内写法 [[${session.loginUser}]]

最新文章

  1. eclipse工程中查看android源码
  2. 《Storm实时数据处理》一2.6 统计与持久化日志统计信息
  3. DNS与Active Directory在两台服务器分别布署
  4. 初识Mongodb总结
  5. c# java gt;gt;gt;,相同的字节数组=gt; Java和C#中的不同BigInteger值
  6. SAP财务中国本土化报表
  7. Redis学习笔记之二 :在Java项目中使用Redis
  8. 归并排序比较次数_归并排序「从入门到放弃」
  9. 【转】你没有变强是因为你一直很舒服
  10. java 单例 生命周期_单例模式--- 声明周期托管方式
  11. Java的重载与覆盖,傻傻分不清!
  12. awk输出指定行,awk如何取反
  13. 安全扫描工具_固件级安全,微软安全工具新增UEFI扫描功能
  14. 漏洞 立即留言_漏洞挖掘小白入坑指南
  15. 1018 锤子剪刀布 (20 分)—PAT (Basic Level) Practice (中文)
  16. C# 一次性获取二维数组中的一维数组数据
  17. 2015-数学(3)
  18. Java Document 工具类
  19. latex公式图片识别(转换为latex语法格式)
  20. python获取元素在数组中的位置

热门文章

  1. 2019_8_1python
  2. Springboot-application.properties
  3. 漫谈Java IO之 Netty与NIO服务器
  4. php 实现栈与队列
  5. UESTC_秋实大哥与快餐店 2015 UESTC Training for Data StructuresProblem C
  6. SQL:ISNULL
  7. Qt-qml元素布局
  8. 在c#中将debug/release下文件打包成一个可直接运行exe文件
  9. C++中map的使用
  10. 栈中函数调用原理_详解