10万用户一年365天的登录情况如何用redis存储,并快速检索任意时间窗内的活跃用户

技术文章 5个月前 完美者
1,275 0

标签:top   计算   运算   view   red   检索   string   loading   auto   

1、redsi的bitmap数据结构介绍

bitmap本质上是一个string类型,只是他操作的是string的某个位是0还是1。

setbit和getbit 两条命令是对字符串的位操作。每个位只能是0/1,然后用Bitcount命令计算这个key有多少个1。

例如执行 setbit ‘a‘ 10 1命令
redis会存以下数据

技术图片

Bit运算,BITOP 支持四种表达式运算: AND(交集), OR(并集), XOR(异或) 和NOT(取非), 用法如下:
BITOP AND result srckey1 srckey2 srckey3 ... srckeyN
BITOP OR result srckey1 srckey2 srckey3 ... srckeyN
BITOP XOR result srckey1 srckey2 srckey3 ... srckeyN
BITOP NOT result srckey

2、记录用户每天的登录情况

以日期为key,userId为偏移量,执行命令setbit day useId 1
例如:小梅(userId= 1992)和小明(userId=9877)在 2020-10-01日登录;
setbit ‘2020-10-01‘ 1992 1
setbit ‘2020-10-01‘ 9877 1

小梅(userId= 1992)和小达(userId=10000)在 2020-10-02日登录;
setbit ‘2020-10-02‘ 1992 1
setbit ‘2020-10-02‘ 10000 1

3、统计2020-10-01和2020-10-02活跃的用户数量只需要执行命令

bitcount ‘2020-10-01‘
bitcount ‘2020-10-02‘
技术图片

4、统计2020-10-01到2020-10-02这个时间端活跃的用户数量只需要执行命令

bitop or ‘result‘ ‘2020-10-01‘ ‘2020-10-02‘
bitcount ‘result‘
技术图片

5、查询小梅在2020-10-01日有没有登录只需执行命令

getbit ‘2020-10-01‘ 1992
技术图片

10万用户一年365天的登录情况如何用redis存储,并快速检索任意时间窗内的活跃用户

标签:top   计算   运算   view   red   检索   string   loading   auto   

原文地址:https://www.cnblogs.com/yeyongjian/p/13938389.html

暂无评论

暂无评论...