使用如下代码存入坐标A经纬度
// x = 113.751337, y = 23.021206
stringRedisTemplate.opsForGeo().geoAdd(key, new Point(x, y), member);
使用如下代码获取指定距离内坐标列表
// longitude = x = 113.751337, latitude = y = 23.021206
Circle circle = new Circle(new Point(longitude, latitude), new Distance(6000000L, RedisGeoCommands.DistanceUnit.METERS));
RedisGeoCommands.GeoRadiusCommandArgs args = RedisGeoCommands.GeoRadiusCommandArgs.newGeoRadiusArgs()
.includeDistance().includeCoordinates().sortAscending();
GeoResults<RedisGeoCommands.GeoLocation<String>> geoResults = stringRedisTemplate.opsForGeo().geoRadius(key, circle, args);
期望结果是距离为0, 但是结果是0.2091, 打断点查看最后一行代码, 从Redis取出的坐标及位置数据, 发现存入的坐标A经纬度为
Point [x=113.751339, y=23.021206]
与存入数据有差异, 应该也不是四舍五入之类的原因.
在尝试多存入几个坐标, 发现存取数据还是不一致
如:
存入 : -> 输出
113.847252, 22.906628 -> Point [x=113.847249, y=22.906629]
114.000553, 22.981234 -> Point [x=114.000554, y=22.981233]
113.63426, 22.852197 -> Point [x=113.634261, y=22.852198]
第一次使用Redis geo , 希望社区大佬帮看看
补充: 从Redis取出对应的坐标的score值到http://geohash.org/解析, 得到的坐标值就是与存入时不同, 如存入(116.983469,36.667), 命令: GEOHASH key member 得到的值为wwe0w50b8r0, 解析出来的坐标是(116.98346,36.66699)
微信小程序可以使用多种数据库,具体选择哪种数据库取决于小程序的需求和规模。以下是几种常见的选择:
解释问题: 微信小程序的数据库选择主要取决于数据类型、数据量、访问频率以及开发者的技术栈。腾讯云提供了多种数据库解决方案,能够满足不同规模和需求的小程序。
举例:
推荐产品:
选择合适的数据库能够确保小程序的性能和稳定性,提升用户体验。