一、简述
前面一篇文章中,我们已经介绍过了《Redis基本数据类型》,这些基本数据类型对于大多数的业务需求都可以很好的满足,但是对于这些基本数据类型,在一些特殊的场景中,却并不一定适用,下面我们来介绍一下Redis提供的一些扩展数据类型和时序数据库模块。
bitmap:基于bit位的存储,每一个bit存储0或1,一般用来进行海量数据的精准判重
HyperLogLog:一般用来对海量数据进行基于概率的基数统计,比如说网站的独立访客数、独立IP数等
Geo:基于地理空间的数据存储,常应用在那些基于位置服务,也就是我们常说的LBS(Location-Based Service)的应用,比如说打车等生活服务类应用
Stream:消息流,Redis自5.0版本之后,引入了消息队列的机制,也就是我们熟悉的Pub/Sub(发布/订阅)机制。
RedisTimeSeries:时间数据库模块,主要存储一些跟时间戳相关,需要范围查询,聚合计算等场景的数据集
二、Bitmap
Bitmap,也叫位图,通过二进制bit中的0或1来表示,某个位置的标记,因为每一个bit都只能是0或1,所以通常用来表示一个数据(通常对应于数组下标)是否已经存在(存在的话,该bit位上是1,否则为0)。下面,我们看看具体的存储结构,如下图所示: