redis高級數據類型


Bitmaps

  Bitmaps類型的基礎操作

    獲取指定key對應偏移量上的bit值  getbit key offset

    設置指定key對應偏移量上的bit值,value只能是1或0  setbit key offset value

  Bitmaps類型的擴展操作

    業務場景:(redis 應用於信息狀態統計
      電影網站
        統計每天某一部電影是否被點播
        統計每天有多少部電影被點播
        統計每周/月/年有多少部電影被點播
        統計年度哪部電影沒有被點播
    業務分析:

      

     對指定key按位進行交、並、非、異或操作,並將結果保存到destKey中

       bitop op destKey key1 [key2...]    op:and:交 or:並 not:非 xor:異或  destKey:存放結果的key

     統計指定key中1的數量  bitcount key [start end]

HyperLogLog

  統計獨立UV:(redis 應用於獨立信息統計
    原始方案:set
      存儲每個用戶的id(字符串)
    改進方案:Bitmaps
      存儲每個用戶狀態(bit)
    全新的方案:Hyperloglog

  基數:

    基數是數據集去重后元素個數
    HyperLogLog 是用來做基數統計的,運用了LogLog的算法

    

   HyperLogLog類型的基本操作:

    添加數據:pfadd key element [element ...]  pfadd a 1 2  2

     統計數據:pfcount key [key ...]

    合並數據:pfmerge destkey sourcekey [sourcekey...]

  相關說明:
    用於進行基數統計,不是集合,不保存數據,只記錄數量而不是具體數據
    核心是基數估算算法,最終數值存在一定誤差
    誤差范圍:基數估計的結果是一個帶有 0.81% 標准錯誤的近似值
    耗空間極小,每個hyperloglog key占用了12K的內存用於標記基數
    pfadd命令不是一次性分配12K內存使用,會隨着基數的增加內存逐漸增大
    pfmerge命令合並后占用的存儲空間為12K,無論合並之前數據量多少

GEO

  GEO類型的基本操作:(redis 應用於地理位置計算

    添加坐標點  key:將若干個坐標放到這個容器里  longitude:經度  latitude:維度  member :地理名稱(可以隨便起)

      geoadd key longitude latitude member [longitude latitude member ...]

    獲取坐標點  geopos key member [member ...]

    計算坐標點距離  geodist key member1 member2 [unit]  unit:單位 m、km、...

    根據坐標求范圍內的數據  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]

    獲取指定點對應的坐標hash值  geohash key member [member ...]

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM