梦想加空间 -久久高清免费视频- 一个程序猿的个人博客网站

您現在的位置是:首頁 >學無止境 >用Redis實現“附近的人”功能網站首頁學無止境

用Redis實現“附近的人”功能

餓了么物流技術團隊 2019-11-24 22:56:42
簡介針對“附近的人”這一位置服務領域的應用場景,常見的可使用PG、MySQL和MongoDB等多種DB的空間索引進行實現。而Redis另辟蹊徑,結合其有序隊列zset以及geohash編碼,實現了空間搜索功能,且擁有極高的運行效率。

自Redis 3.2開始,Redis基于geohash和有序集合提供了地理位置相關功能。 Redis Geo模塊包含了以下6個命令:

  • GEOADD: 將給定的位置對象(緯度、經度、名字)添加到指定的key;

  • GEOPOS: 從key里面返回所有給定位置對象的位置(經度和緯度);

  • GEODIST: 返回兩個給定位置之間的距離;

  • GEOHASH: 返回一個或多個位置對象的Geohash表示;

  • GEORADIUS: 以給定的經緯度為中心,返回目標集合中與中心的距離不超過給定最大距離的所有位置對象;

  • GEORADIUSBYMEMBER: 以給定的位置對象為中心,返回與其距離不超過給定最大距離的所有位置對象。

其中,組合使用GEOADD和GEORADIUS可實現“附近的人”中“增”和“查”的基本功能。

要實現微信中“附近的人”功能,可直接使用GEORADIUSBYMEMBER命令。

其中“給定的位置對象”即為用戶本人,搜索的對象為其他用戶。

不過本質上,GEORADIUSBYMEMBER = GEOPOS + GEORADIUS,即先查找用戶位置再通過該位置搜索附近滿足位置相互距離條件的其他用戶對象。

GEOADD

GEOADD key 116.410377 39.93491 張三 [lon lat name ...]

將給定的位置對象(緯度、經度、名字)添加到指定的key。

其中,key為集合名稱,name為該經緯度所對應的對象。

在實際運用中,當所需存儲的對象數量過多時,可通過設置多key(如一個省一個key)的方式對對象集合變相做sharding,避免單集合數量過多。

GEORADIUS

GEORADIUS key lon lat radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [ASC|DESC] [COUNT count] [STORE key] [STORedisT key]

以給定的經緯度為中心,返回目標集合中與中心的距離不超過給定最大距離的所有位置對象。

范圍單位:m | km | ft | mi --> 米 | 千米 | 英尺 | 英里
額外參數:

- WITHDIST:在返回位置對象的同時,將位置對象與中心之間的距離也一并返回。距離的單位和用戶給定的范圍單位保持一致。

- WITHCOORD:將位置對象的經度和維度也一并返回。

- WITHHASH:以 52 位有符號整數的形式,返回位置對象經過原始 geohash 編碼的有序集合分值。

- ASC|DESC:從近到遠返回位置對象元素 | 從遠到近返回位置對象元素。

- COUNT count:選取前N個匹配位置對象元素。(不設置則返回所有元素)

- STORE key:將返回結果的地理位置信息保存到指定key。

- STORedisT key:將返回結果離中心點的距離保存到指定key。


作者:萬汨

簡介:餓了么資深開發工程師。iOS,Go,Java 均有涉獵。目前主攻大數據開發。喜歡騎行、爬山。

編輯:陶家龍、孫淑娟

出處:餓了么物流技術團隊

原文鏈接:https://juejin.im/post/5da40462f265da5baf410a11

