Bootstrap

分布式布隆过滤器

guava框架的问题

笔者曾经也想过,既然guava只是个框架,那为什么不包装成一个项目,把API封装在接口中对外提供服务呢?

可是实际上,这种操作所带来的问题极多,解决起来,成本高的可怕,后面会做对比讲解。

redis的bitmap实现

bitmap是什么?

【位图不是实际的数据类型,而是在String类型上定义的一组面向位的操作】

这句话很笼统,下面笔者详细解释一下这句话。

bitmap的核心API

SETBIT key offset value
GETBIT key offset
BITCOUNT key [start] [end]
BITOP operation destkey key [key ...]
BITOPS key targetBit [start] [end] (2.8.7版本)

详情参考http://doc.redisfans.com/ 

你会发现,这些API都在String这一栏,说明什么?说明所谓都位图其实就是String对象。

String对象的底层数据结构

很多人都说redis的5个数据类型,面试中也常这么问,但笔者还是觉得叫对象比较好

至于为什么?马上会讲

我们可以看到,String对象底层对应了3种编码,2种数据结构

;