【Redis】14.Redis高级数据类型Bitmaps、HyperLogLog、GEO
生活随笔
收集整理的這篇文章主要介紹了
【Redis】14.Redis高级数据类型Bitmaps、HyperLogLog、GEO
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【Redis】14.Redis高級數據類型Bitmaps、HyperLogLog、GEO
Bitmaps:用比特位進行快速的狀態統計
Bitmaps基本操作
Bitmaps不是一個新的數據類型,而是string中二進制位的操作接口。之前是以string的整體操作數據,現在是用string中二進制的比特位來存儲。Bitmaps類型的擴展操作
業務場景 電影網站
- 統計每天某一部電影是否被點播
- 統計每天有多少部電影被點播
- 統計每周/月/年有多少部電影被點播
- 統計年度哪部電影沒有被點播
業務分析
- 對指定key按位進行交、并、非、異或操作,并將結果保存到destKey中
bitop op destKey key1 [key2…]
and or not xor
- 統計指定key中1的數量
bitcount key [start end]
HyperLogLog:作基數統計
統計獨立UV:統計不重復的數據數量
- 原始方案 set
存儲每個用戶的id(字符串) - 改進方案:Bitmaps
存儲每個用戶狀態(bit) - 全新的方案:Hyperloglog
基數統計
基數
- 基數是數據集去重后元素的個數
- HyoerLogLog是用來做計數統計的,運用了LogLog的算法
HyperLogLog類型的基本操作
- 添加數據
pfadd key element [element …]
- 統計數據
pfcount key [key …]
- 合并數據
pfmerge destkey sourcekey [sourcekey …]
相關說明
- 用于進行計數統計,不是集合,不保存數據,值記錄數量而不是具體數據
- 核心是計數估算算法,最終數值存在一定誤差
- 誤差范圍:計數估計的數據是一個帶有0.81%標準錯誤的近似值
- 耗空間極小,每個hyperloglog key占用了12k的內存用于標記基數
- pfadd命令不是一次性分配12k內存使用,會隨著基數的增加內存逐漸增大
- Pfmerge命令合并后占用的內存空間為12k,無論合并之前數據量多少
GEO:作地理位置信息計算
GEO類型的基本操作
- 添加坐標點
geoadd key longitude latitude member [longitude latitude member]
- 獲取坐標點
geopos key member[member …]
- 計算坐標點距離
geodist key member1 member2 [unit]
總結
以上是生活随笔為你收集整理的【Redis】14.Redis高级数据类型Bitmaps、HyperLogLog、GEO的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Redis】13.Redis服务器配置
- 下一篇: 【Redis】15.Redis主从复制