From fd51854670639b30555ecaa314c552cb82bfb52a Mon Sep 17 00:00:00 2001 From: Mar0xy Date: Thu, 9 Nov 2023 14:51:19 +0100 Subject: [PATCH] revert: trending support for redis 6.3 It seems this change has caused redis to periodically crash on big instances --- packages/backend/src/core/FeaturedService.ts | 14 +++------- packages/backend/src/core/HashtagService.ts | 28 +++++++------------- 2 files changed, 13 insertions(+), 29 deletions(-) diff --git a/packages/backend/src/core/FeaturedService.ts b/packages/backend/src/core/FeaturedService.ts index 7ba707e9e1..9617f83880 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 cc5ce4e964..d378999907 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