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的統計,統計當天內訪問網站的用。