redis学习(八)
时间:2022-07-24
本文章向大家介绍redis学习(八),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
三种特殊类型
Geospatial 地理位置
朋友的定位,附近的人,打车距离计算? Redis 的 Geo 在Redis3.2 版本就推出了! 这个功能可以推算地理位置的信息,两地之间的距离,方圆 几里的人! 可以查询一些地理位置的测试数据:http://www.jsons.cn/lngcodeinfo/0706D99C19A781A3/ 只有 六个命令:
官方文档:https://www.redis.net.cn/order/3685.html
getadd
getadd 添加地理位置
- 规则:两级无法直接添加,我们一般会下载城市数据,直接通过java程序一次性导入!
- 有效的经度从-180度到180度。
- 有效的纬度从-85.05112878度到85.05112878度。
- 当坐标位置超出上述指定范围时,该命令将会返回一个错误
127.0.0.1:6666> geoadd china:city 31.23 121.47 shanghai # 这里报错。
(error) ERR invalid longitude,latitude pair 31.230000,121.470000
127.0.0.1:6666> geoadd china:city 116.40 39.90 beijing # 下面格式才对。
(integer) 1
127.0.0.1:6666> geoadd china:city 121.47 31.23 shanghai
(integer) 1
127.0.0.1:6666> geoadd china:city 120.16 30.24 hangzhou
(integer) 1
127.0.0.1:6666> geoadd china:city 108.96 34.26 xian
(integer) 1
127.0.0.1:6666> geoadd china:city 113.66 34.75 zhengzhou
(integer) 1
# 获取当前坐标定位。
127.0.0.1:6666> geopos china:city beijing # 获取指定城市的经纬度。
1) 1) "116.39999896287918091"
2) "39.90000009167092543"
127.0.0.1:6666> geopos china:city beijing shanghai
1) 1) "116.39999896287918091"
2) "39.90000009167092543"
2) 1) "121.47000163793563843"
2) "31.22999903975783553"
# geodist 两人之间的距离
# 单位 m,km,mi英里,ft英尺。
127.0.0.1:6666> geodist china:city beijing shanghai km # 北京到上海单位千米。
"1067.3788"
127.0.0.1:6666> geodist china:city beijing zhengzhou # 北京到郑州单位米。
"621882.2073"
127.0.0.1:6666> geodist china:city beijing zhengzhou km
"621.8822"
# georadius 以给定的经纬度为中心, 找出某一半径内的元素
# 我附近的人? (获得所有附近的人的地址,定位!)通过半径来查询!
# 获得指定数量的人,200
# 所有数据应该都录入:china:city ,才会让结果更加请求
127.0.0.1:6666> georadius china:city 110 30 1000 km # 根据110 30 经纬度为坐标,寻找方圆1000km内的城市。
1) "xian"
2) "hangzhou"
3) "zhengzhou"
127.0.0.1:6666> georadius china:city 110 30 500 km
1) "xian"
127.0.0.1:6666> georadius china:city 110 30 500 km withdist # 显示范围内城市,加距离。
1) 1) "xian"
2) "483.8340"
127.0.0.1:6666> georadius china:city 110 30 500 km withcoord # 显示他人的定位信息。
1) 1) "xian"
2) 1) "108.96000176668167114"
2) "34.25999964418929977"
127.0.0.1:6666> georadius china:city 110 30 1000 km withdist withcoord count 1 # 筛选出最近的一个结果。
1) 1) "xian"
2) "483.8340"
3) 1) "108.96000176668167114"
2) "34.25999964418929977"
127.0.0.1:6666> georadius china:city 110 30 1000 km withdist withcoord
1) 1) "xian"
2) "483.8340"
3) 1) "108.96000176668167114"
2) "34.25999964418929977"
2) 1) "hangzhou"
2) "977.5143"
3) 1) "120.1600000262260437"
2) "30.2400003229490224"
3) 1) "zhengzhou"
2) "630.2160"
3) 1) "113.65999907255172729"
2) "34.74999926510690784"
127.0.0.1:6666> georadius china:city 110 30 1000 km withdist withcoord count 2 # 两个。
1) 1) "xian"
2) "483.8340"
3) 1) "108.96000176668167114"
2) "34.25999964418929977"
2) 1) "zhengzhou"
2) "630.2160"
3) 1) "113.65999907255172729"
2) "34.74999926510690784"
# 找出指定范围内的其他元素。通过a找b。
127.0.0.1:6666> georadiusbymember china:city beijing 1000 km
1) "zhengzhou"
2) "beijing"
3) "xian"
127.0.0.1:6666> georadiusbymember china:city shanghai 400 km
1) "hangzhou"
2) "shanghai"
# geohash返回11位的字符串。将二维的经纬度,转换为一个字符串,两个字符串越相近,表示距离也越近。
127.0.0.1:6666> geohash china:city beijing zhengzhou
1) "wx4fbxxfke0"
2) "ww0vdqh9mv0"
# geo的底层就是zset,同理可以使用zset的命令。
127.0.0.1:6666> zrange china:city 0 -1
1) "xian"
2) "hangzhou"
3) "shanghai"
4) "zhengzhou"
5) "beijing"
127.0.0.1:6666> zrem china:city beijing
(integer) 1
127.0.0.1:6666> zrange china:city 0 -1
1) "xian"
2) "hangzhou"
3) "shanghai"
4) "zhengzhou"
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- C++核心准则T.143:避免无意中编写非通用代码
- XML文件解析实践(DOM解析)
- golang 多协程的同步方法总结
- C++核心准则T.144:不要特化函数模板
- 三千字带你搞懂XXL-JOB任务调度平台
- Python-科学计算-pandas-14-df按行按列进行转换
- Python实现扫码工具
- C++核心准则T.150:用static_assert检查类和概念的匹配性
- 初学者也能快速写Python脚本啦——通用功能代码分享
- C++核心准则CPL.1:C++比C更好
- C++核心准则CPL.2:如果你必须使用C,使用C和C++的共同子集,并且使用C++编译器编译C代码
- C++核心准则SF.1:如果你的项目没有正在遵从的其他习惯,为代码文件使用.cpp后缀,为接口文件使用.h后缀
- 群晖NAS搭建测速网站,支持万兆
- 二叉树:你真的会翻转二叉树么?
- C++核心准则SF.2:.h文件一定不能包含对象定义或者非inline函数定义