Bitmaps
Bitmaps型別的基礎操作
獲取指定key對應偏移量上的bit值
getbit key offset
設定指定key對應偏移量上的bit值,value只能是1或0
setbit key offset value
Bitmaps型別的擴充套件操作
業務場景
電影網站
- 統計每天某一部電影是否被點播
- 統計每天有多少部電影被點播
- 統計每週/月/年有多少部電影被點播
- 統計年度哪部電影沒被點播
業務分析
對指定key按位進行交、並、非、異或操作,並將結果儲存到destKey中
bitop op destKey key1 [key2 ...]
- and : 交
- or :並
- not :非
- xor :異或
統計指定key中1的數量
bitcount key [start end]
Tips:
- redis應用於資訊狀態統計
HyperLogLog
統計獨立UV
原始方案:set
- 儲存每個使用者的id(字串)
改進方案:Bitmaps
- 儲存每個使用者狀態(bit)
全新的方案:Hyperloglog
基數
- 基數是資料集去重後元素個數
- HyperLogLog是用來做基數統計的,運用了LogLog的演算法
LogLog演算法
- 原始碼
HyperLogLog型別的基本操作
新增資料
pfadd key element [element ...]
統計資料
pfcount key [key ...]
合併資料
pfmerge destkey sourcekey [sourcekey ...]
Tips:
- redis應用於獨立資訊統計
相關說明
- 用於進行基數統計,不是集合,不儲存資料,只記錄數量而不是具體資料
- 核心是基數估算演算法,最終數值存在一定誤差
- 誤差範圍:基數估計的結果是一個帶有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]
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 ...]
Tips:
- redis應用於地理位置計算
本作品採用《CC 協議》,轉載必須註明作者和本文連結