西樵建网站,做美妆网站的关键词,医药电商网站建设,建设银行普卡申请网站目录 Redis 三种特殊的数据类型#xff1a;
Geospatial#xff1a;地理位置
Geospatial类型常用的命令#xff1a;
GEOADD#xff1a;添加地理位置
GEOPOS#xff1a;获取地理位置
GEODIST#xff1a;返回两个给定位置之间的距离
GEORADIUS#xff1a;以给定的经纬…目录 Redis 三种特殊的数据类型
Geospatial地理位置
Geospatial类型常用的命令
GEOADD添加地理位置
GEOPOS获取地理位置
GEODIST返回两个给定位置之间的距离
GEORADIUS以给定的经纬度为中心找出某一半径内的元素
GEORADIUSBYMEMBER找出位于指定范围内的元素中心点是由给定的位置元素决定
GEOHASH返回一个或多个位置元素的Geohash表示
GEO底层的实现原理其实就是Zset !我们可以使用Zset命令来操作geo !
Hyperloglog基数统计的算法
例如
Bitmaps位图位存储
例如 Redis 三种特殊的数据类型
Geospatial地理位置
Hyperloglog基数统计的算法
Bitmaps位图位存储
Geospatial地理位置
如我需要查询朋友的定位附近的人打车所需距离的计算
这个功能可以推算地理位置的信息比如说两地之间的距离方圆几里之内的人
可以查询一些测试数据全国城市经纬度查询-知之小工具 (100xgj.com)
Geospatial类型常用的命令 GEOADD添加地理位置 #规则两极是无法直接添加的我们一般会下载城市数据直接通过java或者python程序导入 按照经度 纬度 名称填写哦
如果写错了可以通过flushdb刷新redis数据库并通过clear清理页面127.0.0.1:6379 GEOADD china:city 39.54 116.28 Beijin
(error) ERR invalid longitude,latitude pair 39.540000,116.280000
如果出现了如上错误说明我们写的经纬度超出范围了127.0.0.1:6379 AUTH 123456
OK
127.0.0.1:6379 GEOADD china:city 116.28 39.54 Beijin
(integer) 1
127.0.0.1:6379 GEOADD china:city 121.47 31.23 Shanghai
(integer) 1
127.0.0.1:6379 GEOADD china:city 106.50 29.53 Chongqing
(integer) 1
127.0.0.1:6379 GEOADD china:city 113.18 23.10 Guangzhou 114.05 22.52 Shengzhen
(integer) 2
GEOPOS获取地理位置
127.0.0.1:6379 GEOPOS china:city Beijin # 获取指定城市的经度和纬度
1) 1) 116.280002295970916752) 39.54000124957348561
127.0.0.1:6379
127.0.0.1:6379 GEOPOS china:city Beijin
1) 1) 116.280002295970916752) 39.54000124957348561
127.0.0.1:6379 GEOPOS china:city Beijin Chongqing
1) 1) 116.280002295970916752) 39.54000124957348561
2) 1) 106.499997675418853762) 29.52999957900659211
127.0.0.1:6379 GEODIST返回两个给定位置之间的距离
单位 m表示单位为米。 km表示单位为千米。 mi表示单位为英里。 ft表示单位为英尺。 127.0.0.1:6379 GEODIST china:city Beijin Shanghai
1036715.8809
127.0.0.1:6379
127.0.0.1:6379 GEODIST china:city Beijin Shanghai KM #表示千米
1036.7159
127.0.0.1:6379 如何查看我附近的人呢获得所有的附近的人的地址定位通过半径来查询
GEORADIUS以给定的经纬度为中心找出某一半径内的元素
127.0.0.1:6379 GEORADIUS china:city 110 30 1000 KM #以110 30 这个经度纬度作为中心点。
1) Chongqing
2) Shengzhen
3) Guangzhou
127.0.0.1:6379 GEORADIUS china:city 110 30 500 KM
1) Chongqing
127.0.0.1:6379
127.0.0.1:6379 GEORADIUS china:city 110 30 500 KM withdist # 显示到中心的距离
1) 1) Chongqing 2) 341.9374
127.0.0.1:6379
127.0.0.1:6379 GEORADIUS china:city 110 30 1000 KM withdist withcoord count 1 #限制查看的数量
1) 1) Chongqing2) 341.93743) 1) 106.499997675418853762) 29.52999957900659211
127.0.0.1:6379 GEORADIUS china:city 110 30 1000 KM withdist withcoord count 2
1) 1) Chongqing2) 341.93743) 1) 106.499997675418853762) 29.52999957900659211
2) 1) Guangzhou2) 829.99363) 1) 113.180001676082611082) 23.10000005307264104
127.0.0.1:6379 GEORADIUS china:city 110 30 1000 KM withdist withcoord count 3
1) 1) Chongqing2) 341.93743) 1) 106.499997675418853762) 29.52999957900659211
2) 1) Guangzhou2) 829.99363) 1) 113.180001676082611082) 23.10000005307264104
3) 1) Shengzhen2) 924.64083) 1) 114.049997627735137942) 22.5200000879503861
127.0.0.1:6379
GEORADIUSBYMEMBER找出位于指定范围内的元素中心点是由给定的位置元素决定
127.0.0.1:6379 GEORADIUSBYMEMBER china:city Chongqing 1000 km
1) Chongqing
2) Guangzhou
127.0.0.1:6379 GEOHASH返回一个或多个位置元素的Geohash表示
# 将二维的字符串转换为一维的字符串如果两个字符串接近那么距离越近
127.0.0.1:6379 GEOHASH china:city Beijin Chongqing
1) wx48yn090q0
2) wm5xzrybty0
127.0.0.1:6379 GEO底层的实现原理其实就是Zset !我们可以使用Zset命令来操作geo !
127.0.0.1:6379 ZRANGE china:city 0 -1 # 查看地图中所有的元素
1) Chongqing
2) Shengzhen
3) Guangzhou
4) Shanghai
5) Beijin
127.0.0.1:6379 ZREM china:city Beijin # 移除元素
(integer) 1
127.0.0.1:6379 ZRANGE china:city 0 -1
1) Chongqing
2) Shengzhen
3) Guangzhou
4) Shanghai
127.0.0.1:6379 Hyperloglog基数统计的算法
基数是什么 基数是用来表示一个集合中元素个数的概念。它通常用于描述集合的大小或元素的数量。基数可以是非负整数包括零。基数为零表示集合是空的没有元素。 如果一个集合包含了3个元素那么它的基数是3。如果一个集合为空那么它的基数是0。 网页的uV (一个人访问一个网站多次但是还是算作一个人!) 传统的方式set 保存用户的id然后就可以统计set 中的元素数量作为标准判断 这个方式如果保存大量的用户id就会比较麻烦因为我们的目的是计数用户数量而并不是用来保存用户id的。 优点∶占用的内存是固定2^64不同的元素的技术只需要废12KB内存如果要从内存角度来比较的话Hyperloglog首选
例如
127.0.0.1:6379 PFADD mykey a b c d e f g h i j # 创建第一组元素 mykey
(integer) 1
127.0.0.1:6379 PFCOUNT mykey #统计mykey元素的基数数量
(integer) 10
127.0.0.1:6379 PFADD mykey2 i jz x c v b n m # 创建第二组元素 mykey2
(integer) 1
127.0.o.1:6379 PFCOUNT mykey2
(integer) 9
127.0.0.1:6379PFMERGE mykey3 mykey mykey2 #合并两组 mykey mykey2 mykey3并集
OK
127.0.0.1:6379 PFCOUNT mykey3 #看并集的数量!
(integer) 15
如果允许容错那么一定可以使用Hyperloglog ! 如果不允许容错就使用set或者自己的数据类型即可!
Bitmaps位图位存储
统计用户信息活跃不活跃!登录、未登录!打卡365打卡!两个状态的都可以使用Bitmaps !
Bitmaps位图数据结构!都是操作二进制位来进行记录就只有0和1两个状态!|
例如
使用bitmap来记录周一到周日的打卡!
周一:1 周二:0 周三:0 周四: 1 .....
查看某一天是否打卡 统计操作统计打卡的天数只有三天打卡了