RedisTemplate.opsForGeo()用法简介并举例

RedisTemplate.opsForGeo()是RedisTemplate类提供的用于操作Geo类型(地理位置)的方法。它可以用于对Redis中的Geo数据结构进行各种操作,如添加地理位置、获取距离、获取位置信息等。

下面是一些常用的RedisTemplate.opsForGeo()方法及其用法示例:

  1. add:添加一个或多个地理位置到指定的Geo键中
java 复制代码
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");
  1. position:获取指定成员的地理位置
java 复制代码
Point position = redisTemplate.opsForGeo().position("mygeo", "Beijing");
  1. distance:计算两个成员之间的距离(默认以米为单位)
java 复制代码
Distance distance = redisTemplate.opsForGeo().distance("mygeo", "Beijing", "Shanghai");
double distanceInKm = distance.getValue() / 1000;
  1. hash:获取指定成员的Geohash值
java 复制代码
String geohash = redisTemplate.opsForGeo().hash("mygeo", "Beijing");
  1. radius:根据给定的中心点,返回与中心点距离在指定范围内的成员(按距离由近到远排序)
java 复制代码
Circle circle = new Circle(new Point(116.397128, 39.916527), new Distance(200, Metrics.KILOMETERS));
GeoResults<GeoLocation<Object>> geoResults = redisTemplate.opsForGeo().radius("mygeo", circle);
  1. radiusByMember:根据给定的成员,返回与该成员距离在指定范围内的其他成员(按距离由近到远排序)
java 复制代码
GeoResults<GeoLocation<Object>> geoResults = redisTemplate.opsForGeo().radiusByMember("mygeo", "Beijing", new Distance(200, Metrics.KILOMETERS));
  1. remove:从指定的Geo键中移除一个或多个成员
java 复制代码
Long removedMembers = redisTemplate.opsForGeo().remove("mygeo", "Beijing", "Shanghai");

这些示例展示了一些redisTemplate.opsForGeo()方法的常见用法,你可以根据具体的业务需求选择适合的方法进行操作。

请注意,示例中的"mygeo"是Geo键的名称,"Beijing"、"Shanghai"等是地理位置对应的成员名。

相关推荐
qq_452396232 分钟前
第九篇:《Dockerfile 指令精讲(二):WORKDIR、ENV、ARG、EXPOSE》
java·开发语言·docker
JAVA社区4 分钟前
Java高级全套教程(九)—— SpringCloud超详细实战详解
java·开发语言·后端·spring cloud·面试·职场和发展
wyjcxyyy6 分钟前
java反序列化-cc1链
java·c语言·开发语言
garmin Chen7 分钟前
Elasticsearch(1):Elasticsearch核心原理与基础操作总结
java·大数据·笔记·elasticsearch·搜索引擎·全文检索
Devin~Y11 分钟前
大厂Java面试实录:Spring Boot/Cloud、Kafka、Redis、K8s 可观测性 + RAG/Agent(小Y翻车版)
java·spring boot·redis·spring cloud·kafka·kubernetes·mybatis
林森lsjs15 分钟前
【日耕一题】2. 面向对象 Java 基础:构造方法与 toString
java·开发语言
学代码的真由酱18 分钟前
【自用】测开面试问题-Java
java·面试·职场和发展
过期动态19 分钟前
【LeetCode 热题 100】三数之和
java·数据结构·算法·leetcode·职场和发展·排序算法
希望永不加班23 分钟前
SpringBoot 服务注册与发现:Nacos/Consul/Eureka
java·spring boot·eureka·consul·java-consul
仙俊红25 分钟前
spring有多个对象时如何注入
java·后端·spring