当前第2页 返回上一页
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | for ( $i = 1; $i <= 7; $i ++) {
$key = "userlogin_" . date ( 'Ymd' , time() - (86400* $i ));
if ( $i == 1) {
$redis ->bitOp( 'and' , 'week_logined' , $key );
} else {
$redis ->bitOp( 'and' , 'week_logined' , 'week_logined' , $key );
}
}
$userIds = [];
for ( $i =1; $i <=10000; $i ++) {
$ret = $redis ->getBit( 'week_logined' , $i );
$ret && $userIds [] = $i ;
if ( count ( $userIds ) >=50) break ;
}
|
这里面有一个注意点,也是易错点,在bitop时候,第一次的时候,因为week_logined还不存在,所以进行op的键只有一个。当从第二次开始时候,进行op的键就为2个了。
获取一个月内登陆的用户,思路基本和上面一样,只是将and改为or
1 2 3 4 5 6 7 8 9 10 11 | for ( $i = 1; $i <= 3; $i ++) {
$key = "userlogin_" . date ( 'Ymd' , time() - (86400* $i ));
$redis ->bitOp( 'or' , 'month_loginOnce' , 'month_loginOnce' , $key );
}
$userIds = [];
for ( $i =1; $i <=10000; $i ++) {
$ret = $redis ->getBit( 'month_loginOnce' , $i );
$ret && $userIds [] = $i ;
}
|
可以看到,在进行or的时候和and还是有些区别的。or的时候,无需对第一次进行判断。个中缘由,大家自己体会体会。
以上就是使用Redis的bitmaps统计活跃用户的详细内容,更多文章请关注木庄网络博客!
返回前面的内容
相关阅读 >>
Redis缓存有什么好处
Redis键过期设置
什么功能需要使用Redis
浅谈centos 7安装Redis的方法
Redis默认端口号是多少
Redis的key可以是中文吗
Redis源码是什么语言
讲解Redis发布订阅演示、事务演示、持久化
Redis是单线程的原因及高并发快的3大原因详解
Redis消息队列如何防止数据丢失
更多相关阅读请进入《Redis》频道 >>
机械工业出版社
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。
转载请注明出处:木庄网络博客 » 使用Redis的bitmaps统计活跃用户