模拟redis位图操作bitmap 统计日活跃用户数

模拟redis位图操作bitmap 统计日活跃用户数


假设一年有100天以上登录过,则为活跃用户

import redis

#连接redis
r  =redis.Redis(host='redis数据库服务器IP地址',port=6379,db='数据库号'#模拟4个用户,user:001和user: 002非活跃,user:003和user:004为活跃
#设置指定位的值: setbit(key,offset,value)
r.setbit('user:001',0,1)
r.setbit('user:001',29,1)
r.setbit('user:002',199,1)

#假设一个每隔两天登录一次,一个每隔三天登录一次
for i in range(0,365,2):	
	r.setbit('user:003,i,1)
for i in range(0,365,3):
	r.setbit('user:004',i,1)

#将所有用户放到列表中:keys xxx*/keys * 查看键,得到的是列表,里面装的是字节串
#use_list = [b'user:001',b'user:002',...]
user_list = r.keys('user:*')

#最终结果格式:
#活跃用户:[('user:003',xxx),('user:004',xxx)]

active_users = []
inactive_users = []
#统计每个用户一年中总访问次数:bitcount key 统计键所对应的值中有多少个1
for user in user_list:
	count  = r.bitcount(user)
	if count >= 100:
		active_users.append((user.decode(),count))
	else:
		inactive_user.append((userdecode(),count))	

print('活跃用户:',active_users)
print('非活跃用户:',inactive_users)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值