模拟redis位图操作bitmap 统计日活跃用户数
假设一年有100天以上登录过,则为活跃用户
import redis#连接redisr =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 统计键所对应的值中有多少个1for 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)
如果觉得《模拟redis位图操作bitmap 统计日活跃用户数》对你有帮助,请点赞、收藏,并留下你的观点哦!