enhance(backend): tweak cache of federated instance

#10631
This commit is contained in:
syuilo
2023-04-22 19:59:08 +09:00
parent 918a96da24
commit 34492f3c9a
5 changed files with 16 additions and 29 deletions

View File

@@ -23,8 +23,8 @@ export class FederatedInstanceService {
private idService: IdService,
) {
this.federatedInstanceCache = new RedisKVCache<Instance | null>(this.redisClient, 'federatedInstance', {
lifetime: 1000 * 60 * 60 * 24, // 24h
memoryCacheLifetime: 1000 * 60 * 30, // 30m
lifetime: 1000 * 60 * 30, // 30m
memoryCacheLifetime: 1000 * 60 * 3, // 3m
fetcher: (key) => this.instancesRepository.findOneBy({ host: key }),
toRedisConverter: (value) => JSON.stringify(value),
fromRedisConverter: (value) => {
@@ -65,15 +65,10 @@ export class FederatedInstanceService {
}
@bindThis
public async updateCachePartial(host: string, data: Partial<Instance>): Promise<void> {
host = this.utilityService.toPuny(host);
public async update(id: Instance['id'], data: Partial<Instance>): Promise<void> {
const result = await this.instancesRepository.update(id, data);
const updated = result.raw[0];
const cached = await this.federatedInstanceCache.get(host);
if (cached == null) return;
this.federatedInstanceCache.set(host, {
...cached,
...data,
});
this.federatedInstanceCache.set(updated.host, updated);
}
}