






















设置0或1到Bitmap
SETBIT key offset valuekey 键offset 偏移位,从0开始计算value 只能是0或1例:
127.0.0.1:6379> setbit k1 1 1
(integer) 1
127.0.0.1:6379> setbit k1 2 1
(integer) 1
127.0.0.1:6379> setbit k1 3 1
(integer) 1验证:Bitmap基于String数据类型的
127.0.0.1:6379> type k1
string获取0或1,不是1就默认0
127.0.0.1:6379> getbit k1 1
(integer) 1
127.0.0.1:6379> getbit k1 2
(integer) 1
127.0.0.1:6379> getbit k1 3
(integer) 1
127.0.0.1:6379> getbit k1 4
(integer) 0不是字符串长度而是Bitmap占据几个字节,按照8位一组扩容,统计有多少组
127.0.0.1:6379> setbit k3 0 1
(integer) 0
127.0.0.1:6379> setbit k3 7 1
(integer) 0
127.0.0.1:6379> strlen k3
(integer) 1
127.0.0.1:6379> setbit k3 8 1
(integer) 0
127.0.0.1:6379> strlen k3
(integer) 2一个bitmap中从START到END有多少个1,不加START|END统计全部
BITCOUNT KEY [START|END]例:
127.0.0.1:6379> bitcount k3
(integer) 3对bitmap进行二进制运算(与AND、或OR、非NOT、异或XOR)保存结果到DESTKEY KEY中
BITOP AND|OR|NOT|XOR DESTKEY KEY [KEY ...]例:
准备数据
127.0.0.1:6379> setbit bin1 0 1
(integer) 0
127.0.0.1:6379> setbit bin1 1 1
(integer) 0
127.0.0.1:6379> setbit bin1 2 0
(integer) 0
127.0.0.1:6379> setbit bin1 3 1
(integer) 0
127.0.0.1:6379> setbit bin2 0 0
(integer) 0
127.0.0.1:6379> setbit bin2 1 1
(integer) 0
127.0.0.1:6379> setbit bin2 2 1
(integer) 0
127.0.0.1:6379> setbit bin2 3 0测试:BITOP AND
127.0.0.1:6379> BITOP AND bintemp bin1 bin2
(integer) 1查看写入到bintemp中的结果
127.0.0.1:6379> getbit bintemp 0
(integer) 0
127.0.0.1:6379> getbit bintemp 1
(integer) 1
127.0.0.1:6379> getbit bintemp 2
(integer) 0
127.0.0.1:6379> getbit bintemp 3
(integer) 0| 命令 | 作用 | 时间复杂度 |
|---|---|---|
| setbit | 给指定key的值的第offset赋值val | O(1) |
| getbit | 获取指定key的第offset位 | O(1) |
| bitcount | 返回指定key中[start,end]中为1的数量 | O(n) |
| bitop | 对不同的二进制存储数据进行位运算(AND、OR、NOT、XOR) | O(n) |
使用场景:
1.统计签到、登录、打卡等,例如:ID为10001的用户2025年5月的第12个工作日未打卡
setbit sign:uid_10001:202505 12 0此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。