博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
05 redis中的Setbit位图法统计活跃用户
阅读量:6544 次
发布时间:2019-06-24

本文共 1141 字,大约阅读时间需要 3 分钟。

一:场景=>>>长轮询Ajax,在线聊天时,能够用到 Setbit 的实际应用场景: 1亿个用户, 每个用户 登陆/做任意操作  ,记为 今天活跃,否则记为不活跃每周评出: 有奖活跃用户: 连续7天活动每月评,等等...思路: Userid   dt  active1        2013-07-27  11       2013-0726   1如果是放在表中, 1:表急剧增大,2:要用group ,sum运算,计算较慢用: 位图法 bit-mapLog0721:  ‘011001...............0’......log0726 :   ‘011001...............0’Log0727 :  ‘0110000.............1’1: 记录用户登陆:每天按日期生成一个位图, 用户登陆后,把user_id位上的bit值置为12: 把1周的位图  and 计算, 位上为1的,即是连续登陆的用户redis 127.0.0.1:6379> setbit mon 100000000 0(integer) 0redis 127.0.0.1:6379> setbit mon 3 1(integer) 0redis 127.0.0.1:6379> setbit mon 5 1(integer) 0redis 127.0.0.1:6379> setbit mon 7 1(integer) 0redis 127.0.0.1:6379> setbit thur 100000000 0(integer) 0redis 127.0.0.1:6379> setbit thur 3 1(integer) 0redis 127.0.0.1:6379> setbit thur 5 1(integer) 0redis 127.0.0.1:6379> setbit thur 8 1(integer) 0redis 127.0.0.1:6379> setbit wen 100000000 0(integer) 0redis 127.0.0.1:6379> setbit wen 3 1(integer) 0redis 127.0.0.1:6379> setbit wen 4 1(integer) 0redis 127.0.0.1:6379> setbit wen 6 1(integer) 0redis 127.0.0.1:6379> bitop and  res mon feb wen(integer) 12500001如上例,优点:1: 节约空间, 1亿人每天的登陆情况,用1亿bit,约1200WByte,约10M 的字符就能表示2: 计算方便

 

转载地址:http://dwldo.baihongyu.com/

你可能感兴趣的文章
Apache Thrift 教程
查看>>
Python Epoll
查看>>
AS3歌词同步详解
查看>>
单例模式
查看>>
Linux环境NetBeans字体通用抗据齿解决方法
查看>>
Eclipse的花括号(brace)的输入偏好问题
查看>>
Android开发 获取当前activity的屏幕截图
查看>>
工作记录
查看>>
python之重写父类方法
查看>>
cucumber-api安装与试用
查看>>
计算硬件简史
查看>>
医生工作台1期
查看>>
JS-两周内自动登录功能
查看>>
jQuery自适应倒计时插件
查看>>
转:JQuery.Ajax之错误调试帮助信息
查看>>
Android KeyCode列表
查看>>
网站爬取工具
查看>>
amazeui学习笔记--css(HTML元素5)--表格Table
查看>>
JavaScript&jQuery.强制类型转换
查看>>
Workgroup下开启Win7的Admin share
查看>>