Ardb中的二维空间索引实现从原理上说,可以简化为GeoHash + Sorted Set。 在比较早的时候写过一篇英文原理介绍在这里, 这里用中文再介绍一次。
所谓二维空间索引, 就是对二维空间数据建立索引, 通常key-value形式的存储只能存储一维的数据, 针对二维数据, 就需要做降维处理。降维的方法有很多种,Ardb中采用的是成熟的GeoHash。 GeoHash是一种对经纬度进行编码的实现,利用GeoHash可以将二维的坐标编码成一维的数据, 如字符串。这样,我们就可以将二维的坐标作为索引的key保存了。
http://yinqiwen.github.io/Ardb/2014/09/30/spatialindex.html
https://github.com/yinqiwen/ardb
https://matt.sh/redis-geo