​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类型介绍的更多相关文章

  1. redis GEO地理位置命令介绍

    GEOADD keylongitude latitude member [longitude latitude member ...] Available since 3.2.0. Time comp ...

  2. Redis常用命令详细介绍

    一.字符串 字符串键是Redis最基本的键值对类型,将一个单独的键和一个单独的值关联起来.通过字符串键,不仅可以存储和读取字符串,如果输入能被解释为整数和浮点数,还能执行自增或自减操作. 1.SET: ...

  3. redis3.2新功能--GEO地理位置命令介绍

    概述 redis3.2发布rc版本已经有一段时间了,估计RedisConf 2016左右,3.2版本就能release了.3.2版本中增加的最大功能就是对GEO(地理位置)的支持.说起redis的GE ...

  4. Redis GEO 功能使用场景

    本文来源:https://www.dazhuanlan.com/2020/02/05/5e3a0a3110649/ 背景 前段时间自己在做附近直播相关业务,其中有一个核心的点就是检索用户附近的主播,也 ...

  5. redis的list类型

    1.简单介绍 redis的list类型其实就是一个每个元素都是string类型的双向链表.所以lpush.rpush.lpop和rpop命令的时间复杂度是O(1),list会记录链表的长度,所以lle ...

  6. redis数据类型-字符串类型

    Redis数据类型 字符串类型 字符串类型是Redis中最基本的数据类型,它能存储任何形式的字符串,包括二进制数据.你可以用其存储用户的邮箱.JSON化的对象甚至是一张图片.一个字符串类型键允许存储的 ...

  7. 使用Redis数据库(String类型)

    一 String类型 首先使用启动服务器进程 : redis-server.exe 1. Set 设置Key对应的值为String 类型的value. 例子:向 Redis数据库中插入一条数据类型为S ...

  8. python 操作redis之——HyperLogLog (八)

    #coding:utf8 import redis # python 操作redis之——HyperLogLog r =redis.Redis(host=") # 1.Pfadd 命令将所有 ...

  9. 二:redis 的hash类型相关操作

    =====================二种:hash类型================== 介绍:redis -> hash是一个string类型的field和value的映射表 hash ...

随机推荐

  1. GridSplitter

    <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> <Colum ...

  2. 推荐一款优秀的WPF开源项目

    项目介绍 此项目应用了Prism MVVM框架,项目展示数据来源于其他服务程序,使用的WebAPI通信,如果要正常运行此程序,需要您自己做一个WebAPI程序,由API接口提供数据驱动,其实直接查看代 ...

  3. zepto源码分析·ajax模块

    准备知识 在看ajax实现的时候,如果对ajax技术知识不是很懂的话,可以参看下ajax基础,以便读分析时不会那么迷糊 全局ajax事件 默认$.ajaxSettings设置中的global为true ...

  4. ThreadPoolExecutor源码中的适配器模式

    什么是适配器模式 网上已有很多的教程,不细讲了.可以参考:五分钟了解设计模式(3)---适配器模式 在适配器模式中,一定要识别清楚,Target Adaptee Adapter分别是哪些类或接口,这样 ...

  5. Spring使用@Async注解

    本文讲述@Async注解,在Spring体系中的应用.本文仅说明@Async注解的应用规则,对于原理,调用逻辑,源码分析,暂不介绍.对于异步方法调用,从Spring3开始提供了@Async注解,该注解 ...

  6. (23)ASP.NET Core EF关系数据库建模

    1.简介 一般而言,本部分中的配置适用于关系数据库.安装关系数据库提供程序时,此处显示的变为可用扩展方法(原因在于共享的Microsoft.EntityFrameworkCore.Relational ...

  7. iOS开发高级分享 - iOS的可折叠表视图

    导言 我曾经开发过一个iphone应用程序,它显示了大量的输入,这些输入分为不同的类别,在`UITableView`...若要更改其中一个输入的值,用户按下表视图中的对应行,并在出现的单独屏幕中更改该 ...

  8. 程序员学点xx 之 Redis

    程序员学点xx 之 Redis 概述 其实程序员也要和操作系统打交道, 比如最常见的,部署自己电脑上的开发环境. 当然有时某些牛人, 觉得运维或基础部门的同事不够给力, 亲自上手部署服务器或线上环境, ...

  9. 用css和js实现侧边菜单栏点击和鼠标滑动特效

    1点击效果: 2关键代码: css: #div{ display:inline-block; width:100px; height:150px; border-radius: 5px; blackg ...

  10. [转载]2.1 UiPath条件判断活动If的介绍和使用

    一.if的介绍 if语句是指编程语言(包括c语言.C#.Python.Java.汇编语言等)中用来判定所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一. 二.if在UiPath ...