diff --git a/packages/backend/src/core/FeaturedService.ts b/packages/backend/src/core/FeaturedService.ts index 7ba707e9e..9617f8388 100644 --- a/packages/backend/src/core/FeaturedService.ts +++ b/packages/backend/src/core/FeaturedService.ts @@ -35,16 +35,10 @@ export class FeaturedService { `${name}:${currentWindow}`, score, element); - - const TTL = await this.redisClient.ttl(`${name}:${currentWindow}`); - - if (TTL === -1) { - this.redisClient.expire(`${name}:${currentWindow}`, - (windowRange * 3) / 1000, // 1時間 - //'NX', // "NX -- Set expiry only when the key has no expiry" = 有効期限がないときだけ設定 - ); - } - + redisTransaction.expire( + `${name}:${currentWindow}`, + (windowRange * 3) / 1000, + 'NX'); // "NX -- Set expiry only when the key has no expiry" = 有効期限がないときだけ設定 await redisTransaction.exec(); } diff --git a/packages/backend/src/core/HashtagService.ts b/packages/backend/src/core/HashtagService.ts index cc5ce4e96..d37899990 100644 --- a/packages/backend/src/core/HashtagService.ts +++ b/packages/backend/src/core/HashtagService.ts @@ -176,30 +176,20 @@ export class HashtagService { // チャート用 redisPipeline.pfadd(`hashtagUsers:${hashtag}:${window}`, userId); + redisPipeline.expire(`hashtagUsers:${hashtag}:${window}`, + 60 * 60 * 24 * 3, // 3日間 + 'NX', // "NX -- Set expiry only when the key has no expiry" = 有効期限がないときだけ設定 + ); // ユニークカウント用 // TODO: Bloom Filter を使うようにしても良さそう redisPipeline.sadd(`hashtagUsers:${hashtag}`, userId); + redisPipeline.expire(`hashtagUsers:${hashtag}`, + 60 * 60, // 1時間 + 'NX', // "NX -- Set expiry only when the key has no expiry" = 有効期限がないときだけ設定 + ); - await redisPipeline.exec(); - - const TTL = await this.redisClient.ttl(`hashtagUsers:${hashtag}`); - - if (TTL === -1) { - this.redisClient.expire(`hashtagUsers:${hashtag}`, - 60 * 60, // 1時間 - //'NX', // "NX -- Set expiry only when the key has no expiry" = 有効期限がないときだけ設定 - ); - } - - const TTLwindow = await this.redisClient.ttl(`hashtagUsers:${hashtag}:${window}`); - - if (TTLwindow === -1) { - this.redisClient.expire(`hashtagUsers:${hashtag}:${window}`, - 60 * 60 * 24 * 3, // 3日間 - //'NX', // "NX -- Set expiry only when the key has no expiry" = 有効期限がないときだけ設定 - ); - } + redisPipeline.exec(); } @bindThis