php对于redis的上亿用户登录统计

9 篇文章 0 订阅

可以用于上限超大的连续性的数字编号统计,在不牺牲查询速度的前提下,缩小存储空间。

如用户id的统计,统计当天内访问网站的用。节约了32倍的空间。

 

上亿用户登录统计
存储模型设计
因为有上亿的用户量,所以可以将每个用户按照每个位来存入,每一天都有一个bitmap,每个bitmap的每一位对应着一个用户的当天的登录状态值

数据id设计
每天的bitmap的key设置成当天日期,比如login_20181206,而用户的id就和位数对应,比如王五的id为8,则bitset login_20181206 8 1

<?php
$redis = new Redis();
$redis->connect('*******');
$redis->auth('*******');

$cacheKey = 'bitmap';
//我们将7,8,10对应的位置设置为1
$redis->setBit($cacheKey, 7, 1);
$redis->setBit($cacheKey, 8, 1);
$redis->setBit($cacheKey, 10, 1);
$redis->setBit($cacheKey, 15, 1);
$redis->setBit($cacheKey, 15005, 1);//user_id 1


$value = $redis->get($cacheKey);

$bitmap = unpack('C*', $value);
$count = 0;
foreach($bitmap as $key => $number) {
    for($i = 0; $i < 8; $i++) {
        if($number >> $i & 1) {
            $count++;
        }
    }
}
var_dump($count);


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值