華為云企業級Redis揭秘第四期:高斯Redis Geo介紹與應用

      網友投稿 805 2022-05-29

      【最新活動】企業級Redis專場熱銷中!首月免費,包年僅需4折!

      1、背景

      LBS(Location Based Service,基于位置的服務)有非常廣泛的應用場景,最常見的應用就是POI(Point of Interest)的查詢,例如用戶查找附近的人,附近的餐廳,附近的外賣商家等等。LBS的實現需要數據庫存儲地理位置信息,開源Redis是一個功能強、效率高、使用方便的緩存數據庫,實現了地理位置存儲的功能,可以用于LBS的數據存儲。

      開源Redis 3.2以上版本的Geo功能支持了地理位置信息存儲管理,但是內存限制導致沒有大規模應用。GaussDB(for Redis)(下文簡稱高斯Redis)兼容開源Redis的Geo功能,使用磁盤替代內存,突破了開源Redis的內存限制,可以完美解決Geo的大規模應用問題。

      2、開源Redis Geo介紹

      Redis的Geo功能支持如下 6 個 Geo 的相關操作:

      geoadd:添加某個地理位置的坐標。

      geopos:獲取某個地理位置的坐標。

      geodist:獲取兩個地理位置的距離。

      geohash:獲取某個地理位置的geohash值。

      georadius:根據給定地理位置坐標獲取指定范圍內的地理位置集合。

      georadiusbymember:根據給定地理位置獲取指定范圍內的地理位置集合。

      Redis Geo功能的空間索引采用 GeoHash 原理,配合zset集合存儲,查詢效率接近 log(N)。

      2、為什么開源Redis Geo沒有廣泛應用?

      存儲地理位置信息的應用非常廣泛,而開源Redis Geo功能也可以存儲地理位置信息,并且查詢效率高,為什么沒有得到大規模的應用呢?

      分析存儲地理位置信息的場景,都有如下特點:

      數據量大

      華為云企業級Redis揭秘第四期:高斯Redis Geo介紹與應用

      大部分場景存儲地理位置信息的數據量都是TB級以上的,開源Redis的數據全部存放在內存中,節點的內存大小固定,要支持大數據量的地理位置信息存儲,必須增加節點數,這會造成成本過高、大集群維護困難等問題。

      數據持續增長

      隨著用戶的增長,地理位置信息的數據也在持續增長,要求底層存儲能夠無損擴容。但開源Redis擴容需要重新劃分hash槽進行數據遷移,必定會影響業務。

      高并發讀寫

      開源Redis主從模式下只有主節點可寫,主節點高并發數據寫入、高并發數據讀出,寫入速度過高容易造成主從堆積,數據丟失。

      除此之外,還需要考慮備份恢復,數據一致性,擴容,高可用等數據庫系統能力。

      備份恢復

      開源Redis提供RDB和AOF方式備份數據,但當數據規模大時,RDB方式恢復的數據一致性和完整性較差,AOF方式數據恢復的效率低。

      數據一致性

      開源Redis的主從采用異步復制,會出現數據不一致的情況。

      高可用

      開源Redis如果同時掛掉一對主從節點,部分數據將不可用,容錯能力弱。

      3、高斯Redis為什么合適?

      高斯Redis基于華為自研分布式存儲系統DFV,支持PB級大規模的數據存儲。解決了開源Redis高成本、存儲數據量小、數據不一致等問題,具有秒擴容、超可用、強一致、低成本、自動備份、抗寫能力強的優勢。

      4、適用場景

      高斯Redis Geo功能適用于數據量大、讀寫頻繁的場景。在外賣平臺、點評平臺、找房平臺中,餐館的數據、外賣騎手的數據、用戶的數據、房源的數據這些數據隨著用戶增長,數據量過億,對應的地理位置信息的數據量可到數TB級別,正是高斯Redis適用的場景。下面介紹在不同場景中Geo功能的應用。

      4.1外賣場景:

      (1)用戶下完外賣訂單后,使用geoadd命令加入騎手的位置。

      (2)使用geopos命令,用戶可獲得騎手的具體位置。

      (3)使用georadius/ georadiusbymember命令騎手查看附近可配送的訂單。

      (4)使用geodist命令用戶可獲得騎手的距離。

      4.2點評場景:

      (1)新的店鋪加入點評平臺,使用geoadd命令,添加新店鋪的位置。

      (2)使用geopos命令,用戶獲得店鋪的具體位置。

      (3)使用geodist命令,用戶可獲得與店鋪的距離。

      (4)使用georadius/ georadiusbymember,用戶可查找距離500米范圍的店鋪。

      4.3找房場景:

      (1)新的房源加入房源平臺中,使用geoadd命令,添加新房源的位置。

      (2)使用geopos命令,用戶可獲得房源的具體位置。

      (3)使用geodist命令,用戶可獲得與房源的距離。

      (4)使用georadius/ georadiusbymember命令,用戶查找附近1km范圍內的房源。

      5、總結

      開源Redis的Geo功能查詢效率高,但存在存儲容量小、抗寫能力弱、可用性差等明顯缺點,導致了其Geo功能一直沒有廣泛應用。高斯Redis突破了開源Redis的內存限制,以高性能磁盤存儲數據,具有秒擴容、超可用、強一致、低成本、自動備份、抗寫能力強的特點,因此高斯Redis適用于大量地理位置信息存儲的場景。

      杭州/西安/深圳簡歷投遞:yuwenlong4@huawei.com

      GaussDB(for Redis)產品主頁:

      https://www.huaweicloud.com/product/gaussdbforredis.html

      更多技術文章,關注GaussDB(for Redis)官方博客:

      https://bbs.huaweicloud.com/community/usersnew/id_1614151726110813

      MySQL Redis 云數據庫 GaussDB(for Redis) 數據庫 緩存

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:【docker系列】docker基礎概念-容器、鏡像以及引擎組成部分
      下一篇:2021最新云計算運維面試題,懂得小伙伴都收藏了
      相關文章
      亚洲人成人无码网www国产| 亚洲中文字幕乱码AV波多JI| 亚洲国产成人精品青青草原| 亚洲av日韩av高潮潮喷无码| 亚洲VA综合VA国产产VA中| 亚洲人成未满十八禁网站| 亚洲成人免费网站| 亚洲精品欧洲精品| 亚洲第一页在线视频| 91精品国产亚洲爽啪在线观看| 亚洲Av无码专区国产乱码DVD| 中文字幕人成人乱码亚洲电影| 国产亚洲精品免费视频播放| 亚洲中文字幕成人在线| 国产亚洲精品国看不卡| 国产亚洲视频在线播放| 亚洲日产韩国一二三四区| 亚洲狠狠婷婷综合久久久久| 国产偷窥女洗浴在线观看亚洲| 亚洲精品国产V片在线观看| 性色av极品无码专区亚洲| 在线观看亚洲专区| 亚洲成网777777国产精品| 亚洲av午夜成人片精品电影| 亚洲成a人片在线观看国产| 国产成人精品久久亚洲高清不卡 | 亚洲一区二区高清| 亚洲日韩精品射精日| 亚洲av永久无码精品表情包| 亚洲国产精品福利片在线观看| 亚洲AV成人片色在线观看| 91亚洲国产成人精品下载| 亚洲精品第一国产综合精品| 亚洲国产精品综合一区在线| 亚洲入口无毒网址你懂的| 亚洲日韩精品国产3区| 无码天堂va亚洲va在线va| 狠狠亚洲狠狠欧洲2019| 亚洲av永久无码精品漫画| 亚洲成人动漫在线观看| 亚洲国产精品精华液|