BitMaps
Chivas-Regal
# 基本操作
把某个特征的 状态映射到二进制的一位上。
比如有 个人要判断他们有没有戴帽子,我们可以让戴帽子的人状态为 ,没有戴的人状态为 ,则对于总状态 我们可以判断出,从左往右第三个人和第五个人带了帽子。
这样就把一组 状态描述出来了。
这是一个在 String 上扩展出 api 的数据类型,其本质仍是 String 。
getbit key offset
:获取 key 对应偏移量上的 bit 值setbit key offset value
:设置 key 对应偏移量上的 bit 值
-- bits = "110"
127.0.0.1:6379> setbit bits 1 1
(integer) 0
127.0.0.1:6379> setbit bits 2 1
(integer) 0
127.0.0.1:6379> getbit bits 2
(integer) 1
-- bits = 6 = '`'
-- 因为 256 一字节,以 256 进制存,这里只有一位就是 6
127.0.0.1:6379> get bits
"`"
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# 业务需要:信息统计
业务需要:一个电影网站统计每天/周/月/年每部电影是否被点播。
业务思路:只需要每天产生一个新的二进制串,用于保存当天的电影点播状态,到每周/月/年底的时候,将范围内的二进制串按位与一遍即可获得最后的状态。
bitop op destKey key1 [key2 ...]
:对指定的 key 按位交/并/非/异或操作,结果保存为 destKeyop=and
:交op=or
:并op=not
:非op=xor
:异或
bitcount key [start end]
:统计指定 key 中 的数量