KamoCRM

Presencia lee a granel y la parada de barreja de lapresencia con Redis KEYS

FixMediaService
Se descapó
23 de septiembre de 2026 a las 10:41 UTC
Autor
Kamo
Compromit
e696226

getBulkPresence/getBulkLastSeen corrió KEYS PRESENCE:*/PRESENCE-LAST-SEEN:* en cada llamada - golpear cada montaje de presencia y enfoque de pestañas - y el barrido de los 30 corrió dos veces más, todo contra el mismo Redis que celebra cada sesión de ***. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . camina y bloquea todo el espacio clave; a escala de plataforma que es un completo-Redis parada en un camino de petición, no en uno por-org. Cada uno de los tres ahora lee un índice mantenido en lugar de escaneo: - PRESENCE-ORG-INDEX:-orgId - una ZSET de miembroId anotada por los últimos latidos, escrito por handleConnect/handleHeartbeat, eliminado por manijaDisconnect's grace-period delete. getBulkPresence lo lee directamente (org scoping is by construcción ahora, no un cheque orgId porcandidato); la mitad miembro del barrido Lo lee con ZRANGEBYSCORE para encontrar sólo candidatos plausiblemente acechados. - PRESENCE-ACTIVE-ORGS - una TSET de org ids, para que el barrido pueda visitar todos los org's índice sin descubrir org ids escaneando los datos de los miembros. - **************** - un SET de respaldo getBulkLastSeen el de la misma manera. No barrido, como antes: el propio TTL de 400 días de la clave individual sigue siendo lo que se retira. - PRESENCE-PUBLIC-INDEX - un ZSET plano para sesiones de visitantes (sin concepto de org, Nada los lee a granel por org), alimentando la mitad pública del barrido. Cada clave de hash per-id (PRESENCE:, PRESENCE-PUBLIC:, PRESENCE-LAST-SEEN:) es sin cambios - mismos campos, los mismos TTLs - y se mantiene la única fuente de la verdad para su propio estado; un índice sólo se estrecha lo que se miran los ids; una lectura o la sweep todavía comprueba el verdadero hachís antes de confiar o reportar algo, y auto-cura (gota la entrada del índice) si el hash ya ha sobrevivido. A latidos cardíacos revividos (clave de media sesión caducada) todavía no puede atribuir una org - la misma brecha que el viejo escaneo KEYS-HGET ("orgId") tenía, ya que ese camino nunca escribió el campo bien; sólo la vista de org-bulk se ve afectada, sin cambios desde antes. Cubierta de PresenceBulkLookupTest (nuevo) y PresenceSweepTest (reescrito para el nuevo mecanismo de descubrimiento, los mismos alfileres de comportamiento que antes más un "nunca llama a KEYS" check), chequeada por mutación: bajar el índice en handleConnect, la rama auto-cura en getBulkPresence, y la guardia hasKey en el barrido cada uno girar una afirmación específica de rojo.

Todos los cambios

Como lo que ves enviaste?

Todo llega a su espacio de trabajo por sí solo. Comience en el plan gratuito y lea esta página de nuevo en un mes.

Arranzar gratis para siempreVer Precios