IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 七天玩转Redis | Day3 Redis地理位置、基数统计、位图场景使用详解 -> 正文阅读

[大数据]七天玩转Redis | Day3 Redis地理位置、基数统计、位图场景使用详解

Redis之Gaospatial地理位置

国内城市经纬度在线查询工具http://www.jsons.cn/lngcode/

我们如果在Redis中查询位置,则需要先在数据库中输入该坐标。

在这里插入图片描述

添加一个或多个地理位置的坐标
我们使用GEOADD指令来添加地理位置坐标
语法:GEOADD key longitude latitude member [longitude latitude member ...]

  • key表示地理位置的索引
  • longitude表示该位置的经度
  • latitude表示该位置的纬度
  • member表示地名

我们以输入郑州经纬度为例
在这里插入图片描述
因为郑州是中国的城市,因此我们可以定义深圳的索引key为“china:city”。
在这里插入图片描述

注意:Gaospatial地理位置中,多个城市可以使用同一个key。查询地址时可以通过索引+地名的形式查询。

查询一个或多个地理位置坐标
语法:GEOPOS key member [member ...]

有则返回经纬度,没有则返回null。在这里插入图片描述
查询两地之间的距离
语法:GEODIST key member1 member2 [unit]

  • member1为第一个位置名称
  • member2为第二个位置名称
  • [unit]为显示的单位,可以是m(米,默认)、km(千米)、ft(英尺)、mi(英里)

在这里插入图片描述

以坐标为中心来范围搜索地理位置
语法:GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC]

  • key为要查询的地理位置的索引
  • longitude为该地理位置的经度
  • latitude为该地理位置的纬度
  • radius表示要查询的半径
  • m|km|ft|mi表示单位
  • [WITHCOORD]可选,表示是否输出经纬度
  • [WITHDIST]可选,表示是否输出距离
  • [WITHHASH]可选,表示是否输出哈希值
  • [COUNT count]可选,表示输出几个数据
  • [ASC|DESC]可选,表示按照距离升序还是降序排列,ASC升序,DESC降序

以位置为中心来范围搜索地理位置
语法:GEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC]

  • key为要查询的地理位置的索引
  • member为要作为中心点的地理位置
  • radius表示要查询的半径
  • m|km|ft|mi表示单位
  • [WITHCOORD]可选,表示是否输出经纬度
  • [WITHDIST]可选,表示是否输出距离
  • [WITHHASH]可选,表示是否输出哈希值
  • [COUNT count]可选,表示输出几个数据
  • [ASC|DESC]可选,表示按照距离升序还是降序排列,ASC升序,DESC降序

Redis之HyperLoglog基数统计

Redis 经常使用的数据类型有字符串、列表、散列、集合和有序集合,但这些类型并不能满足所有的应用场景,因此,Redis 的后续版本不断的扩增其他数据类型来增强 Redis 适用能力。在 Redis 2.8.9 版本中新增了 HyperLogLog 类型。

HyperLoglog采用了基数估计算法,所以它得到的结果一定会存在误差(标准误差为0.81%),适用于海量数据的计算与统计,特点是占用空间小,计算速度快。

基数计算(cardinality counting)指的是统计一批数据中的去掉重复元素后数据的个数。比如集合 {1,2,3,1,2} ,它的基数集合为 {1,2,3} ,所以基数为 3。HyperLogLog 正是通过基数估计算法来统计输入元素的基数。

HyperLoglog 不会存储元素值本身,只能统计数量。

添加指定元素
语法:PFADD key element [element ...]

  • key为数据集的索引
  • element为数据集中的数据

创建三个数据集,索引分别为mynum1,mynum2,mynum3:
在这里插入图片描述

统计数据集的基数估算值
语法:PFCOUNT key [key ...]

注意,数据集中的重复元素是需要去掉统计的。

在这里插入图片描述

合并数据集
语法:PFMERGE destkey sourcekey [sourcekey ...]

  • destkey为要合并到的数据集的名称
  • sourcekey为要合并的数据集的索引

比如我们将“mynum1”和“mynum2”合并并集为“mynum4”,再求“mynum4”的基数,得到13,是因为其中的f和g重复。
在这里插入图片描述

Redis之Bitmap位图场景

Bitmap位图是通过二进制实现的,其中存储的数据要么是0,要么是1,ep:{0,1,1,0,1,0,0}。而且位图中每一个数据都是有唯一的一个下标对应的,与数组类似。

由于位图的数据存储是由0,1存储,因此我们可以应用于统计用户签到次数,上班打卡次数,只要是事件可以通过0|1表示的都可以使用Bitmap表示。
Bitmap同样属于string数据类型。在Redis中一个字符串类型的值最多能存储512MB的内容,每个字符串由多个字节组成,每个字节由8个Bit位组成,因此Bitmap的存储上限为 2 32 2^{32} 232

输入位图数据集

用来设置或者清除某一位上的值,其返回值是原来位上存储的值。key 在初始状态下所有的位都为 0 。

语法:SETBIT key offset value

  • key为该数据集的索引
  • offset为要输入的数据的下标
  • value为要输入的数据,0或1

统计“1”的个数
语法:BITCOUNT key [start end]

  • key表示位图数据集的索引
  • [start end]表示开始和结束的下标,默认不写就是统计数据集中所有数据

获取指定位置的值
语法:GETBIT key offset

  • key为该数据集的索引
  • offset为要输入的数据的下标
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-01-24 10:57:59  更:2022-01-24 10:59:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 14:55:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码