華為云企業級Redis揭秘第四期:高斯Redis Geo介紹與應用
【最新活動】企業級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功能也可以存儲地理位置信息,并且查詢效率高,為什么沒有得到大規模的應用呢?
分析存儲地理位置信息的場景,都有如下特點:
數據量大
大部分場景存儲地理位置信息的數據量都是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小時內刪除侵權內容。