天天看點

redis入門10——redis進階資料類型Bitmaps&HyperLogLog&GEO

一、Bitmaps

Bitmaps類型的基礎操作

  • 擷取指定key對應偏移量上的bit值

getbit key offset

  • 設定指定key對應偏移量上的bit值,value隻能是1或0

setbit key offset value

Bitmaps類型的擴充操作

  • 對指定key按位進行交、并、非、異或操作,并将結果儲存到deskey中

bitop op destKey key1 [key2...]

and:交;or:并;not:非;xor:異或

  • 統計指定key中1的數量

bitcount key [start end]

應用場景tips:redis應用于資訊狀态統計

二、HyperLogLog

統計不重複資料的數量

基本操作:

  • 添加資料:

pfadd key element [element ...]

  • 統計資料:

pfcount key [key ...]

  • 合并資料:

pfmerge destkey sourcekey [sourcekey...]

應用場景tips: redis應用于獨立資訊統計

相關說明:

  1. 用于進行基數統計,不是集合,不儲存資料,隻記錄數量而不是具體資料
  2. 核心是基數估算算法,最終數值存在一定誤差
  3. 誤差範圍:基數估計的結果是一個帶有0.81% 标準錯誤的近似值
  4. 耗空間極小,每個hyperloglogkey占用了12K的記憶體用于标記基數
  5. pfadd指令不是一次性配置設定12K記憶體使用,會随着基數的增加記憶體逐漸增大
  6. Pfmerge指令合并後占用的存儲空間為12K,無論合并之前資料量多少

三、GEO

基本操作:

  • 添加坐标點

        geoaddkey longitude latitude member [longitude latitude member ...]

  • 擷取坐标點

        geoposkey member [member ...]

  • 計算坐标點距離

geodistkey member1 member2 [unit]

  • 添加坐标點

georadiuskey longitude latitude radius m|km|ft|mi [withcoord] [withdist] [withhash] [count count]

  • 擷取坐标點

        georadiusbymemberkey member radius m|km|ft|mi [withcoord] [withdist] [withhash] [count count]

  • 計算經緯度

geohashkey member [member ...]

應用場景tips: redis應用于地理位置計算