Redis位图操作
码农的秃头之旅 人气:0定义
1、位图不是真正的数据类型,它是定义在字符串类型中
2、一个字符串类型的值最多能存储512M字节的内容,位上限:2^32
# 1MB = 1024KB # 1KB = 1024Byte(字节) # 1Byte = 8bit(位)
强势点
可以实时的进行统计,极其节省空间。官方在模拟1亿2千8百万用户的模拟环境下,在一台MacBookPro上,典型的统计如“日用户数”的时间消耗小于50ms, 占用16MB内存
SETBIT 命令
- 说明:设置某位置上的二进制值
- 语法:SETBIT key offset value
- 参数:offset - 偏移量 从0开始
value - 0或者1
示例:
# 默认扩展位以0填充 127.0.0.1:6379> SET mykey ab OK 127.0.0.1:6379> GET mykey "ab" 127.0.0.1:6379> SETBIT mykey 0 1 (integer) 0 127.0.0.1:6379> GET mykey "\xe1b" 127.0.0.1:6379>
GETBIT 命令
- 说明:获取某一位上的值
- 语法:GETBIT key offset
示例:
127.0.0.1:6379> GETBIT mykey 3 (integer) 0 127.0.0.1:6379> GETBIT mykey 0 (integer) 1 127.0.0.1:6379>
BITCOUNT 命令
- 说明:统计键所对应的值中有多少个 1
- 语法:BITCOUNT key start end
- 参数:start/end 代表的是 字节索引
示例:
127.0.0.1:6379> SET mykey1 ab OK 127.0.0.1:6379[4]> BITCOUNT mykey (integer) 6 127.0.0.1:6379[4]> BITCOUNT mykey 0 0 (integer) 3
应用场景案例
# 网站用户的上线次数统计(寻找活跃用户) 用户名为key,上线的天作为offset,上线设置为1 # 示例 用户名为 user1:login 的用户,今年第1天上线,第30天上线 SETBIT user1:login 0 1 SETBIT user1:login 29 1 BITCOUNT user1:login
加载全部内容