[Redis] HyperLogLog(HLL) – 活躍量統計

統計一個APP的日活量(DAU)和月活量(MAU)

基數: 不重複元素, 例如{1, 2, 3, 5, 5, 5, 6}, 基數集為{1, 2, 3, 5, 6}, 基數為5;

本次範例使用Docker內建立一個Redis容器
Redis-hyperloglogs

HyperLogLogs 提供了3個指令:

  • pfadd : 添加
  • pfcount : 計數
  • pfmerge : 合併
> PFADD bikes Hyperion Deimos Phoebe Quaoar
(integer) 1
> PFCOUNT bikes
(integer) 4
> PFADD commuter_bikes Salacia Mimas Quaoar
(integer) 1
> PFMERGE all_bikes bikes commuter_bikes
OK
> PFCOUNT all_bikes
(integer) 6

以上的操作說明為:

  1. 將Hyperion, Deimos, Phoebe, Quaoar加入至bikes
  2. 查看bikes目前有多少基數(不重複元素)
  3. Salacia, Mimas, Quaoar加入至commuter_bikes
  4. 將兩個key> bikes與commuter_bikes合併成一張表,命名為all_bikes
  5. 查看all_bikes目前有多少基數

第4個操作不會將原本兩表刪除,還是會保留著。

如果想要HLL的資料刪除的話,可使用del與TTL時間到達後自行刪除