KärndataAnalys

Räkning i stor skala med probabilistiska strukturer

Unika besökare, ”har vi sett det här?”, toppobjekt och frekvenser över miljarder händelser, var och en i en liten, fast mängd minne.

probabilistiska strukturer
4
minne per struktur
Fast
felgränser
Kända
Steg 1 av 5
Unika besökare

Lägg besökar-id i en HyperLogLog. Minnet förblir litet hur många som än kommer.

Exempelsessionplaying
# Unika besökare
hotkv> PFADD visitors:2026-10-16 user:42 user:77 user:91
(integer) 1

En animerad genomgång med riktiga HotKV-kommandon och exempelsvar. Klicka på valfritt steg för att hoppa dit. Kommandon och svar förblir på engelska, precis som du skriver och ser dem i HotKV.

Problemet

Exakta svar på ”hur många unika användare”, ”har vi skickat det här e-postmeddelandet förut” eller ”vilka är de vanligaste sökningarna” kräver minne som växer med varje distinkt objekt. Vid miljarder händelser blir det gigabyte av mängder och räknare per fråga.

Så löser HotKV det

Probabilistiska strukturer byter ett litet, känt fel mot konstant minne. HyperLogLog räknar distinkta objekt, Bloom-filter besvarar medlemskap, Top-K följer de vanligaste objekten och Count-min sketches uppskattar hur ofta ett objekt förekommit. Alla fyra är inbyggda i HotKV.

Steg för steg

Vad som händer, kommando för kommando

  1. 01

    Unika besökare

    Lägg besökar-id i en HyperLogLog. Minnet förblir litet hur många som än kommer.

    PFADD visitors:2026-10-16 user:42 user:77 user:91
  2. 02

    Hur många?

    En uppskattning av distinkta besökare med ett litet standardfel.

    PFCOUNT visitors:2026-10-16
  3. 03

    Skicka aldrig två gånger

    Innan ett kampanjmejl skickas, kontrollera om den här adressen redan fått det.

    BF.EXISTS sent:campaign:fall ada@example.com
  4. 04

    Vanligaste sökningar

    Top-K behåller de vanligaste objekten när händelser strömmar in.

    TOPK.LIST searches:today WITHCOUNT
  5. 05

    Hur ofta för ett visst objekt

    En Count-min sketch uppskattar antalet för vilket objekt som helst, listat eller inte.

    CMS.QUERY pageviews /home /pricing /blog
Där det passar

Verkliga scenarier

Webb- och appanalys

Dagliga och månatliga unika användare per sida eller funktion, sammanslagna över dagar med PFMERGE.

E-post och notiser

Bloom-filter stoppar dubbla utskick över omförsök och kampanjer.

Sök och handel

De vanligaste sökfrågorna och mest visade produkterna följs live för sortimentsarbete.

Inbyggt

Det här får du

HyperLogLog

Antal distinkta objekt, sammanslagningsbara över intervall.

PFADDPFCOUNTPFMERGE

Bloom-filter

Medlemskap med en konfigurerbar andel falska positiva.

BF.RESERVEBF.ADDBF.EXISTS

Top-K

De vanligaste objekten i en ström.

TOPK.ADDTOPK.LIST

Count-min sketch

Frekvensuppskattningar för vilket objekt som helst.

CMS.INCRBYCMS.QUERY

Vanliga frågor

Hur exakta är de?

Med Bloom-filter anger du felfrekvensen, och med Count-min sketches bredd och djup. HyperLogLog har ett litet, fast standardfel.

Kan ett Bloom-filter missa något det har sett?

Nej. Det kan ge en falsk positiv, aldrig en falsk negativ.

Behöver jag en modul?

Nej. De är en del av HotKV.

Relaterade användningsfall

Prova på din egen arbetslast

HotKV talar Redis-protokollet, så du kan peka en befintlig klient mot det och köra samma kommandon.