1、Bitmap位存储
Bitmap存储的是连续的二进制数字(0和1)。
你可以将Bitmap看作是一个存储二进制数字(0和1)的数组,数组中每个元素的下标叫做offset(偏移量)。
应用场景,需要保存状态信息(0/1即可表示)的场景。举例,用户签到情况、活跃用户情况、用户行为统计(比如是否点赞过某个视频)。
2、HyperLogLogs基数统计
HyperLogLog是一种有名的基数计数概率算法,基于LogLogCounting(LLC)优化改进得来,并不是Redis特有的,Redis只是实现了这个算法并提供了一些开箱即用的API。
Redis提供的HyperLogLog占用空间非常非常小,只需要12k的空间就能存储接近2^64个不同元素。
基数计数概率算法为了节省内存并不会直接存储元数据,而是通过一定的概率统计方法预估基数值(集合中包含元素的个数)。因此,HyperLogLog的计数结果并不是一个精确值,存在一定的误差(标准误差为0.81%)。
应用场景,数量量巨大(百万、千万级别以上)的计数场景。举例,热门网站每日/每周/每月访问ip数统计、热门帖子uv统计。
3、Geospatial地理位置
Geospatialindex(地理空间索引,简称GEO)主要用于存储地理位置信息,基于SortedSet实现。
通过GEO我们可以轻松实现两个位置距离的计算、获取指定位置附近的元素等功能。
GEO底层是SortedSet,你可以对GEO使用SortedSet相关的命令。
应用场景,需要管理使用地理空间数据的场景。举例,附近的人。