高级数据类型除了有 5 大基本数据类型外,还有 GEO(地理位置类型)、HyperLogLog(统计类型)、Stream(流类型) 。
GEO(地理位置类型)是 Redis 3.2 版本中新增的数据类型,用于存储和查询地理位置的,使用它我们可以实现查询附近的人或查询附近的商家等功能(这部分的内容会在后面的章节单独讲解) 。
Stream(流类型)是 Redis 5.0 版本中新增的数据类型,因为使用 Stream 可以实现消息消费确认的功能,使用“xack key group-key ID”命令,所以此类型的出现给 Redis 更好的实现消息队列提供了很大的帮助 。
HyperLogLog(统计类型)是本文介绍的重点,HyperLogLog (下文简称为 HLL) 是 Redis 2.8.9 版本添加的数据结构,它用于高性能的基数 (去重) 统计功能,它的缺点就是存在极低的误差率 。
HLL 具有以下几个特点:
- 能够使用极少的内存来统计巨量的数据,它只需要 12K 空间就能统计 2^64 的数据;
- 统计存在一定的误差,误差率整体较低,标准误差为 0.81%;
- 误差可以被设置辅助计算因子进行降低 。
1.添加元素
127.0.0.1:6379> pfadd key "redis"(integer) 1127.0.0.1:6379> pfadd key "java" "sql"(integer) 1复制
相关语法: pfadd key element [element ...] 此命令支持添加一个或多个元素至 HLL 结构中 。2.统计不重复的元素
127.0.0.1:6379> pfadd key "redis"(integer) 1127.0.0.1:6379> pfadd key "sql"(integer) 1127.0.0.1:6379> pfadd key "redis"(integer) 0127.0.0.1:6379> pfcount key(integer) 2复制
从 pfcount 的结果可以看出,在 HLL 结构中键值为 key 的元素,有 2 个不重复的值:redis 和 sql,可以看出结果还是挺准的 。相关语法: pfcount key [key ...]此命令支持统计一个或多个 HLL 结构 。
3.合并一个或多个 HLL 至新结构新增 k 和 k2 合并至新结构 k3 中,代码如下:
127.0.0.1:6379> pfadd k "java" "sql"(integer) 1127.0.0.1:6379> pfadd k2 "redis" "sql"(integer) 1127.0.0.1:6379> pfmerge k3 k k2OK127.0.0.1:6379> pfcount k3(integer) 3复制
相关语法:pfmerge destkey sourcekey [sourcekey ...] ** pfmerge 使用场景:当我们需要合并两个或多个同类页面的访问数据时,我们可以使用 pfmerge 来操作 。总结本文我们介绍了 Redis 的 5 大基础数据类型的概念以及简单的使用:String(字符串类型)、Hash(字典类型)、List(列表类型)、Set(集合类型)、ZSet(有序集合类型),还深入的介绍了 ZSet 的底层数据存储结构:ziplist (压缩列表) 或 skiplist (跳跃表) 。除此之外我们还介绍了 Redis 中的提前 3 个高级的数据类型:GEO(地理位置类型)用于实现查询附近的人、HyperLogLog(统计类型)用于高效的实现数据的去重统计(存在一定的误差)、Stream(流类型)主要应用于消息队列的实现 。
【Redis 有哪些数据类型?】
推荐阅读
- 刘备有诸葛亮和五虎上将为啥会输,刘备的五虎上将是哪五虎
- 深入解析什么是磁盘阵列技术?常用的磁盘阵列有哪几种?
- 抓包工具fiddler都有哪些高级功能,一文带你全面了解它
- 普洱茶有什么功效,云南普洱茶有什么功效
- 莲子心茶什么人不能喝,哪些人不能喝莲子心茶
- 人工智能神经网络中的基础概念有哪些?
- Java虚拟机 - JVM是什么?
- 朱瞻基和朱元璋谁厉害,朱瞻基有什么功绩
- 韩信的成语典故是什么,韩信有关的成语有几个
- 女性喝桂花茶的好处,喝桂花茶的好处主要有哪些