【Redis】三种特殊数据类型:Geographical 地理位置、Hyperloglog、Bitmaps 位存储

1 Geographical 地理位置

1.1 介绍

例如朋友的定位,附近的人,两地之间的距离,方圆几里的人,都可以用此数据类型实现,Geographical 数据类型在 Redis 3.2 就已经推出了。

在官方文档中,此数据类型一共有 8 个命令:
在这里插入图片描述

这里推荐一个查城市经纬度的网站:http://www.jsons.cn/lngcode

1.2 添加地理位置

GEOADD key [NX|XX] [CH] longitude latitude member [longitude latitude member …]

这里说个问题,我认为官方把经纬度给写反了,下面的语法提示和上面官方给出的命令结构,都是纬度在前经度在后,而当我如下,按纬度,经度来添加北京时却报错,而官方也说明了经纬度的范围,按经度在前,纬度在后就可以添加,因此很明显,我认为是官方搞错了(此条命令作为错误案例我就不改了,下面的相关命令我都将改正为经纬度的顺序)。

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

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

1.3 获取地点的地理位置

GEOPOS key member [member …]
在这里插入图片描述

1.4 获取两个位置间的距离

GEODIST key member1 member2 [m|km|ft|mi]
在这里插入图片描述

1.5 以指定经纬度为中心,找出某一半径内的元素

GEORADIUS key latitude longitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count [ANY]] [ASC|DESC] [STORE key] [STOREDIST key]
在这里插入图片描述

在这里插入图片描述

1.6 查询以指定元素为中心的其他元素

GEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count [ANY]] [ASC|DESC] [STORE key] [STOREDIST key]
在这里插入图片描述

1.7 将二维的经纬度转换为一维的字符串

GEOHASH key member [member …]
在这里插入图片描述

1.8 GEO 原理:用 Zset 实现其他操作

GEO 底层实现原理就是 Zset,我们可以用 Zset 命令来操作 Geo
在这里插入图片描述


2 Hyperloglog

2.1 介绍

(如果允许容错的话,可以使用,Hyperloglog 有 0.81 % 的错误率

首先说一下基数的概念,基数(cardinal number)是集合论中刻画任意集合所含元素数量多少的一个概念。比如数据集 {1, 3, 5, 7, 5, 7, 8}, 那么这个数据集的基数集为 {1, 3, 5 ,7, 8}, 基数(不重复元素)为5。 基数估计就是在误差可接受的范围内,快速计算基数。

Redis 在 2.8.9 版本添加了 HyperLogLog 结构。

Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基 数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。但是,因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像集合那样,返回输入的各个元素。

可以统计网页的 UV(User Views),因为一个人访问网站多次,也算一个 UV,有 0.81 % 的错误率,在统计 UV 中可以忽略不计。

2.2 填加元素

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

2.3 统计元素个数

在这里插入图片描述

2.4 合并两 hp 中的元素(并集)

在这里插入图片描述


3 Bitmaps

3.1 介绍

可用于统计用户活跃或不活跃的状态,登录或未登录的状态,打开或未打卡的状态,只要是两个状态的内容,都可以使用 Bitmaps 存储。

3.2 增加 key 及其值

SETBIT key 索引 值

(如下图,可用于记录 zlc 一周的打卡情况)
在这里插入图片描述

3.3 获取值

GETBIT key 下标
在这里插入图片描述

3.4 统计某 key 的值中 1 的个数

BITCOUNT key
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

超周到的程序员

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

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

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

打赏作者

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

抵扣说明:

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

余额充值