使用setbit、bitcount实现用户上线次数统计
2017-06-29 11:15
477 查看
1.语法
SETBIT key offset value | |
对 key 所储存的字符串值,设置或清除指定偏移量offset上的位(bit)。 位的设置或清除取决于 value 参数,value参数取值 0 或者 1。 字符串会进行伸展(grown)以确保它可以将 value 保存在指定的偏移量上。当字符串值进行伸展时,空白位置以 0 填充。 offset 参数必须大于或等于 0 ,小于 2^32 (bit 映射被限制在 512 MB 之内)。 | |
返回值 | 指定偏移量原来储存的位。 |
实例 | SETBIT bit 3 1 # 1000 设置偏移量3(从右往左)的值为1 |
BITCOUNT key | |
计算key 所储存的字符串值中,被设置为 1 的比特位的数量。 | |
返回值 | 被设置为 1 的位的数量。 |
实例 | redis> BITCOUNT bits (integer) 0 redis> SETBIT bits 0 1 # 0001 (integer) 0 redis> BITCOUNT bits (integer) 1 redis> SETBIT bits 3 1 # 1001 (integer) 0 redis> BITCOUNT bits (integer) 2 |
BITCOUNT key start end | |
计算key 所储存的字符串值中,指定字节区间[start,end]被设置为 1 的比特位的数量。 注意:redis的setbit设置或清除的是bit位置,而bitcount计算的是byte位置,1byte=8bit。 start 和 end 参数的设置和 GETRANGE 命令类似,都可以使用负数值:比如 -1 表示最后一个字节,而 -2 表示倒数第二个字节,以此类推。 | |
返回值 | 指定字节区间被设置为 1 的位的数量。 |
实例 | 127.0.0.1:6379> setbit bitc 1 1 #10 (integer) 0 127.0.0.1:6379> setbit bitc 2 1 #110 (integer) 0 127.0.0.1:6379> bitcount bitc 1 2 #可以发现,返回值为1。因为bitc所储存的字符串值,总共才3位110,占一个字节。第二个字节到第三个字节区间,被设置为1的比特位数量当然为0。 (integer) 0 127.0.0.1:6379> bitcount bitc 0 0 #返回2,验证bitcount计算的是byte位置 (integer) 2 |
2.实现用户上线次数统计
# coding:utf-8 ''' @author: cold pip install redis pip install hiredis ''' import redis r = redis.Redis(host='127.0.0.1', port=6379, db=0) ''' 理解: A用户 100010001000001 //活跃了4天 B用户 111111111111111 //每日必到 ''' #模拟A用户 ,一年中 每三天登录一次。 for i in range(3, 365, 3): r.setbit('ua', i, 1) #模拟B用户,一年中 每60天登录一次。 for i in range(1, 365, 60): r.setbit('ub', i, 1) userList = r.keys('u*') #用户列表 print userList #存放活跃用户列表 Au = [] #存放非活跃用户列表 Nau = [] for u in userList : # 计算登录次数 loginCount = r.bitcount(u) if loginCount > 100 : # 列表添加元组 ()对象 Au.append((u, loginCount)) else : Nau.append((u, loginCount)) for l in Au : print l[0] + ' 是活跃用户. 登陆' + str(l[1]) + '天' for l in Nau : print l[0] + ' 是非活跃用户. 登陆' + str(l[1]) + '天'
结果:
['ub', 'ua'] ua 是活跃用户. 登陆121天 ub 是非活跃用户. 登陆7天
相关文章推荐
- 使用 Redis Bitmap 实现用户上线次数统计
- 使用redis的setbit和bitcount来进行区间统计的坑
- 由计算机产生0-9之间的随机整数,用户输入猜测的数据,统计用户猜测的次数。产生随机数可以使用Math.rangom()静态方法,该方法返回正的double类型浮点数位于(0.0 1.0】间。
- 使用cookie实现统计访问者登陆次数
- jedis 实现 redis 统计一个用户在一段时间内的登录次数
- 【JSP】使用application统计所有用户对某网页的访问次数
- [Java SE] JSP使用application统计所有用户对某网页的访问次数
- 统计输入中所有单词出现的次数(使用二叉查找树实现:递归和非递归)
- servlet相关知识,使用servlet实现定时刷新,实现页面登录次数统计
- Servlet实现用户请求次数的统计
- redis使用bitmaps实现网站活跃用户的统计
- 实现wordpress文章浏览次数统计—使用WP-Postviews插件
- mysql中BIT_COUNT的统计使用
- redis-利用setbit实现活跃用户统计
- redis的setbit,getbit,bitcount的使用详解
- mysql中使用bit_count来统计使用
- 掷骰子统计各个面出现的次数 调用函数实现 使用全局变量
- 使用TreeMap集合实现统计字符出现次数
- 使用Application和SessionID实现在线用户列表统计
- shell实现:对两个文件A[用户id,操作次数]及文件B[用户id,性别],合并得到C[用户id,操作次数,性别],并统计出男女用户操作所占的比例