310-Redis(高级数据类型Bitmaps & HyperLogLog & GEO)

本文介绍了Redis中的高级数据类型,包括Bitmaps用于统计和跟踪状态,如每日电影点播情况;HyperLogLog用于高效地估算不重复元素数量,适用于基数统计;以及GEO数据类型,用于处理地理位置信息,支持查找附近坐标点等操作。这些数据类型在节省存储空间的同时提供了强大的功能。
摘要由CSDN通过智能技术生成

高级数据类型

  • Bitmaps
  • HyperLogLog
  • GEO

高级数据类型用于解决单一业务

1、Bitmaps

1.1、Bitmaps定义

在这里插入图片描述

  • redis中这种数据类型叫string,只不过前面我们是以string为一个整体进行操作的,现在以string中存储的二进制位来操作的;
  • Bitmaps并不是一个全新的数据类型,是string类中的二进制位的一个操作接口!

1.2、Bitmaps类型的基础操作

在这里插入图片描述
测试:
在这里插入图片描述

  • 使用setbit设置bits的0号位上的数字为1;
  • 使用getbit获取对应位上的值(如果不存在,也是返回0)

对应位不存在的情况:(也是返回0)
在这里插入图片描述
如果在一个很高的位置上,设置一个1,前面的为孩子都会补0,这样很耗时。(如果都是从10000000位开始操作的,建议都先减一个10000000再进行操作)
在这里插入图片描述

1.3、Bitmaps类型的扩展操作

在这里插入图片描述
1、统计每天某一部电影是否被点播;
在这里插入图片描述
将电影做成一个offset,0就没有点播!

2、统计每天有多少部电影被点播;
在这里插入图片描述
查下‘1’的数量即可!

3、统计每周/月/年有多少部电影被点播;
在这里插入图片描述
将每天的Bitmaps存储下来,然后做逻辑或操作即可!

4、统计年度哪部电影没有被点播;
在这里插入图片描述
看看第3个哪个位置为0即可!


在这里插入图片描述
测试:
在这里插入图片描述
bitcount操作:
在这里插入图片描述
在这里插入图片描述
对20880808和20880809这两个key进行 或 操作:
在这里插入图片描述
结果为5!(也就代表这两天总共有5部电影被看了)

在这里插入图片描述

2、HyperLogLog

2.1、统计不重复数据的数量

在这里插入图片描述
注意: 2000万的位也是会消耗很大的内存空间的!

2.2、基数统计

基数:

  • 基数是数据集去重后元素个数
  • HyperLogLog 是用来做基数统计的,运用了LogLog的算法

在这里插入图片描述

2.3、HyperLogLog类型的基本操作

在这里插入图片描述
测试:
在这里插入图片描述

只有2个基数!
在这里插入图片描述

2.4、HyperLogLog相关说明

  • 用于进行基数统计,不是集合,不保存数据,只记录数量而不是具体数据
  • 核心是基数估算算法,最终数值存在一定误差
  • 误差范围: 基数估计的结果是一个带有 0.81% 标准错误的近似值
  • 消耗空间极小,每个hyperloglog key占用了12K的内存用于标记基数
  • pfadd命令不是一次性分配12K内存使用,会随着基数的增加内存逐渐增大
  • Pfmerge命令合并后占用的存储空间为12K,无论合并之前数据量多少

3、GEO:地理位置

3.1、GEO定义

GEO地理位置: 给你一个地理位置,再给你一个地理位置,能做一些操作。

在这里插入图片描述
注意: 计算出来的位置是不考虑垂直方向的距离的,只有水平距离!

3.2、GEO类型的基本操作

在这里插入图片描述
key是将若干个坐标点添加到一个容器中!


测试:

1、添加点 和 获取坐标点
在这里插入图片描述
将a和b点都放在了geos这个容器中!

2、计算坐标点距离
在这里插入图片描述
也可以加上m和km的单位:
在这里插入图片描述


现在想看下附近有多少人?
在这里插入图片描述
测试:
在这里插入图片描述

1、georadiusbymember:根据点求范围内的数据;

求(2,2)这个点附近180km内的范围的点有多少个?

在这里插入图片描述
在这里插入图片描述

2、georadius:根据坐标求范围内的数据

求1.5 1.5这个坐标的90km范围内的数据!

在这里插入图片描述

3、geohash

geohash:自己特有的方法计算出的一个值!

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liufeng2023

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值