KamoCRM

Redis KEYS를 사용하여 대량의 읽기 및 stale-presence 스윕 스톱

FixMediaService
Shipped
2026년 9월 23일 오전 10:41 UTC
Author
Kamo
Commit
e696226

getBulkPresence/getBulkLastSeen ran KEYS PRESENCE:*/PRESENCE LAST SEEN:* 모든 것에 호출 - 모든 존재 소켓 마운트 및 탭 초점에 충돌 - 그리고 30s 스윕 랜 두 번 더, 모든 같은 Redis에 대한 모든 *** 세션. 주요 특징 워크 및 블록 전체 키 공간; 플랫폼 스케일에서 전체 제거 요청 경로에 배치, per-org 하나. 세 각각은 이제 스캔 대신 유지 인덱스를 읽습니다. - PRESENCE ORG INDEX:{orgId} - 마지막 심박수에 의해 평가되는 ZSET handleConnect/handleHeartbeat에 의해 작성된 handleDisconnect의 제거 공유하기 getBulkPresence는 직접 읽습니다 (org scoping는 곁에 있습니다 건설 지금, per-candidate orgId 검사하지 않음); 청소의 회원 절반 ZRANGEBYSCORE와 함께 읽을 수 있습니다. - PRESENCE ACTIVE ORGS - org ids의 세트, 그래서 청소는 모든 org의 방문 할 수 있습니다 스캔 회원 데이터로 org ids를 발견하지 않고 인덱스. * * * * * * * - SET 역행 getBulkLastSeen 같은 방법. 이전과 동일하지: 개별 키의 자신의 400 일 TTL 아직도 은퇴. - PRESENCE PUBLIC INDEX - 방문자 세션의 한 플랫 ZSET (org 개념 없음, 아무것도 org에 의해 대량에 그들을 읽는다), 청소의 공중 절반. 모든 per-id 해시 키 (장소:, PRESENCE PUBLIC:, PRESENCE LAST SEEN:)는 unchanged - 같은 필드, 같은 TTLs - 그리고 진실의 단일 소스를 유지 그것의 자신의 국가; ids가 보고 얻은 색인 단지 좁은; 읽거나 신뢰하거나 보고하기 전에 진짜 해시를 청소하고, self-heals ( 인덱스 항목을 삭제) 해시가 이미 살아남을 경우. · 잘못된 heartbeat (key 만료 된 중간 세션)는 여전히 org를 속성 할 수 없습니다 - 동일한 간격은 오래된 KEYS+HGET("orgId") 검사가, 그 경로가 결코 썼기 때문에 org-bulk 뷰만 영향을 받으며, 이전에는 변하지 않습니다. PresenceBulkLookupTest (새로운) 및 PresenceSweepTest (rewritten에 의해 덮는 새로운 발견 메커니즘, 같은 행동 핀 플러스 "never 호출 KEYS" 검사), mutation-checked: 인덱스 쓰기 드롭 handleConnect, getBulkPresence의 자기 치유 지점, hasKey 가드 각 청소에서 특정한 assertion 빨강을 돌립니다.

All changes

Like what you see shipping?

All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.

Start Free ForeverView Pricing