KamoCRM

Presence bulk legge e la fermata di spazzamento stantio-presence utilizzando Redis KEYS

FixMediaService
Spegnimento
23 settembre 2026 alle ore 10:41 UTC
Autore
Kamo
Impegno
e696226

getBulkPresence/getBulkLastSeen ha eseguito KEYS PRESENCE:*/PRESENCE LAST SEEN:* su ogni chiamata - colpito su ogni supporto di presenza-socket e la messa a fuoco scheda - e la spazzata 30s corsa due volte di più, tutti contro lo stesso Redis che tiene ogni sessione. KEYS passeggiate e blocchi l'intero spazio chiave; a scala della piattaforma che è un full-Redis stalla su un percorso di richiesta, non uno per-org. Ognuno dei tre ora legge un indice mantenuto invece di scansione: - PRESENCE ORG INDEX:{orgId} - a ZSET of memberId segnato dall'ultimo battito cardiaco, scritto da handleConnect/handleHeartbeat, rimosso da handleDisconnect's grace-period delete. getBulkPresence lo legge direttamente (il punteggio diorg è di costruzione ora, non un controllo per-candidate orgId); la metà del membro della spazza lo legge con ZRANGEBYSCORE per trovare solo candidati plausibilmente-stale. - PRESENCE ACTIVE ORGS - un SET di org ids, così la spazzata può visitare ogni org indice senza scoprire org ids dai dati dei membri della scansione. - No, no. - un supporto SET getBulkLastSeen il Allo stesso modo. Non spazzato, come prima: la chiave individuale di 400 giorni TTL è ancora ciò che lo ritira. - PRESENCE PUBLIC INDEX - un ZSET piatto per le sessioni dei visitatori (senza concetto di org, nulla li legge in massa da org), alimentando la metà pubblica della spazzata. Ogni chiave per-id hash (PRESENCE:, PRESENCE PUBLIC:, PRESENCE LAST SEEN:) è invariato - stessi campi, stessi TTL - e rimane l'unica fonte di verità per il suo stato; un indice solo restringe che ids ottenere guardato; una lettura o il spazzare ancora controlla l'hash reale prima di fidarsi o segnalare nulla, e self-heals (drops l'indice) se l'hash ha già superato. A rinvigorito battito cardiaco (chiave scaduta midsession) ancora non può attribuire un org - lo stesso divario che il vecchio KEYS+HGET("orgId") scansione aveva, dal momento che quel percorso non ha mai scritto il campo o; solo la vista org-bulk è influenzata, invariata da prima. Coperto da PresenceBulkLookupTest (nuovo) e PresenceSweepTest (riscritto per il nuovo meccanismo di scoperta, stessi perni comportamentali come prima più un "mai chiama KEYS" controllo), mutazione-controllato: cadere l'indice scrivere in manigliaConnect, il ramo auto-guarigione in getBulkPresence, e la guardia hasKey nella spazzata ogni volta una specifica asserzione rossa.

Tutte le modifiche

Come quello che vedi la spedizione?

Tutto questo arriva nel vostro spazio di lavoro da solo. Iniziare sul piano gratuito e leggere di nuovo questa pagina in un mese.

Inizia gratis per sempreVisualizza il prezzo