學習筆記 Redis 8大核心資料型別

2021-10-07 18:35:45 字數 1959 閱讀 2731

1)字串:整數值、embstr編碼的簡單動態字串、簡單動態字串(****** dynamic string)

2)列表:壓縮列表、雙端鍊錶

3)雜湊:壓縮列表、字典

4)集合:整數集合、字典

5)有序集合:壓縮列表、跳躍表和字典

set 集合的特點是查詢、插入、刪除特別高效,時間複雜度為 o(1),所以在社交系統中,可以用於儲存關注的好友列表,用來判斷是否關注,還可以用來做好友推薦使用。另外,還可以利用 set 的唯一性,來對服務的**業務、** ip 進行精確統計。

sorted set 有序集合的特點是:

因此,可以用有序集合來統計排行榜,實時重新整理榜單,還可以用來記錄學生成績,從而輕鬆獲取某個成績範圍內的學生名單,還可以用來對系統統計增加權重值,從而在 dashboard 實時展示。

bitmap 點陣圖的重要指令包括:setbitgetbitbitcountbitfieldbitopbitpos等。

redis 在 3.2 版本之後增加了對 geo 地理位置的處理功能。redis 的 geo 地理位置本質上是基於 sorted set 封裝實現的。在儲存分類 key 下的地理位置資訊時,需要對該分類 key 構建乙個 sorted set 作為內部儲存結構,用於儲存一系列位置點。

在儲存某個位置點時,首先利用 geohash 演算法,將該位置二維的經緯度,對映編碼成一維的 52 位整數值,將位置名稱、經緯度編碼 score 作為鍵值對,儲存到分類 key 對應的 sorted set 中。

需要計算某個位置點 a 附近的人時,首先以指定位置 a 為中心點,以距離作為半徑,算出 geo 雜湊 8 個方位的範圍, 然後依次輪詢方位範圍內的所有位置點,只要這些位置點到中心位置 a 的距離在要求距離範圍內,就是目標位置點。輪詢完所有範圍內的位置點後,重新排序即得到位置點 a 附近的所有目標。

使用geoadd,將位置名稱(如人、車輛、店名)與對應的地理位置資訊新增到指定的位置分類 key 中;

使用geopos方便地查詢某個名稱所在的位置資訊;

使用georadius獲取指定位置附近,不超過指定距離的所有元素;

使用geodist來獲取指定的兩個位置之間的距離。

這樣,是不是就可以實現,找到附近的餐廳,算出當前位置到對應餐廳的距離,這樣的功能了?

redis geo 地理位置,利用geohash將大量的二維經緯度轉一維的整數值,這樣可以方便的對地理位置進行查詢、距離測量、範圍搜尋。但由於地理位置點非常多,乙個地理分類 key 下可能會有大量元素,在 geo 設計時,需要提前進行規劃,避免單 key 過度膨脹。

redis 的 geo 地理位置資料結構,應用場景很多,比如查詢某個地方的具體位置,查當前位置到目的地的距離,查附近的人、餐廳、電影院等。geo 地理位置資料結構中,重要指令包括geoaddgeoposgeodistgeoradiusgeoradiusbymember等。

redis 的hyperloglog是用來做基數統計的資料型別,當輸入巨大數量的元素做統計時,只需要很小的記憶體即可完成。hyperloglog不儲存元資料,只記錄待統計元素的估算數量,這個估算數量是乙個帶有 0.81% 標準差的近似值,在大多數業務場景,對海量資料,不足 1% 的誤差是可以接受的。

Redis 8 五大資料型別之set集合

set集合中的元素是無序不重複的。1.新增set元素與檢視set元素 sadd 與smembers 127.0.0.1 6379 sadd myset liuqing love you integer 3 127.0.0.1 6379 smembers myset 1 you 2 love 3 li...

了解Redis這個核心資料型別

tring型別是二進位制安全的,即string中可以包含任何資料。redis 中的普通 string 採用 raw encoding 即原始編碼方式,該編碼方式會動態擴容,並通過提前預分配冗餘空間,來減少記憶體頻繁分配的開銷。在字串長度小於 1mb 時,按所需長度的 2 倍來分配,超過 1mb,則按...

Spark三大核心資料結構(三) 廣播變數

spark的三大核心資料結構 rdd 累加器 只寫不讀 廣播變數 唯讀不寫 廣播變數用來高效分發較大的物件。向所有工作節點傳送乙個較大的唯讀值,以供乙個或多個spark操作使用。不用廣播變數的話,轉換運算元和執行運算元之間會有shuffle的過程 使用廣播變數的好處是避免了rdd轉換和行動中的shu...