redis位图法统计活跃用户+统计3天的连续登录用户案例
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天的连续登录用户案例相关推荐
- redis位图法bitmap统计活跃用户
位图法 位图(bitmap),就是用位(bit)来表示存放的某种状态,如开关,有无.在redis中,字符串是以二进制的形式存储的,因此位图在redis中并不是一种数据类型,而是一种字符串的表现形式.位 ...
- mysql踢掉登录用户_centos 强制踢掉某登录用户的方法
linux是一个多用户操作系统,用户可以在不同的地方链接上LINUX服务器,在系统中我们可以用w或者who来查看用户 [root@7273 ~]# who root pts/0 2018-05-5 2 ...
- 注销linux用户的方法,Linux下注销登录用户的方法
当我们在进行Linux系统操作的时候,有时会出现断网但用户并没有退出登录的情况,这时就需要使用注销来处理了,下面小编就给大家介绍下Linux下注销用户的方法,一起来了解下吧. 经常在操作Linux的时 ...
- linux用户自动输入密码,Linux自动输入密码登录用户
每次进去Linux系统,都有切换root用户,输入密码很麻烦,所以就写了一个小脚本,自动输入密码,登录到root用户, 1,首先检查一些是否安装了expect root@wuzs:/home/wuzs ...
- jwt怎么获取当前登录用户_spring oauth2如何获取当前登录用户信息
使用spring oauth2框架做授权鉴定.想获取当前用户信息怎么办? 我们知道spring oauth2是基于spring security的实现的. spring security可以通过Sec ...
- 如何查看域控计算机是哪个用户登陆,查看域控制器上登录用户
如何查看当前域控登录验证的用户?域内多台域控制器,如何查看某台域控制器上当前登录的用户或计算机?系统自动的工具好像没有实现此需求的办法,有无像脚本或者其他的思路来满足此需求呢?是指验证过的用户或计算机 ...
- sybase登录用户管理2
修改登录用户 登录用户创建后,如需调整,则系统管理员sa可以使用ASE中的sp_modefylogin系统过程修改其设置. 语法: sp_modifylogin {loginname | " ...
- cookie之登录用户凭证
简述 说到cookie,我想前端开发都有听说过吧,cookie的本质就是用来存储数据的,但不能存太多数据. cookie大多数是用来辨别用户身份的,但不止这一种用途,这就要看具体项目了. 今天我们要说 ...
- Spring boot显示登录用户
显示登录用户 用户登录成功 页面显示登录用户信息 获取Session中,登录用户信息 使用Thymeleaf行内写法 [[${session.loginUser}]]
最新文章
- eclipse工程中查看android源码
- 《Storm实时数据处理》一2.6 统计与持久化日志统计信息
- DNS与Active Directory在两台服务器分别布署
- 初识Mongodb总结
- c# java gt;gt;gt;,相同的字节数组=gt; Java和C#中的不同BigInteger值
- SAP财务中国本土化报表
- Redis学习笔记之二 :在Java项目中使用Redis
- 归并排序比较次数_归并排序「从入门到放弃」
- 【转】你没有变强是因为你一直很舒服
- java 单例 生命周期_单例模式--- 声明周期托管方式
- Java的重载与覆盖,傻傻分不清!
- awk输出指定行,awk如何取反
- 安全扫描工具_固件级安全,微软安全工具新增UEFI扫描功能
- 漏洞 立即留言_漏洞挖掘小白入坑指南
- 1018 锤子剪刀布 (20 分)—PAT (Basic Level) Practice (中文)
- C# 一次性获取二维数组中的一维数组数据
- 2015-数学(3)
- Java Document 工具类
- latex公式图片识别(转换为latex语法格式)
- python获取元素在数组中的位置