在redis里有一个特殊的数据结构 bitmap,底层是byte数组即字符串;该数据结构将每一个bit位都运用起来了,我们可以通过api设置对应位上的值;
api
命令 | 说明 | 示例 |
---|---|---|
setbit key offset value | 设置key对应offset位的值 | setbit str 2 1 |
getbit key offset | 获得key对应offset上的值 | getbit str 2 |
bitmap一个重要特性是节省空间,适合二值状态数据存储
常见使用场景:
- 用户签到状态,可以设计成 key为userid , value 为offset最大值为365的bitmap,签到一天就设置对应天数(offset)上的value为1
- 实现布隆过滤器,offset可以设计成需要比较对象的hash值,如果出现一次就把对应的offset上设值为1
todo~~