redis官网关于数据类型的介绍: Understand Redis data types | Redis

本文简单讲解后物种数据类型的命令和应用场景。

Redis中特殊场景的数据类型(Streams、Geospatial indexes、Bitmaps、Bitfields、HyperLogLog)-LMLPHP

Streams:

Stream是一种数据结构,其作用类似于仅附加日志。 Stream有助于按事件发生的顺序记录事件,然后将它们联合起来进行处理。 可以用作与阻塞队列。

Geospatial indexes:

用来存储经纬度坐标,我们存储了很多坐标之后,就可以让用户给我们一个坐标然后去查找周围的坐标点。这个功能在地图上应用广泛。

Bitmap:

Bitmaps位图:本质上还是一个集合,属于Set类型对整数的优化版本。

Bitfields:

Bitfields和C中的位域非常相似,后侧的数字描述这个成员变量占几个bit位,本质上是为我们提供了一种精准进行位操作的方法。

Redis中特殊场景的数据类型(Streams、Geospatial indexes、Bitmaps、Bitfields、HyperLogLog)-LMLPHP

HyperLogLog:

应用场景只有一个,估算集合中的元素个数。使用Set去统计UV(用户访问次数)会保存用户唯一标识,如果UV数据量非常大那么就要消耗很大的内存空间。HyperLogLog可以最多使用12KB去完成统计UV的工作。HyperLogLog不会去记录元素内容,但能够记住元素的特征,从而当添加元素的时候HyperLogLog就可以知道这个元素是新增的元素,还是已经存在的元素。但是HyperLogLog会有一点误差:(看不懂这个误差指的是整体的估算个数的误差,还是每一次添加元素是判断是都已经存在的误差,还是其他意思的误差)

The Redis HyperLogLog implementation uses up to 12 KB and provides a standard error of 0.81%.

pfadd:

添加数据,返回0或1:

pfadd key element [element ...]

pfcount:

获取集合中元素个数,支持同时获取多个集合的元素个数:查询一个集合的元素个数的时间复杂度是O(1)。

pfcount key [key ...] 

pfdebug:

内部命令,用于测试和开发

pfmerge:

合并两个HLL集合,返回ok.

PFMERGE destkey [sourcekey [sourcekey ...]]

pfselftest: 

也是内部命令:

03-30 18:58