Redis Geo HyperLogLog类型介绍

JoshWill 2019-11-26 原文

Redis Geo HyperLogLog类型介绍

​Geo类型
Redis3.2.0版本推出
可以将用户给定的地理位置信息存储起来,并对这些信息进行操作

GEOADD key longitude latitude member [longitude latitude member ...]
//在使用排序集表示的地理空间索引中添加一个或多个地理空间项,时间复杂度O(log(N))
127.0.0.1:6379> geoadd key1 121.3996887207031 31.04559326171875 member1 116.3883056640625 39.92889404296875 member2
(integer) 2

GEODIST key member1 member2 [unit]
//返回地理空间索引的两个成员之间的距离,时间复杂度O(log(N))
127.0.0.1:6379> geodist key1 member1 member2
"1086809.8477"//默认单位为m
127.0.0.1:6379> geodist key1 member1 member2 m
"1086809.8477"
127.0.0.1:6379> geodist key1 member1 member2 km
"1086.8098"
127.0.0.1:6379> geodist key1 member1 member2 ft
"3565649.1067"//英尺
127.0.0.1:6379> geodist key1 member1 member2 mi
"675.3140"//英里

GEOHASH key member [member ...]
//将地理空间索引的成员作为标准的geohash字符串返回,时间复杂度O(log(N))
127.0.0.1:6379> geohash key1 member1 member2
1) "wtw2de8t9v0"
2) "wx4g0kz6sj0"

GEOPOS key member [member ...]
//返回地理空间索引成员的经度和纬度,时间复杂度O(log(N))
127.0.0.1:6379> geopos key1 member1 member2
1) 1) "121.39969021081924438"
   2) "31.0455930059736076"
2) 1) "116.38830453157424927"
   2) "39.92889337816622941"

GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]
//官方解释:查询表示地理空间索引的已排序集,以获取与给定的最大距离相匹配的成员
//以给定的经纬度为中心,返回给定key包含的位置元素当中,与给定的中心不超过给定最大距离的所有位置元素,时间复杂度为O(N+log(M)),N为指定半径范围内的元素个数,M为要返回的个数
//WITHDIST:在返回位置元素的同时将位置元素与中心之间的距离也一并返回,距离的单位和用户给定的范围单位保持一致
//WITHCOORD:将位置元素的经度和维度也一并返回
//WITHHASH:以52位有符号整数的形式,返回位置元素经过原始geohash编码的有序集合分值,这个选项主要用于底层应用或者调试,实际中的作用并不大
//命令默认返回未排序的位置元素。通过以下两个参数,用户可以指定被返回位置元素的排序方式:
ASC:根据中心位置,按照从近到远的方式返回位置元素
DESC:根据中心位置,按照从远到近的方式返回位置元素
//COUNT:获取前N个匹配元素
127.0.0.1:6379> geoadd key2 121.3996887207031 31.04559326171875 member1 116.3883056640625 39.92889404296875 member2 113.5325012207031 34.68359375 member3 115.9332885742188 28.55000305175781 member4
(integer) 4
127.0.0.1:6379> georadius key2 116.3883056640625 39.92889404296875 1500 km
1) "member4"
2) "member1"
3) "member3"
4) "member2"
127.0.0.1:6379> georadius key2 116.3883056640625 39.92889404296875 1500 km withcoord withdist withhash
1) 1) "member4"
   2) "1266.3179"
   3) (integer) 4051459586134239
   4) 1) "115.93328922986984253"
      2) "28.55000287189253072"
2) 1) "member1"
   2) "1086.8099"
   3) (integer) 4054751755931817
   4) 1) "121.39969021081924438"
      2) "31.0455930059736076"
3) 1) "member3"
   2) "635.6729"
   3) (integer) 4064933024035472
   4) 1) "113.53250294923782349"
      2) "34.6835946401745403"
4) 1) "member2"
   2) "0.0001"
   3) (integer) 4069885541758997
   4) 1) "116.38830453157424927"
      2) "39.92889337816622941"
127.0.0.1:6379> georadius key2 116.3883056640625 39.92889404296875 1500 km withcoord withdist withhash count 2 desc
1) 1) "member4"
   2) "1266.3179"
   3) (integer) 4051459586134239
   4) 1) "115.93328922986984253"
      2) "28.55000287189253072"
2) 1) "member1"
   2) "1086.8099"
   3) (integer) 4054751755931817
   4) 1) "121.39969021081924438"
      2) "31.0455930059736076"

GEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]
//官方解释:查询表示地理空间索引的已排序集,以获取与成员匹配的给定最大距离的成员
//给定距离由自定义成员变成了key中成员,时间复杂度为O(log(N)+M),N为指定半径范围内的元素个数,M为要返回的个数

