import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.geo.Distance;
import org.springframework.data.geo.Point;
import org.springframework.data.redis.connection.RedisGeoCommands;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
@Service
public class GeolocationService {
@Autowired
private RedisTemplate<String, String> redisTemplate;
public List<RedisGeoCommands.GeoLocation<String>> findGeoLocationsWithinRadius(String key, Point point, Distance radius) {
// 查询以给定点为中心,指定半径内的所有地理位置
return redisTemplate.opsForGeo().findGeoLocationsWithinRadius(key, point, radius);
}
public Long addGeoLocation(String key, Point point, String member) {
// 添加一个地理位置
return redisTemplate.opsForGeo().add(key, point, member);
}
public Double calculateDistance(String key, String member1, String member2) {
// 计算两个成员之间的距离
return redisTemplate.opsForGeo().distance(key, member1, member2).getMetters();
}
}
这个代码示例展示了如何在Spring Boot应用程序中使用RedisTemplate操作Redis的GEO数据类型。这包括添加地理位置、查询指定范围内的地理位置和计算两个地理位置之间的距离。这些操作是实现地理位置相关需求的基础。