mirror of
https://github.com/misskey-dev/misskey.git
synced 2024-12-27 08:10:24 +01:00
purgeFTT
This commit is contained in:
parent
8076f78d06
commit
98366d1ed5
2 changed files with 36 additions and 3 deletions
|
@ -14,9 +14,9 @@ export type FanoutTimelineName =
|
|||
| `homeTimeline:${string}`
|
||||
| `homeTimelineWithFiles:${string}` // only notes with files are included
|
||||
// local timeline
|
||||
| `localTimeline` // replies are not included
|
||||
| `localTimelineWithFiles` // only non-reply notes with files are included
|
||||
| `localTimelineWithReplies` // only replies are included
|
||||
| 'localTimeline' // replies are not included
|
||||
| 'localTimelineWithFiles' // only non-reply notes with files are included
|
||||
| 'localTimelineWithReplies' // only replies are included
|
||||
| `localTimelineWithReplyTo:${string}` // Only replies to specific local user are included. Parameter is reply user id.
|
||||
|
||||
// antenna
|
||||
|
@ -111,4 +111,34 @@ export class FanoutTimelineService {
|
|||
public purge(name: FanoutTimelineName) {
|
||||
return this.redisForTimelines.del('list:' + name);
|
||||
}
|
||||
|
||||
@bindThis
|
||||
public async purgeAllcache() {
|
||||
const timeLinePatterns = [
|
||||
'*list:homeTimeline*',
|
||||
'*list:localTimeline*',
|
||||
'*list:antennaTimeline*',
|
||||
'*list:userTimeline*',
|
||||
'*list:userListTimeline*',
|
||||
'*list:channelTimeline*',
|
||||
'*list:roleTimeline*',
|
||||
];
|
||||
let timeLines = [] as string[];
|
||||
|
||||
for (const timeline of timeLinePatterns) {
|
||||
let cursor = '0';
|
||||
do {
|
||||
const scanResult = await this.redisForTimelines.scan(cursor, 'MATCH', timeline, 'COUNT', 300);
|
||||
cursor = scanResult[0];
|
||||
timeLines = timeLines.concat(scanResult[1]);
|
||||
scanResult[1].forEach(x => console.log(x));
|
||||
} while (cursor !== '0');
|
||||
}
|
||||
|
||||
const pipeline = this.redisForTimelines.pipeline();
|
||||
for (const timeLine of timeLines) {
|
||||
pipeline.del(`list:${timeLine.split('list:')[1]}`);
|
||||
}
|
||||
await pipeline.exec();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,6 +12,7 @@ import { GlobalEventService } from '@/core/GlobalEventService.js';
|
|||
import { bindThis } from '@/decorators.js';
|
||||
import type { GlobalEvents } from '@/core/GlobalEventService.js';
|
||||
import { FeaturedService } from '@/core/FeaturedService.js';
|
||||
import { FanoutTimelineService } from './FanoutTimelineService.js';
|
||||
import type { OnApplicationShutdown } from '@nestjs/common';
|
||||
|
||||
@Injectable()
|
||||
|
@ -28,6 +29,7 @@ export class MetaService implements OnApplicationShutdown {
|
|||
|
||||
private featuredService: FeaturedService,
|
||||
private globalEventService: GlobalEventService,
|
||||
private fanoutTimelineService: FanoutTimelineService,
|
||||
) {
|
||||
//this.onMessage = this.onMessage.bind(this);
|
||||
|
||||
|
@ -112,6 +114,7 @@ export class MetaService implements OnApplicationShutdown {
|
|||
before = metas[0];
|
||||
|
||||
if (before) {
|
||||
if (before.enableFanoutTimeline === true && data.enableFanoutTimeline === false) this.fanoutTimelineService.purgeAllcache();
|
||||
await transactionalEntityManager.update(MiMeta, before.id, data);
|
||||
|
||||
const metas = await transactionalEntityManager.find(MiMeta, {
|
||||
|
|
Loading…
Reference in a new issue