Redis之三大特殊数据类型相关知识(Geospatial地理位置、Hyperloglog基数、Bitmaps位存储)
Redis之三大特殊数据类型
- 一、Geospatial地理位置
- 1、介绍
- 2、相关shell命令
- 2.1 规则
- 2.2 geoadd命令(给城市赋值)
- 2.3 geopos命令(获取指定城市的经度和纬度)
- 2.4 geodist命令(获取两个城市之间的距离)
- 2.5 georadius命令(以给定的经纬度为中心,找出某一半径内的元素)
- 2.6 georadiusbymember
- 2.7 geohash命令
- 3、注意
- 二、Hyperloglog基数存储
- 1、基数
- 2、简介
- 3、相关shell命令
- 3.1 创建一组元素
- 3.2 统计mykey元素的基数数量
- 3.3 合并两组数据
- 4、注意
- 三、Bitmaps位存储
- 1、介绍
- 2、相关shell命令
- 2.1 对位图赋值
- 2.2 查看是否打卡
- 2.3 统计打卡天数
一、Geospatial地理位置
1、介绍
Redis 地理空间索引允许存储坐标并搜索它们。 此数据结构可用于查找给定半径或边界框内的邻近点。
2、相关shell命令
2.1 规则
两级无法直接添加,一般会下载城市数据,直接通过java程序一次性导入
参数:key
值:纬度、经度、名称
有效的经度:-180度到180度
有效的纬度:-85.05112878度到85.05112878度
2.2 geoadd命令(给城市赋值)
给城市赋值(经纬度)
geoadd china:city 经度 纬度 城市名
例如
geoadd china:city 116.40 39.90 beijing
2.3 geopos命令(获取指定城市的经度和纬度)
获得当前定位(一定是个真正存在的坐标值)
geopos china:city 城市名1 城市名2
例如
geopos china:city beijing shanghai
2.4 geodist命令(获取两个城市之间的距离)
计算两点之间的距离
单位:
m表示单位为米
km表示单位为千米
mi表示单位为英里
ft表示单位为英尺
geodist china:city 城市名1 城市名2 km
例如
查看上海到北京的直线距离
geodist china:city beijing shanghai km
2.5 georadius命令(以给定的经纬度为中心,找出某一半径内的元素)
georadius china:city 经度 纬度 距离值 km
(1)以110,30这个经纬度为中心,寻找方圆1000km内的城市
georadius china:city 110 30 1000 km
(2)显示到中心距离的位置(withdist)
georadius china:city 110 30 1000 km withdist
(3)显示他人的定位信息(withcoord)
georadius china:city 110 30 1000 km withcoord
(4)筛选出指定位置的结果(withcoord count 1)
georadius china:city 110 30 1000 km withcoord count 1
2.6 georadiusbymember
找出位于指定元素周围的其他元素
georadiusbymember china:city 城市名 1000 km
例如
georadiusbymember china:city beijing 1000 km
2.7 geohash命令
返回11个字符的Geohash字符串
将二维的经纬度转换为一维的字符串,如果两个字符串越接近,那么距离越近。
geohash china:city 城市名
例如
geohash china:city beijing
3、注意
GEO底层的实现原理其实就是Zset,我们可以使用Zset命令来操作geo
(1)查看地图中全部的元素
zrange china:city 0 -1
(2)移除指定元素
zrem china:city beijing
二、Hyperloglog基数存储
1、基数
基数指(不重复的元素)= 5 ,可以接受误差
例如:A{1,3,5,7,8}
2、简介
Redis Hyperloglog基数统计的算法
优点:占用的内存是固定的,2^64个不同的元素的技术,只需要12KB内存
3、相关shell命令
3.1 创建一组元素
pfadd key值 a b c d e f g
例如
pfadd mykey a b c d e f g
3.2 统计mykey元素的基数数量
pfcount key值
结果
pfcount mykey
3.3 合并两组数据
pfmerge key值3 key值1 key值2
例如
pfmerge mykey3 mykey mykey2
4、注意
如果允许容错,就可以使用Hyperloglog,
如果不允许容错,就使用set或其他数据类型。
三、Bitmaps位存储
1、介绍
统计用户信息,活跃、不活跃!登录、未登录!打卡等等都可以使用Bitmaps
Bitmaps位图,数据结构,都是操作二进制位来进行记录,就只有0和1两个状态。
365天 = 365bit 1字节=8bit 46个字节左右
2、相关shell命令
2.1 对位图赋值
setbit 对象 某个属性 对应含义
例如
星期一标号为0
赋值为1,代表打卡,赋值为0,代表未打卡
如下:
星期一打卡了,赋值为1
星期二未打卡,赋值为0
星期三未打卡,赋值为0
星期四打卡了,赋值为1
setbit day 0 1
setbit day 1 0
setbit day 2 0
setbit day 3 1
2.2 查看是否打卡
getbit day 2
2.3 统计打卡天数
bitcount day
Redis之三大特殊数据类型相关知识(Geospatial地理位置、Hyperloglog基数、Bitmaps位存储)相关推荐
- 中断系统的相关知识(二)(可位寻址、不可位寻址)
中断系统中会涉及许多寄存器,这个时候我们会遇到一些有点陌生的名词,比如接下来说的"可位寻址"和"不可位寻址",如下图: 位寻址是指对一些内部数据存储器RAM和 ...
- ❤️Bitmaps、HyperLogLog、Geospatial❤️——Redis三大特殊数据类型详述(万字长文原理讲解,大厂面试高频知识点,一文尽收囊中)
本文已收录于专栏 ❤️<Redis之大厂必备技能包>❤️ 欢迎各位关注.三连博主的文章及专栏,全套Redis学习资料,大厂必备技能! 目录 简介 一.Bitmaps 1.简介 2 .基本操 ...
- Redis三种特殊数据类型
Redis三种特殊数据类型 geospatial 地理位置 朋友的定位, 附近的人, 打车的距离计算 Redis的Geo在Redis3.2版本就推出了.这个功能可以推算地理位置信息, 两地之间的距离, ...
- Redis中五大基本数据类型和三种特殊数据类型详解
目录 介绍 概念 基本命令 redis是单线程的 五大基本数据类型 String 命令 应用场景 List 命令 应用场景 Set 命令 应用场景 Hash 命令 应用场景 Zset 命令 应用场景 ...
- Redis的8种数据类型
目录 一.概述 1.redis是什么 2.redis能干嘛 3.redis常识 3.1.基本命令 3.2.为什么redis是单线程 二.五大数据类型 1.String 2.List列表 3.Set 4 ...
- Redis 九种数据结构及其底层实现 持久化 缓存机制 过期键与内存淘汰 集群等相关知识
参考内容: B站尚硅谷Redis视频教程 <Redis 6 入门到精通 超详细 教程> B张黑马程序员Redis视频教程 <黑马程序员Redis入门到实战教程,全面透析redis底层 ...
- NoSQL概述-Redis安装-常用五大数据类型-概述Bitmaps,HyperLogLog,Geospatial和redis.conf 基本解析
NoSQL 概述 NoSQL(NoSQL=Not Only SQL),意即"不仅仅是SQL",泛指 非关系型的数据库. NoSQL不依赖业务逻辑方式存储,而以简单的key-valu ...
- Redis面试题相关知识整理
Redis面试题相关知识整理 1.Redis的应用场景 2.Redis的特点 3.Redis对各种数据类型的操作 4.Redis的持久化机制 5.Redis的缓存穿透/缓存击穿/缓存雪崩问题 6.Re ...
- Redis数据库相关知识总结
Redis数据库相关知识总结 1.NoSQL概述 1.1 为什么用NoSQL 1.单机MySQL的美好年代 在90年代,一个网站的访问量一般不大,用单个数据库完全可以轻松应付! 在那个时候,更多的都是 ...
最新文章
- 【反传销】春节一个短暂误入传销和脱身的真实故事以及对技术的思考
- HTML5-响应式的实现方式-弹性布局浅谈
- 楼层标高怎么引上去_【强烈推荐】工程图纸怎么看?
- java基础1之java语言基础1
- find命令使用方法
- Scala中的None,Nothing,Null,Nil
- CentOs7.3 搭建 Solr单机服务
- MonkeyScript使用教程
- 中国移动创新系列丛书《OPhone应用开发权威指南》读者交流活动圆满结束
- Oracle日志切换及频率跟踪脚本
- 解决pycharm问题:module 'pip' has no attribute 'main'
- 360怎么看电脑配置_电脑配置清单速查表-AMD
- RoadRunner软件初步使用教程
- C语言中的文件操作(二)
- device-mapper: multipath: Failing path recovery
- Eureka的自我保护机制与如何禁用
- Tensorflow训练的模型,如何保存与载入?
- python名片系统代码练习并存储到数据库中
- 免费的跨境浏览器能用吗?目前性价比高的跨境浏览器有哪些?
- 使用国产KT148A语音芯片sop8封装,用户可以自己更换声音,低成本,高秒数
热门文章
- 锤子要和360手机合并?周鸿祎要复制小米,罗永浩不想再小而美
- 数据仓库与数据挖掘教程 || 警务数据仓库“犯罪_ETL”,“地址_ETL”和“派出所_ETL”数据流任务配置说明
- ABB新机器人 常用配件型号3HAB4216-1 DSQC 643 DSQC 325 3HAB 2241-1 DSQC 326 (3HAB 2242-1)DSQC 236D 3HAB2207-1/2
- CSS3 新特性transform,transition,animation
- 手机麦克风结构原理图_详解麦克风阵列的基本原理、结构组成及声学效果
- 水桶塑料感打击乐合成器插件-Klevgrand Slammer v1.0.2 WiN-MAC
- 直播的发展前景怎么样?
- 软件外包接单经验谈-估算工期、报价、签订合同篇
- 使用java代码增加一点博客访问量
- 单片机产业城市前十排名