jedsi操作Redius中的GEO功能
来源:互联网 发布:淘客如何找商家数据 编辑:程序博客网 时间:2024/06/05 20:24
jedsi操作Redius中的GEO功能
- 之前楼主也是为了找这方面的资料,找了好久都一无所获,我记得百度置顶的一个回答是说目前jedsi不支持GEO功能,只能用脚步实现。
- 我呢,并没有死心,后来在开源中国,看到一个大神指点,在github上找到了一个jedis的源码并附上了操作案例的代码。 楼主经过修改,加上简短都注释。就迫不及待发布了,为各位小伙伴在找这方面资料提供帮助,不要像我一样浪费大量时间类。
- 也希望各位能够互相分享自己的工具包,或者某些代码案例,为中国开发项目变得更加容易和简单
代码块
代码块语法遵循标准markdown代码,例如:
import java.util.HashMap;import java.util.List;import java.util.Map;import redis.clients.jedis.GeoCoordinate;import redis.clients.jedis.GeoRadiusResponse;import redis.clients.jedis.GeoUnit;import redis.clients.jedis.Jedis;import redis.clients.jedis.params.geo.GeoRadiusParam;/** * * @author * */public class JedsiR { static String host = "localhost"; static int port = 6379; static Jedis jedis = new Jedis(host, port); /** * 添加到redius * @param key redius的键 * @param longitude 经度 * @param latitude 纬度 * @param member 用户标识 * <br><b>@author: jun-qi.hu</b> * <br>createDate:2017年2月28日上午10:48:51 */ public void geoadd(String key, double longitude, double latitude, String member) { //单数据插入 jedis.geoadd(key, longitude, latitude, member); Map<String, GeoCoordinate> coordinateMap = new HashMap<String, GeoCoordinate>(); /** * @param key a= redius的键 * @param value 3=经度,4=纬度 */ coordinateMap.put("a", new GeoCoordinate(3, 4)); coordinateMap.put("b", new GeoCoordinate(2, 3)); coordinateMap.put("c", new GeoCoordinate(3.314, 2.3241)); // 批量插入 键/值对 jedis.geoadd("foo", coordinateMap); } // 2.查询两地距离 距离单位 public void geodist(String key, String member1, String member2, GeoUnit unit) { //不输入则使用默认单位 Double dist = jedis.geodist(key, member1, member2); dist = jedis.geodist(key, member1, member2, unit); } // 查询指定位置坐标都HASH编码 public List<String> geohash(String key,String... array) { List<String> hashes = jedis.geohash(key, array); return hashes; } // GEOPOS 查询多个成员位置的坐标 public void geopos(String key, String... members) { List<GeoCoordinate> coordinates = jedis.geopos("foo", members); } // GEORADIUS 查询某经纬度定位的附近其它成员 public void georadius(String key, double longitude, double latitude, double radius, GeoUnit unit) { List<GeoRadiusResponse> members = jedis.georadius(key, longitude, latitude, radius, unit); // sort 查询附近并根据距离排序 members = jedis.georadius("Sicily", 15, 37, 200, GeoUnit.KM, GeoRadiusParam.geoRadiusParam().sortAscending()); // sort members = jedis.georadius("Sicily", 15, 37, 200, GeoUnit.KM, GeoRadiusParam.geoRadiusParam().sortAscending().count(1)); // withdist, withcoord 这是个什么鬼! 我也没去查。。。 有谁知道类 麻烦告诉我啊 members = jedis.georadius("Sicily", 15, 37, 200, GeoUnit.KM, GeoRadiusParam.geoRadiusParam().sortAscending().count(1).withCoord().withDist()); GeoRadiusResponse response = members.get(0); } // GEORADIUS 查询该成员定位的附近其它成员 public void georadiusByMember(String key, String member, double radius, GeoUnit unit) { List<GeoRadiusResponse> members = jedis.georadiusByMember(key, member, radius, unit); // 将结果升序排列 members = jedis.georadiusByMember("Sicily", "Agrigento", 100, GeoUnit.KM, GeoRadiusParam.geoRadiusParam().sortAscending()); members = jedis.georadiusByMember("Sicily", "Agrigento", 100, GeoUnit.KM, GeoRadiusParam.geoRadiusParam().sortAscending().count(1).withCoord().withDist()); }}
0 0
- jedsi操作Redius中的GEO功能
- Redis 3.2 GEO功能支持
- Redis,Geo,(地理位置信息操作)
- Redis Geo:Redis新增位置查询功能
- REDIS GEO: REDIS新增位置查询功能
- redius安装和使用
- redius学习经验
- ConterOS7 安装Redius
- PowerShell 操作 Azure SQL Active Geo-Replication 实战
- sqlserver数据库中的位操作功能
- Matlab生物信息学工具箱新增功能——处理GEO系列数据
- geo-location
- -Geo-Picture
- GEO算法
- Redis GEO
- Geo相关
- Redis GEO
- Reids Geo
- STM32F103程序设计-8-USB转TTL串口(printf)
- webpack loader加载器
- Java小记__抽象类和接口
- LeetCode : Same Tree
- docker 镜像centos 6.x 中文支持解决
- jedsi操作Redius中的GEO功能
- 欢迎使用CSDN-markdown编辑器
- 九度OJ-1122:吃糖果
- iOS 利用MD5或SHA1加密算法给字符串加密
- UITableView header不随着滑动停留
- jstl自定义函数
- QT 和 VS2013的配置
- 欢迎使用CSDN-markdown编辑器
- Khronos 在GDC上的信息汇总:Vulkan,OpenXR,WebGL,glTF