Redis高階-6.高階資料型別
阿新 • • 發佈:2021-09-19
目錄
6.高階資料型別
1.Bitmaps
Bitmaps型別的基礎操作
獲取指定key對應偏移量上的bit值
getbit key offset
設定指定key對應偏移量上的bit值,value只能是 1 或 0
setbit key offset value // 如:設定2位置的值為1 -> 0010
Bitmaps型別的擴充套件操作
對指定key按位進行交、並、非、異或操作,並將結果儲存到destKey中
bitop op destKey key1 [key2...] and:交 or:並 not:非 xor:異或
統計指定key中1的數量
bitcount key [start end] // start end開始結束位置,不指定就全部
2.HyperLogLog
統計獨立UV
原始方案:set
儲存每個使用者的id(字串)
改進方案:Bitmaps
儲存每個使用者狀態(bit)
全新的方案:Hyperloglog
基數
基數是資料集去重後元素個數
HyperLogLog 是用來做基數統計的,運用了LogLog的演算法
HyperLogLog型別的基本操作
新增資料
pfadd key element [element ...]
統計資料(獲取基數)
pfcount key [key ...]
合併資料
pfmerge destkey sourcekey [sourcekey...]
相關說明
用於進行基數統計,不是集合,不儲存資料,只記錄數量而不是具體資料
核心是基數估算演算法,最終數值存在一定誤差
誤差範圍:基數估計的結果是一個帶有 0.81% 標準錯誤的近似值
耗空間極小,每個hyperloglog key佔用了12K的記憶體用於標記基數
pfadd命令不是一次性分配12K記憶體使用,會隨著基數的增加記憶體逐漸增大
Pfmerge命令合併後佔用的儲存空間為12K,無論合併之前資料量多少
3.GEO
GEO型別的基本操作
新增座標點
geoadd key longitude latitude member [longitude latitude member ...]
// 組 橫座標 縱座標 名稱
// 同組中資料可以使用,不同組間資料不能相互對比
獲取座標點
geopos key member [member ...]
計算座標點距離
geodist key member1 member2 [unit] // unit 單位:m(米) km(千米)
eg:
geoadd geos 1 1 a // 新增a座標點
geoadd geos 2 2 b // 新增b座標點
geopos geos a // 獲取a座標點
geodist geos a b m // 計算a、b座標點間的距離,單位是:米
根據座標求範圍內的資料
georadius key longitude latitude radius m|km|ft|mi [withcoord] [withdist] [withhash] [count count]
根據點求範圍內資料
georadiusbymember key member radius m|km|ft|mi [withcoord] [withdist] [withhash] [count count]
// 組 名稱 範圍 單位
// withdist 顯示兩點之間距離
// withcoord 顯示對方點的座標
// withhash 對應點雜湊值
// count 取的範圍值
// 還可以加esc | desc 進行升序降序
獲取指定點對應的座標hash值
geohash key member [member ...]