Redis Geo HyperLogLog类型介绍

JoshWill 2019-11-26 原文

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

  1. GEOADD key longitude latitude member [longitude latitude member ...]
  2. //在使用排序集表示的地理空间索引中添加一个或多个地理空间项,时间复杂度O(log(N))
  3. 127.0.0.1:6379> geoadd key1 121.3996887207031 31.04559326171875 member1 116.3883056640625 39.92889404296875 member2
  4. (integer) 2
  5. GEODIST key member1 member2 [unit]
  6. //返回地理空间索引的两个成员之间的距离,时间复杂度O(log(N))
  7. 127.0.0.1:6379> geodist key1 member1 member2
  8. "1086809.8477"//默认单位为m
  9. 127.0.0.1:6379> geodist key1 member1 member2 m
  10. "1086809.8477"
  11. 127.0.0.1:6379> geodist key1 member1 member2 km
  12. "1086.8098"
  13. 127.0.0.1:6379> geodist key1 member1 member2 ft
  14. "3565649.1067"//英尺
  15. 127.0.0.1:6379> geodist key1 member1 member2 mi
  16. "675.3140"//英里
  17. GEOHASH key member [member ...]
  18. //将地理空间索引的成员作为标准的geohash字符串返回,时间复杂度O(log(N))
  19. 127.0.0.1:6379> geohash key1 member1 member2
  20. 1) "wtw2de8t9v0"
  21. 2) "wx4g0kz6sj0"
  22. GEOPOS key member [member ...]
  23. //返回地理空间索引成员的经度和纬度,时间复杂度O(log(N))
  24. 127.0.0.1:6379> geopos key1 member1 member2
  25. 1) 1) "121.39969021081924438"
  26. 2) "31.0455930059736076"
  27. 2) 1) "116.38830453157424927"
  28. 2) "39.92889337816622941"
  29. GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]
  30. //官方解释:查询表示地理空间索引的已排序集,以获取与给定的最大距离相匹配的成员
  31. //以给定的经纬度为中心,返回给定key包含的位置元素当中,与给定的中心不超过给定最大距离的所有位置元素,时间复杂度为O(N+log(M)),N为指定半径范围内的元素个数,M为要返回的个数
  32. //WITHDIST:在返回位置元素的同时将位置元素与中心之间的距离也一并返回,距离的单位和用户给定的范围单位保持一致
  33. //WITHCOORD:将位置元素的经度和维度也一并返回
  34. //WITHHASH:以52位有符号整数的形式,返回位置元素经过原始geohash编码的有序集合分值,这个选项主要用于底层应用或者调试,实际中的作用并不大
  35. //命令默认返回未排序的位置元素。通过以下两个参数,用户可以指定被返回位置元素的排序方式:
  36. ASC:根据中心位置,按照从近到远的方式返回位置元素
  37. DESC:根据中心位置,按照从远到近的方式返回位置元素
  38. //COUNT:获取前N个匹配元素
  39. 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
  40. (integer) 4
  41. 127.0.0.1:6379> georadius key2 116.3883056640625 39.92889404296875 1500 km
  42. 1) "member4"
  43. 2) "member1"
  44. 3) "member3"
  45. 4) "member2"
  46. 127.0.0.1:6379> georadius key2 116.3883056640625 39.92889404296875 1500 km withcoord withdist withhash
  47. 1) 1) "member4"
  48. 2) "1266.3179"
  49. 3) (integer) 4051459586134239
  50. 4) 1) "115.93328922986984253"
  51. 2) "28.55000287189253072"
  52. 2) 1) "member1"
  53. 2) "1086.8099"
  54. 3) (integer) 4054751755931817
  55. 4) 1) "121.39969021081924438"
  56. 2) "31.0455930059736076"
  57. 3) 1) "member3"
  58. 2) "635.6729"
  59. 3) (integer) 4064933024035472
  60. 4) 1) "113.53250294923782349"
  61. 2) "34.6835946401745403"
  62. 4) 1) "member2"
  63. 2) "0.0001"
  64. 3) (integer) 4069885541758997
  65. 4) 1) "116.38830453157424927"
  66. 2) "39.92889337816622941"
  67. 127.0.0.1:6379> georadius key2 116.3883056640625 39.92889404296875 1500 km withcoord withdist withhash count 2 desc
  68. 1) 1) "member4"
  69. 2) "1266.3179"
  70. 3) (integer) 4051459586134239
  71. 4) 1) "115.93328922986984253"
  72. 2) "28.55000287189253072"
  73. 2) 1) "member1"
  74. 2) "1086.8099"
  75. 3) (integer) 4054751755931817
  76. 4) 1) "121.39969021081924438"
  77. 2) "31.0455930059736076"
  78. GEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]
  79. //官方解释:查询表示地理空间索引的已排序集,以获取与成员匹配的给定最大距离的成员
  80. //给定距离由自定义成员变成了key中成员,时间复杂度为O(log(N)+M),N为指定半径范围内的元素个数,M为要返回的个数

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

  1. PFADD key element [element ...]
  2. //将指定的元素添加到指定的HyperLogLog。
  3. PFCOUNT key [key ...]
  4. //返回由HyperLogLog at key观察到的集合的近似基数。
  5. PFMERGE destkey sourcekey [sourcekey ...]
  6. //将N个不同的HyperLogLogs合并为一个。
  7. 127.0.0.1:6379> PFADD key10 "aaa" "bbb" "ccc"
  8. (integer) 1
  9. 127.0.0.1:6379> pfadd keys1 "aaa" "bbb" "ccc"
  10. (integer) 1
  11. 127.0.0.1:6379> pfcount keys1
  12. (integer) 3
  13. 127.0.0.1:6379> pfadd keys2 "bbb" "ccc" "ddd"
  14. (integer) 1
  15. 127.0.0.1:6379> pfcount keys1 keys2
  16. (integer) 4
  17. 127.0.0.1:6379> pfmerge keys3 keys1 keys2
  18. OK
  19. 127.0.0.1:6379> pfcount keys3
  20. (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. Windows系统搭建Redis集群三种模式(零坑、最新版)

    目录 主从复制 修改配置文件 启动各节点 验证 哨兵模式 修改配置文件 启动实例 验证 集群模式 修改配置文件 […]...

  2. 搭建SpringBoot+dubbo+zookeeper+maven框架(三)

    搭建SpringBoot+dubbo+zookeeper+maven框架(三) 今天我们要在原来搭建的框架基础 […]...

  3. Storm 系列(七)—— Storm 集成 Redis 详解

    一、简介 Storm-Redis 提供了 Storm 与 Redis 的集成支持,你只需要引入对应的依赖即可使 […]...

  4. 001.Redis简介及安装

    一 Redis简介 1.1 Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的ke […]...

  5. 缓存与数据库的双写一致性

    这几天瞎逛,不知道在哪里瞟到了缓存的双写,就突然想起来这块虽然简单,但是细节上还是有足够多我们可以去关注的点。 […]...

  6. Nginx+Tomcat+Redis实现持久会话

    使用开源web应用solo blog进行项目演示。前端使用Nginx作为负载均衡器,后端Tomcat连接Red […]...

  7. redis分片和哨兵

    1 Redis的使用 1.1 Redis入门案例 1.1.1 什么样的数据使用缓存 说明:使用缓存其实为了减少 […]...

  8. Redis系列(四):数据结构String类型中基本操作命令和源码解析

    1.介绍 string类型本质上是char[]数组的封装  中文网:http://www.redis.cn/c […]...

随机推荐

  1. 阿里一面CyclicBarrier和CountDownLatch的区别是啥

    阿里一面CyclicBarrier和CountDownLatch的区别是啥 引言 前面一篇文章我们《Java高 […]...

  2. 强化学习(二)马尔科夫决策过程(MDP)

        在强化学习(一)模型基础中,我们讲到了强化学习模型的8个基本要素。但是仅凭这些要素还是无法使用强化学习 […]...

  3. MySQL8.0 DDL原子性特性

    1. DDL原子性概述 8.0之前并没有统一的数据字典dd,server层和引擎层各有一套元数据,sever层 […]...

  4. 【HTB系列】 Lame

    出品|MS08067实验室(www.ms08067.com) 本文作者:shavchen 01 前言 这次挑战 […]...

  5. mysql数据库备份和还原

    备份 在navicat任意选择数据库,右键点击选择 转储SQL文件,选择数据与结构,然后保存即可 还原 1、先 […]...

  6. 重装win7,没有管理员权限,没有以管理员身份运行

    重装win7,没有管理员权限,没有以管理员身份运行 因为win10设置无线按流量收费也没能禁止系统更新,电脑卡 […]...

  7. 使用pyecharts绘制词云图-淘宝商品评论展示

    一、什么是词云图? 词云图是一种用来展现高频关键词的可视化表达,通过文字、色彩、图形的搭配,产生有冲击力地视觉 […]...

  8. 不规则物体形状匹配综述

    物体识别是计算机视觉应用的一项基本任务。识别通常基于目标物体的灰度信息、颜色信息或形状信息。物体识别的目的就是 […]...