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
												
											Redis Geo HyperLogLog类型介绍的更多相关文章
- redis GEO地理位置命令介绍
		
GEOADD keylongitude latitude member [longitude latitude member ...] Available since 3.2.0. Time comp ...
 - Redis常用命令详细介绍
		
一.字符串 字符串键是Redis最基本的键值对类型,将一个单独的键和一个单独的值关联起来.通过字符串键,不仅可以存储和读取字符串,如果输入能被解释为整数和浮点数,还能执行自增或自减操作. 1.SET: ...
 - redis3.2新功能--GEO地理位置命令介绍
		
概述 redis3.2发布rc版本已经有一段时间了,估计RedisConf 2016左右,3.2版本就能release了.3.2版本中增加的最大功能就是对GEO(地理位置)的支持.说起redis的GE ...
 - Redis GEO 功能使用场景
		
本文来源:https://www.dazhuanlan.com/2020/02/05/5e3a0a3110649/ 背景 前段时间自己在做附近直播相关业务,其中有一个核心的点就是检索用户附近的主播,也 ...
 - redis的list类型
		
1.简单介绍 redis的list类型其实就是一个每个元素都是string类型的双向链表.所以lpush.rpush.lpop和rpop命令的时间复杂度是O(1),list会记录链表的长度,所以lle ...
 - redis数据类型-字符串类型
		
Redis数据类型 字符串类型 字符串类型是Redis中最基本的数据类型,它能存储任何形式的字符串,包括二进制数据.你可以用其存储用户的邮箱.JSON化的对象甚至是一张图片.一个字符串类型键允许存储的 ...
 - 使用Redis数据库(String类型)
		
一 String类型 首先使用启动服务器进程 : redis-server.exe 1. Set 设置Key对应的值为String 类型的value. 例子:向 Redis数据库中插入一条数据类型为S ...
 - python 操作redis之——HyperLogLog  (八)
		
#coding:utf8 import redis # python 操作redis之——HyperLogLog r =redis.Redis(host=") # 1.Pfadd 命令将所有 ...
 - 二:redis 的hash类型相关操作
		
=====================二种:hash类型================== 介绍:redis -> hash是一个string类型的field和value的映射表 hash ...
 
随机推荐
- git  jenkins 部署java项目
			
1.Java项目部署基本概述: 1.什么是Java项目? 2.为什么Java项目需要使用Maven编译? 3.手动实现Java项目构建? 4.手动实现Java项目架构图? 源码包 jar包 ...
 - Smali语言基础语法
			
1.Smali语言基础语法-数据类型与描述符 smali中有两类数据类型:基本类型和引用类型.引用类型是指数组和对象,其它都是基础类型. 基本类型以及每种类型的描述符: Java类型 类型描述符 说明 ...
 - QButtonGroup 的使用
			
1.3以后尽量手写,因为没有现在的控件了 2. // lyy : 2016/8/26 12:17:41 说明:存放radioButton QButtonGroup *buttonGroup; // l ...
 - Spring Boot - Logback配置日志要考虑哪些因素
			
Spring Boot - Logback配置日志 出于性能等原因,Logback 目前是springboot应用日志的标配: 当然有时候在生产环境中也会考虑和三方中间件采用统一处理方式.@pdai ...
 - next day
			
#_*_coding:utf_*_#!/usr/bin/env python now_day=input('当前某一天:').format('%Y.%m.%d')%%输入日期(年.月.日) year= ...
 - vue  开发插件流程
			
UI demo UI 插件汇总 我的github iSAM2016 在练习写UI组件的,用到全局的插件,网上看了些资料.看到些的挺好的,我也顺便总结一下写插件的流程: 声明插件-> 写插件-&g ...
 - mybatis的插件机制
			
一.mybatis的插件介绍 关于mybatis的插件,我想大家也都用过,就比如最常用的逆向工程,根据表结构生成model,dao,xml文件,还有分页插件,那这些插件的工作原理是怎么样的呢,就比如分 ...
 - java中的Static、final、Static final各种用法详解
			
前言 对Static.final.Static final这几个关键词熟悉又陌生?想说却又不知怎么准确说出口?好的,本篇博客文章将简短概要出他们之间的各自的使用,希望各位要是被你的面试官问到了,也能从 ...
 - 找不到 cucumber.api.cli.Main 的报错解决方案
			
最近玩IDEA,发现导入的项目有问题,报了一个“找不到或者不存在cucumber.api.cli.Main”的错误. 后来发现是新版的IDEA在导入时没有提示,以至于我没有配置项目对应的Tomcat服 ...
 - Hibernate---快速入门
			
Hibernate简介 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可 ...