redis数据结构

2024-08-16  本文已影响0人  温岭夹糕

目录

链接地址

数据结构回顾

image.png

redis除了上面基础5种,还有三种扩展数据结构:

1.GEO

geo(redis3.2以上)的使用场景常用于存储地址的经纬度,底层数据结构为zset,即有序集合sorted set来实现,key存储元素信息,value存储经纬度信息(权重分数),支持按经纬度排序,按范围查找
以添加车辆位置为例,伪代码如下

zadd car:location  车辆ID  经纬度

那么问题来了,经纬度是一组浮点数,包含两个值,显然zadd是无法完成的

116.03   ,  39.02

所以就在zset上面扩展出了geo

geoadd cars:location  116.03 39.02

1.1GEOhash编码

为了能高效比较经纬度,redis使用了geohash编码,原理就是二分区间,区间编码(先对经度和维度分别编码,然后再各自组合成一个最终编码)
对于一个地理位置,经度范围为[-180,180],该编码会对该范围做N次(N可自定义)的二分区间,最终形成一个二进制值:

那么一块区域的二进制编码值不就完成了(zset就可以保存了)
那么查询附件位置的车辆信息就变成了“查询二进制值(权重)等于该区域的车辆”问题了
在线体验geo

上一篇 下一篇

猜你喜欢

热点阅读