From d633b8c1c3d0a1d634b1efc4e7943eed48f1fd91 Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Tue, 13 Aug 2024 10:52:28 +0800 Subject: [PATCH] cache total count of library items in 60 seconds --- packages/api/src/services/library_item.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/api/src/services/library_item.ts b/packages/api/src/services/library_item.ts index 5fa422103..e42dcdb9f 100644 --- a/packages/api/src/services/library_item.ts +++ b/packages/api/src/services/library_item.ts @@ -704,13 +704,22 @@ export const createSearchQueryBuilder = ( } export const countLibraryItems = async (args: SearchArgs, userId: string) => { - return authTrx( + const cacheKey = `countLibraryItems:${userId}:${JSON.stringify(args)}` + const cachedCount = await redisDataSource.redisClient?.get(cacheKey) + if (cachedCount) { + return parseInt(cachedCount, 10) + } + + const count = await authTrx( async (tx) => createSearchQueryBuilder(args, userId, tx).getCount(), { uid: userId, replicationMode: 'replica', } ) + + await redisDataSource.redisClient?.set(cacheKey, count, 'EX', 60) + return count } export const searchLibraryItems = async (