RedisTemplate.opsForGeo()
是RedisTemplate类提供的用于操作Geo类型(地理位置)的方法。它可以用于对Redis中的Geo数据结构进行各种操作,如添加地理位置、获取距离、获取位置信息等。
下面是一些常用的RedisTemplate.opsForGeo()
方法及其用法示例:
add
:添加一个或多个地理位置到指定的Geo键中
redisTemplate.opsForGeo().add("mygeo", new Point(116.397128, 39.916527), "Beijing"); redisTemplate.opsForGeo().add("mygeo", new Point(121.472641, 31.231707), "Shanghai"); redisTemplate.opsForGeo().add("mygeo", new Point(113.264435, 23.129163), "Guangzhou");
position
:获取指定成员的地理位置
Point position = redisTemplate.opsForGeo().position("mygeo", "Beijing");
distance
:计算两个成员之间的距离(默认以米为单位)
Distance distance = redisTemplate.opsForGeo().distance("mygeo", "Beijing", "Shanghai"); double distanceInKm = distance.getValue() / 1000;
hash
:获取指定成员的Geohash值
String geohash = redisTemplate.opsForGeo().hash("mygeo", "Beijing");
radius
:根据给定的中心点,返回与中心点距离在指定范围内的成员(按距离由近到远排序)
Circle circle = new Circle(new Point(116.397128, 39.916527), new Distance(200, Metrics.KILOMETERS)); GeoResults<GeoLocation<Object>> geoResults = redisTemplate.opsForGeo().radius("mygeo", circle);
radiusByMember
:根据给定的成员,返回与该成员距离在指定范围内的其他成员(按距离由近到远排序)
GeoResults<GeoLocation<Object>> geoResults = redisTemplate.opsForGeo().radiusByMember("mygeo", "Beijing", new Distance(200, Metrics.KILOMETERS));
remove
:从指定的Geo键中移除一个或多个成员
Long removedMembers = redisTemplate.opsForGeo().remove("mygeo", "Beijing", "Shanghai");
请注意,示例中的"mygeo"是Geo键的名称,“Beijing”、"Shanghai"等是地理位置对应的成员名