Redis中bitmap的妙用
在Redis中我们经常用到set,get等命令,细心的你有没有发现,还有几个相似的命令叫setbit,getbit,它们是用来干嘛的? BitMap是什么 就是通过一个bit位来表示某个元素对应的值或者状态,其中的key就是对应元素本身。我们知道8个bit可以组成一个Byte,所以bitmap本身会极大的节省储存空间。 Redis中的BitMap Redis从2.2.0版本开始新增了setbit,getbit,bitcount等几个bitmap相关命令。虽然是新命令,但是并没有新增新的数据类型,因为setbit等命令只不过是在set上的扩展。 setbit命令介绍 指令 SETBIT key offset value 复杂度 O(1) 设置或者清空key的value(字符串)在offset处的bit值(只能0或者1)。 空间占用、以及第一次分配空间需要的时间 在一台2010MacBook Pro上,offset为2^32-1(分配512MB)需要~300ms,offset为2^30-1(分配128MB)需要~80ms,offset为2^28-1(分配32MB)需要~30ms,offset为2^26-1(分配8MB)需要8ms。<来自官方文档> 大概的空间占用计算公式是:($offset/8/1024/1024)MB 使用场景一:用户签到 很多网站都提供了签到功能