From 32fafc1184061230fde3db1e4b0f6c4a9a1121e3 Mon Sep 17 00:00:00 2001 From: Priyanshubhartistm Date: Mon, 13 Jul 2026 21:10:35 +0530 Subject: [PATCH] fix: await Redis EXISTS call in RedisAdapter.hasKey() Signed-off-by: Priyanshubhartistm --- .changeset/redis-haskey-missing-await.md | 5 +++++ src/adapters/redis-adapter.ts | 2 +- test/unit/adapters/redis-adapter.spec.ts | 4 ++-- 3 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 .changeset/redis-haskey-missing-await.md diff --git a/.changeset/redis-haskey-missing-await.md b/.changeset/redis-haskey-missing-await.md new file mode 100644 index 00000000..3021b7d7 --- /dev/null +++ b/.changeset/redis-haskey-missing-await.md @@ -0,0 +1,5 @@ +--- +"nostream": patch +--- + +fix: await Redis EXISTS call in RedisAdapter.hasKey() so it reflects actual key presence instead of always returning true diff --git a/src/adapters/redis-adapter.ts b/src/adapters/redis-adapter.ts index 0203d02b..b7a247f8 100644 --- a/src/adapters/redis-adapter.ts +++ b/src/adapters/redis-adapter.ts @@ -52,7 +52,7 @@ export class RedisAdapter implements ICacheAdapter { public async hasKey(key: string): Promise { await this.connection logger('has %s key', key) - return Boolean(this.client.exists(key)) + return (await this.client.exists(key)) > 0 } public async getKey(key: string): Promise { diff --git a/test/unit/adapters/redis-adapter.spec.ts b/test/unit/adapters/redis-adapter.spec.ts index f9db2f85..9774dc23 100644 --- a/test/unit/adapters/redis-adapter.spec.ts +++ b/test/unit/adapters/redis-adapter.spec.ts @@ -76,7 +76,7 @@ describe('RedisAdapter', () => { describe('hasKey', () => { it('awaits connection and calls client.exists with the key', async () => { - client.exists.returns(1) + client.exists.resolves(1) const result = await adapter.hasKey('test-key') @@ -85,7 +85,7 @@ describe('RedisAdapter', () => { }) it('returns false when key does not exist', async () => { - client.exists.returns(0) + client.exists.resolves(0) const result = await adapter.hasKey('missing-key')