Redis提供对字符串的按位操作,位图把字符串抽象成一个bool类型的数组,可以进行按位操作
比如说我有一个字符串“a” 那他的位图如下
(位) | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
(值) | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 |
Redis中对位提供的操作有以下几种
- setbit key offset value getbit key offset
-
127.0.0.1:6379> set k1 2 OK 127.0.0.1:6379> getbit k1 1 (integer) 0 127.0.0.1:6379> setbit k1 1 1 (integer) 0 127.0.0.1:6379> get k1 "r"
-
127.0.0.1:6379> bitcount k1 0 7 (integer) 4
- bittop 命令对于所给定的k1 k2 按位操作存入 destkey中
- bittop and destkey k1 k2 .... 求交集
- bittop or destkey k1 k2 ... 并集
- bittop xor destkey k1 k2 .. 亦或
- bit not destkey k1 取非
- bitpos key targetbit start end 寻找在start和end范围中第一个 位与 targetbit 相等的位置。
127.0.0.1:6379> bitpos k1 1 //不写范围 默认全部范围 (integer) 1
可以用于上限超大的连续性的数字编号统计,在不牺牲查询速度的前提下,缩小存储空间。
如用户id的统计,统计当天内访问网站的用。