第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

使用 Redis 如何實(shí)現(xiàn)查詢(xún)附近的人?「視頻版」——面試突擊 003 期

標(biāo)簽:
Java 面試

面试问题

Redis 如何实现查询附近的人?

涉及知识点

  1. Redis 中如何操作位置信息?
  2. GEO 底层是如何实现的?
  3. 如何在程序实现查询附近的人?
  4. 在实际使用中需要注意哪些问题?

视频答案

图文答案

Redis 中要实现查询附近的人,需要使用 Redis 3.2 版本中提供的 GEO 数据类型,它包含以下几个重要的方法:

  1. GEOADD 添加元素位置信息;
  2. GEOPOS 查询元素经纬度信息;
  3. GEODIST 查询两个元素的直线距离;
  4. GEORADIUS 查询附近一定距离内的元素信息。

首先我们可以使用百度提供的经纬度查询工具来确定位置信息,地址:我们先用百度地图提供的经纬度查询工具,地址:http://api.map.baidu.com/lbsapi/getpoint/index.html

img

命令使用详见视频部分。

代码实战

下面我们用 Java 代码,来实现查询附近的人,完整代码如下:

import redis.clients.jedis.GeoCoordinate;  
import redis.clients.jedis.GeoRadiusResponse;  
import redis.clients.jedis.GeoUnit;  
import redis.clients.jedis.Jedis;  
  
import java.util.HashMap;  
import java.util.List;  
import java.util.Map;  
  
public class GeoHashExample {  
public static void main(String[] args) {  
Jedis jedis = new Jedis("127.0.0.1", 6379);  
Map<String, GeoCoordinate> map = new HashMap<>();  
// 添加小明的位置  
map.put("xiaoming", new GeoCoordinate(116.404269, 39.913164));  
// 添加小红的位置  
map.put("xiaohong", new GeoCoordinate(116.36, 39.922461));  
// 添加小美的位置  
map.put("xiaomei", new GeoCoordinate(116.499705, 39.874635));  
// 添加小二  
map.put("xiaoer", new GeoCoordinate(116.193275, 39.996348));  
jedis.geoadd("person", map);  
// 查询小明和小红的直线距离  
System.out.println("小明和小红相距:" + jedis.geodist("person", "xiaoming",  
"xiaohong", GeoUnit.KM) + " KM");  
// 查询小明附近 5 公里的人  
List<GeoRadiusResponse> res = jedis.georadiusByMemberReadonly("person", "xiaoming",  
5, GeoUnit.KM);  
for (int i = 1; i < res.size(); i++) {  
System.out.println("小明附近的人:" + res.get(i).getMemberByString());  
}  
}  
}  

以上程序执行的结果如下:

小明和小红相距:3.9153 KM

小明附近的人:xiaohong

总结

GEO 是 Redis 3.2 版本中新增的功能,只有升级到 3.2+ 才能使用,GEO 本质上是基于 ZSet 实现的,这点在 Redis 源码找到相关信息,我们可以 GEO 使用实现查找附近的人或者附近的地点,还可以用它来计算两个位置相隔的直线距离。

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
JAVA開(kāi)發(fā)工程師
手記
粉絲
1.3萬(wàn)
獲贊與收藏
4333

關(guān)注作者,訂閱最新文章

閱讀免費(fèi)教程

  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫(xiě)下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶(hù)
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專(zhuān)欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消