HyperLogLog类型
Redis2.8.9版本推出
​ redis的基数统计,这个结构可以非常省内存的去统计各种计数,比如注册IP数、每日访问IP数、页面实时UV、在线用户数等。但它也有局限性,就是只能统计数量,而没办法去知道具体的内容是什么。HyperLogLog在Redis中每个键占用的内容都是12K,理论存储近似接近2^64个值,不管存储的内容是什么,它是一个基于基数估算的算法,只能比较准确的估算出基数,可以使用少量固定的内存去存储并识别集合中的唯一元素。而且这个估算的基数并不一定准确,是一个带有0.81%标准错误的近似值。

PFADD key element [element ...]
//将指定的元素添加到指定的HyperLogLog。

PFCOUNT key [key ...]
//返回由HyperLogLog at key观察到的集合的近似基数。

PFMERGE destkey sourcekey [sourcekey ...]
//将N个不同的HyperLogLogs合并为一个。

127.0.0.1:6379> PFADD key10 "aaa" "bbb" "ccc"
(integer) 1
127.0.0.1:6379> pfadd keys1 "aaa" "bbb" "ccc"
(integer) 1
127.0.0.1:6379> pfcount keys1
(integer) 3
127.0.0.1:6379> pfadd keys2 "bbb" "ccc" "ddd"
(integer) 1
127.0.0.1:6379> pfcount keys1 keys2
(integer) 4
127.0.0.1:6379> pfmerge keys3 keys1 keys2
OK
127.0.0.1:6379> pfcount keys3
(integer) 4
发表于
2019-11-26 21:53 JoshWill 阅读() 评论() 编辑 收藏

 

版权声明:本文为JoshWill原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/JoshWill/p/11938729.html

Redis Geo HyperLogLog类型介绍的更多相关文章

  1. 主从哨兵集群终于给你说明白了

    前言碎语 说起 Redis 应该没有人会陌生了吧,作为开发中最最最最最最最常用的 nosql,它的重要性不言而 […]...

  2. 【.NET Core项目实战-统一认证平台】第十三章 授权篇-如何强制有效令牌过期

    【.NET Core项目实战-统一认证平台】开篇及目录索引 上一篇我介绍了JWT的生成验证及流程内容,相信大家 […]...

  3. Redis 基础特性讲解

    1.Redis基础杂项小节 1.是什么 Redis: Remote Dictionary Server(远程字 […]...

  4. Redis瑞士军刀:慢查询,Pipeline和发布订阅

    1.慢查询 1.1 慢查询的生命周期 步骤一:client通过网络向Redis发送一条命令 步骤二:由于Red […]...

  5. 分享java常用技术教程:dubbo、zookeeper、ActiveMq、多线程、Redis、PowerDesigner等

    游戏是自己整理的邮箱来源于网上,下面是我的有道云的分享地址: https://note.youdao.com/ […]...

  6. Spring+SpringMVC+MyBatis+easyUI整合进阶篇(十一)redis密码设置、安全设置

    警惕 前一篇文章《Spring+SpringMVC+MyBatis+easyUI整合进阶篇(九)Linux下安 […]...

  7. Redis 内存淘汰机制详解

    一般来说,缓存的容量是小于数据总量的,所以,当缓存数据越来越多,Redis 不可避免的会被写满,这时候就涉及到 […]...

  8. Redis_01

    目录 1.1 Nosql入门和概述 1.1.1 为什么要使用Nosql? 1.1.2 Nosql是什么? 1. […]...

随机推荐

  1. vue class与style 绑定详解——小白速会

    一、绑定class的几种方式 1.对象语法 直接看例子: <div id="app3"> < […]...

  2. asp.netcore 3.0 Docker Nginx(震惊,原来docker是这样的!)

    引言 Docker发布于2013年,Docker是dotCloud公司创始人在法国期间发起的一个公司内部项目, […]...

  3. 从一张表中复制数据到另一张表中

    分为两种情况,一种是目标表不存在,另一种是目标表已存在,语法是不同的。 分别以sqlserver和oracle […]...

  4. 14-Ubuntu-文件和目录命令-查看目录内容-ls-1 – Summer儿

    14-Ubuntu-文件和目录命令-查看目录内容-ls-1 1.终端使用技巧 (1)tab键自动补全 (2)按 […]...

  5. [部分内容摘自网络]性质定理小结

    1. 给定四个点,判断能否组成正方形 求出任意两点之间的六条边后,从小到大排序。 如果前四条边相等,后两条边相 […]...

  6. Nodejs安装及环境配置

    1、下载安装 点击这里下载 根据自己电脑系统及位数选择,我这里选择windows64位.msi格式安装包 .m […]...

  7. STM32的CAN应用指南 http://blog.sina.com.cn/s/blog_0414b7360101osq1.html

    CAN基本知识: CAN协议的特点: 1、  多主机控制。在总线空闲时,所有单元都可以发送消息,若两个以上同时 […]...

  8. 绝对路径与相对路径(html,css插入图片的位置方式)

    加粗样式 在学习了html后发现,很多时候图片的引用会出错,如果图片不是正好保存在html文件目录下,可能就会 […]...

展开目录

目录导航