夢想加空間!平時喜歡研究各種技術,目前在從事后端開發工作,熱愛生活、熱愛工作。
主站蜘蛛池模板: 专业网站建设_企业品牌营销 · 北京汇仁智杰科技有限公司 | 收银系统_收银机_pos收款机_门店管理系统-客如云 | 液晶拼接屏_三星46寸/55寸/LG液晶拼接屏_深圳拼接墙厂家_电视大屏幕液晶拼接_高清工业级液晶监视器 | 制冷机组|地源热泵|冷水机组|磁悬浮冷水机组-山东鹏鲲空调官网 | 轻质隔墙板厂家-加气隔墙板_grc轻质隔墙板_空心实心复合隔墙板_水泥混凝土轻质隔墙板批发价格 | 铜排,异型紫棒,紫铜棒,紫铜微孔管,异型黄管,黄铜管,异形紫管,紫铜管,焊接铜管,散热器铜管,电力铜管_河间市通海铜业有限公司 | 新洲际教育-一站式留学解决方案领航者【官网】 | 览众房车,房车, 房车厂家, 房车价格, 房车图片,, 四驱房车, 皮卡房车, 越野房车, 依维柯房车, 国产房车, 自动挡房车, | 液压支架配件|液压支架立柱|液压支架千斤顶|液压支架换向阀|液压支架乳化油|液压支架密封件-山东卓力生产厂家 | 潍坊特钢集团有限公司 | 廊坊微信营销,廊坊小程序开发,廊坊APP开发(安卓_苹果ios开发),微信朋友圈广告,百度推广,廊坊网络公司品牌服务商-河北盛秋网络科技有限公司 | 山东装卸登车桥_液压装卸升降平台_固定|移动登车桥_山东牛斗重工厂家 | 研线网-考研网-考研科目/时间/专业-研线网 | 烟台通风管道,烟台风机风管,烟台风阀-烟台福莱通风设备有限公司 烟台天昊矿业有限公司、滑石、滑石粉、微细粉、滑石矿-烟台天昊矿业有限公司 | 深圳贴标机厂家-圆瓶贴标机厂家-自动贴标机厂家|九舟智能 | 皮带清扫器-皮带聚氨酯合金空段输送带清扫器刮刀厂家-衡水格锐特机械科技有限公司 | 专业网站建设_企业品牌营销 · 北京汇仁智杰科技有限公司 | 铜陵租车_铜陵租车网_铜陵租车公司_铜陵婚车租赁_铜陵汽车租赁公司-良车汽车租赁 | 泡沫混凝土垫层填充厂家,发泡混凝土垫层填充,轻质混凝土垫层填充厂家,深圳市鸿奥建材发展有限公司 | 真空干燥箱厂家-热风循环烘箱生产厂家-鼓风烘干箱价格-南京火燥机械科技有限公司 | 萘系减水剂|缓凝|早强|聚羧酸|混凝土|石膏板|管桩减水剂厂家-潍坊英宏建材有限公司 | 山东致合必拓环保科技股份有限公司 | 天津高压泵-高压清洗机-高压柱塞泵-厂家-价格-天津高压泵格瑞德 天津翻译公司盖章|022-58385822| 翰文博译(天津)商务咨询有限公司 | 柔性测斜仪|滑动式测斜仪-华思(广州)测控科技有限公司 | 无轴螺旋输送机_双无轴螺旋输送机_垃圾,污泥无轴螺旋输送机-新乡市大汉振动机械有限公司 | 混凝土修补-清水混凝土保护剂-仿清水混凝土-混凝土装修-混凝土色差处理-混凝土色差修复剂-德州唐荣建筑装饰工程有限公司 | 煤泥烘干机,酒糟烘干机,药渣烘干机,酵母烘干机,烘干机厂家-瑞奥新能源 | 气体检测仪_气体传感器_可燃气体检测仪-精讯畅通电子科技 | 智能化解决方案 智能家居 家庭影院 灯光音箱 会议室报告厅 剧场剧院 指挥中心 大数据中心_沈阳天哲科技有限公司 | 激光焊接机_激光打标机_激光切割机-惠州市镭凌激光科技有限公司 激光焊接不锈钢翅片管,不锈钢翅片管,激光焊接复合翅片管,南通拓帆换热设备有限公司 | 松下PLC经销商-松下传感器-放大器-电磁阀-光电开关-金器[东莞均钛]品牌气动元件及工控产品一站式供应商 | 浙江中瓷阀门有限公司| 衡水物流网,衡水物流信息网,衡水物流公司,衡水货运专线,衡水专线运输车辆 | 诸城市佳品食品机械有限公司| 机器人码垛机-纸箱套袋机-水平缠绕机-贴标机-开箱机-装盒机-杭州贝立智能设备有限公司 | 驾驶扫地机-手推洗地机-吸尘器-清洁设备厂家-荣事达官网 | 全球无人机网(81uav.cn)_无人机买卖、租赁服务、培训的最大门户网站 | 手术示教系统-实训示教系统-数字化手术室-直播录播系统 - 深圳市视源视讯技术有限公司 | 聚焦吉林-城市晚报官方网站| 全网营销_网络推广外包_全网营销代运营公司-湖南微望互动 | 立式/卧式/暖气/管道泵,管道离心泵选型,管道增压泵型号 - 安平鼎千泵业制造厂 |