Skip to content

Commit 2720d32

Browse files
committed
improve(db): do not use keys in redis
1 parent fe14163 commit 2720d32

File tree

3 files changed

+9
-10
lines changed

3 files changed

+9
-10
lines changed

apps/api/src/controllers/live.controller.ts

+6-2
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ export function wsVisitors(
7676
const { params } = req;
7777

7878
getRedisSub().subscribe('event:received');
79-
getRedisSub().psubscribe('__key*:expired');
79+
getRedisSub().psubscribe('__keyevent@0__:expired');
8080

8181
const message = (channel: string, message: string) => {
8282
if (channel === 'event:received') {
@@ -89,6 +89,10 @@ export function wsVisitors(
8989
}
9090
};
9191
const pmessage = (pattern: string, channel: string, message: string) => {
92+
if (!message.startsWith('live:visitors:')) {
93+
return null;
94+
}
95+
9296
const [projectId] = getLiveEventInfo(message);
9397
if (projectId && projectId === params.projectId) {
9498
getLiveVisitors(params.projectId).then((count) => {
@@ -102,7 +106,7 @@ export function wsVisitors(
102106

103107
connection.socket.on('close', () => {
104108
getRedisSub().unsubscribe('event:saved');
105-
getRedisSub().punsubscribe('__key*:expired');
109+
getRedisSub().punsubscribe('__keyevent@0__:expired');
106110
getRedisSub().off('message', message);
107111
getRedisSub().off('pmessage', pmessage);
108112
});

packages/db/src/buffers/event-buffer-redis.ts

+2-6
Original file line numberDiff line numberDiff line change
@@ -246,12 +246,8 @@ return "OK"
246246
}
247247

248248
if (event.profile_id) {
249-
multi.set(
250-
`live:event:${event.project_id}:${event.profile_id}`,
251-
'',
252-
'EX',
253-
60 * 5,
254-
);
249+
multi.sadd(`live:visitors:${event.project_id}`, event.profile_id);
250+
multi.expire(`live:visitors:${event.project_id}`, 60 * 5); // 5 minutes
255251
}
256252

257253
if (!_multi) {

packages/db/src/services/event.service.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -235,8 +235,7 @@ export function transformMinimalEvent(
235235
}
236236

237237
export async function getLiveVisitors(projectId: string) {
238-
const keys = await getRedisCache().keys(`live:event:${projectId}:*`);
239-
return keys.length;
238+
return getRedisCache().scard(`live:visitors:${projectId}`);
240239
}
241240

242241
export async function getEvents(

0 commit comments

Comments
 (0)