KamoCRM

Kehadiran massal membaca dan stale-kehadiran menyapu berhenti menggunakan Keys Redis

FixMediaService
Dikirim
23 September 2026 pukul 10.41 UTC
Penulis
Kamo
Commit
e696226

getBulkPreasure / getBulkLastSeen menjalankan KEYS PRESENCE: panggilan - hit pada setiap presence-socket mount dan tab fokus - dan menyapu 30-an berlari itu dua kali lebih, semua terhadap sama Redis yang memegang setiap sesi * * *. KEYS walks and blocks the entire keyspace; at platform scale that is a full- Redis tunda pada jalur permintaan, bukan satu per-org. Masing-masing dari tiga sekarang membaca indeks dipertahankan bukannya memindai: - PRESENCE _ ORG _ INDEX: {orgId} - sebuah ZSET dari anggota skor oleh detak jantung terakhir, ditulis oleh handleConnect / handleHeartbeat, dihapus oleh handleDisconnect 's grace-period hapus. getBulkPreasure membacanya langsung (org scoping adalah oleh konstruksi sekarang, bukan per- kandidat pemeriksaan orgId); anggota menyapu setengah Membacanya dengan ZRANGEBYSCORE untuk menemukan hanya kandidat plausibly- basi. - PRESENCE _ ACTIVE _ ORGS - sebuah SET id org, sehingga menyapu dapat mengunjungi setiap org 's indeks tanpa menemukan id org dengan memindai data anggota. - * * * * * * * * * * * * * * - Sebuah SET backing getBulkLastSeen Dengan cara yang sama. Tidak menyapu, sama seperti sebelumnya: kunci individu milik 400 hari TTL masih apa pensiun itu. - PRESENCE _ PUBLIC _ INDEX - satu ZSET datar untuk sesi pengunjung (tidak ada konsep org, tidak membaca mereka dalam jumlah besar oleh org), memberi makan setengah publik menyapu. Setiap kunci hash perid (PRESENCE:, PRESENCE _ PUBLIC:, PRESENCE _ TERAKHIR _ SEEN:) adalah tidak berubah - bidang yang sama, TTL yang sama - dan tetap satu sumber kebenaran untuk keadaan sendiri; sebuah indeks hanya narrows yang id bisa melihat; sebuah membaca atau menyapu masih memeriksa hash nyata sebelum mempercayai atau melaporkan apa pun, dan penyembuhan diri (tetes masukan indeks) jika hash telah hidup lebih lama itu. A detak jantung (kunci berakhir tengah-sesi) masih tidak dapat atribut org - jeda yang sama yang lama KEYS + HGET ("orgId") scan telah, karena jalur itu tidak pernah menulis bidang baik; hanya tampilan org- massal terpengaruh, tidak berubah dari sebelumnya. Dicakup oleh Presence BulkLookupTest (baru) dan Presence SweepTest (ditulis ulang untuk mekanisme penemuan baru, pin perilaku yang sama seperti sebelumnya ditambah "tidak pernah memanggil KEYS "check), mutation-check: menjatuhkan indeks tulis dalam HandleConnect, cabang diri-menyembuhkan dalam getBulkPreasure, dan pengawal HasKey dalam menyapu masing-masing gilirannya pernyataan merah spesifik.

Semua perubahan

Seperti apa yang Anda lihat pengiriman?

Semua itu tiba di ruang kerjamu sendiri. Mulailah dengan rencana gratis dan baca halaman ini lagi dalam sebulan.

Mulai Bebas SelamanyaTampilkan Harga