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|Day3Redis地理位置,基数统计,位图场景详解 -> 正文阅读

[大数据]七天玩转Redis|Day3Redis地理位置,基数统计,位图场景详解

.

1.Gaospatial地理位置

1.添加一个或多个地理位置的坐标

  • 经纬查询

城市经纬度查询-国内城市经度纬度在线查询工具

GeoAdd key longitude latitude member [longitude latitude member ...]

  • key为该地理位置的索引
  • longitude表示该位置的经度
  • latitude表示该位置的纬度
  • member表示地名
  • [longitude latitude member ...]表示可以重复添加,中间以空格分隔
127.0.0.1:6379> GEOADD china:city 114.08 22.54 shenzhen
(integer) 1
127.0.0.1:6379> GEOADD china:city 114.08 22.54 shenzhen
(integer) 1
127.0.0.1:6379> GEOADD china:city 116.10 39.90 beijing
(integer) 1
127.0.0.1:6379> GEOADD china:city 113.66 34.75 zhengzhou
(integer) 1
127.0.0.1:6379> GEOADD china:city 112.54 37.85 taiyuan
(integer) 1
127.0.0.1:6379> GEOADD china:city 113.28 23.12 guangzhou
(integer) 1
127.0.0.1:6379>  GEOADD china:city 120.15 30.28 hangzhou 118.76 32.04 nanjing
(integer) 2

2.查询一个或多个地理位置坐标

GeoPos key member [member...]

127.0.0.1:6379> GEOPOS china:city zhengzhou
1) 1) "113.65999907255172729"
   2) "34.74999926510690784"
127.0.0.1:6379> GEOPOS china:city beijing changsha
1) 1) "116.09999924898147583"
   2) "39.90000009167092543"
2) (nil)

3.查询两地之间距离

GeoDist key member1 member2 [unit] //unit 单位

127.0.0.1:6379> GEODIST china:city zhengzhou hangzhou
"785609.9719"
127.0.0.1:6379> GEODIST china:city zhengzhou hangzhou m
"785609.9719"
127.0.0.1:6379> GEODIST china:city shenzhen beijing km
"1940.2709"

4.以坐标为中心来范围搜索地理位置

//我们平常都会使用到附近的人功能,或者以自己为中心搜索附近,Redis中可以使用命令GEORADIUS来指定附近多少米以内的地理位置的查询。

GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC]

  • radius表示要查询的半径
  • m|km|ft|mi表示单位
  • [WITHCOORD]可选,表示是否输出经纬度
  • [WITHDIST]可选,表示是否输出距离
  • [WITHHASH]可选,表示是否输出哈希值
  • [COUNT count]可选,表示输出几个数据
  • [ASC|DESC]可选,表示按照距离升序还是降序排列,ASC升序,DESC降序
127.0.0.1:6379> GEORADIUS china:city 114.05 22.52 1000 km
1) "shenzhen"
2) "guangzhou"

127.0.0.1:6379> GEORADIUS china:city 114.05 22.52 1500 km WITHCOORD
1) 1) "shenzhen"
   2) 1) "114.08000081777572632"
      2) "22.53999903789756587"
2) 1) "guangzhou"
   2) 1) "113.27999979257583618"
      2) "23.1199990030198208"
3) 1) "hangzhou"
   2) 1) "120.15000075101852417"
      2) "30.2800007575645509"
4) 1) "zhengzhou"
   2) 1) "113.65999907255172729"
      2) "34.74999926510690784"
5) 1) "nanjing"
   2) 1) "118.75999957323074341"
      2) "32.03999960287850968"

127.0.0.1:6379> GEORADIUS china:city 114.05 22.52 1500 km WITHDIST
1) 1) "shenzhen"
   2) "3.8011"
2) 1) "guangzhou"
   2) "103.3692"
3) 1) "hangzhou"
   2) "1055.1042"
4) 1) "zhengzhou"
   2) "1360.8264"
5) 1) "nanjing"
   2) "1156.3230"

127.0.0.1:6379> GEORADIUS china:city 114.05 22.52 1500 km COUNT 2
1) "shenzhen"
2) "guangzhou"

5.以位置为中心类范围搜索地理位置

GEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC]

  • radius表示要查询的半径
  • m|km|ft|mi表示单位
  • [WITHCOORD]可选,表示是否输出经纬度
  • [WITHDIST]可选,表示是否输出距离
  • [WITHHASH]可选,表示是否输出哈希值
  • [COUNT count]可选,表示输出几个数据
  • [ASC|DESC]可选,表示按照距离升序还是降序排列,ASC升序,DESC降序
127.0.0.1:6379> GEORADIUSBYMEMBER china:city taiyuan 800 km
1) "zhengzhou"
2) "taiyuan"
3) "beijing"

2)Hyperloglog基数统计

基数计算(cardinality counting)指的是统计一批数据中的抛去重复元素后数据的个数

1)创建一组数据

PFADD key element [element ...]

  • element为数据集中的数据,可以输入多个,中间以空格分隔
127.0.0.1:6379> PFADD mynum1 a b c d e f g
(integer) 1
127.0.0.1:6379> PFADD mynum2 f g h i j k l m
(integer) 1
127.0.0.1:6379> PFADD mynum3 n o p q n
(integer) 1

2)统计数据集是基数数量

PFCOUNT key [key ...]

127.0.0.1:6379> PFCOUNT mynum3
(integer) 4
127.0.0.1:6379> PFCOUNT mynum1
(integer) 7

3)合并数据集

PFMERGE destkey sourcekey [sourcekey ...]

  • destkey为要合并到的数据集的名称
  • sourcekey为要合并的数据集的索引,可以存在多个,中间以空格分隔
127.0.0.1:6379> PFMERGE mynum4 mynum1 mynum2
OK
127.0.0.1:6379> PFCOUNT mynum4
(integer) 13

3)Bitmap

在Redis中的Bitmap位图是通过操作二进制位来实现的,在其中存储的数据要么是0,要么是1,比如下面这个{0,1,1,0,0,0,0}。而且位图中的每一个数据都是有唯一的一个下标对应的,和我们学习的数组类似。

1.输入位图数据集

SETBIT key offset value

  • offset为要输入的数据的下标
  • value为要输入的数据,0或1
127.0.0.1:6379> SETBIT mybit1 0 0    #下标为0表示第一天
(integer) 0
127.0.0.1:6379> SETBIT mybit1 1 1    #下标为1表示第二天
(integer) 0
127.0.0.1:6379> SETBIT mybit1 2 0    #下标为2表示第三天
(integer) 0
127.0.0.1:6379> SETBIT mybit1 3 0
(integer) 0
127.0.0.1:6379> SETBIT mybit1 4 1
(integer) 0
127.0.0.1:6379> SETBIT mybit1 5 1
(integer) 0
127.0.0.1:6379> SETBIT mybit1 6 0
(integer) 0

2.统计“1”的个数

BITCOUNT key [start end]

  • [start end]表示开始和结束的下标,默认不写就是统计数据集中所有数据
127.0.0.1:6379> BITCOUNT mybit1
(integer) 3

4)Conclude

  • 学到了一些地图的操作,受益匪浅
  • 感觉对于Redis的功能有更多的了解,觉得学到了些不一样的东西,真正不会的的东西
  • 期待明天
  大数据 最新文章
实现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:03 
 
开发: 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:23:04-

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