1. 程式人生 > 其它 >Redis高階-6.高階資料型別

Redis高階-6.高階資料型別

目錄

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 ...]