diff --git a/packages/client/lib/client/index.spec.ts b/packages/client/lib/client/index.spec.ts index 0aed98450d..9c33f2ce84 100644 --- a/packages/client/lib/client/index.spec.ts +++ b/packages/client/lib/client/index.spec.ts @@ -167,6 +167,14 @@ describe('Client', () => { } ); }); + + it('DB in URL should be parsed', async () => { + const client = RedisClient.create({ + url: 'redis://user:secret@localhost:6379/5' + }); + + assert.equal(client?.options?.database, 5); + }) }); describe('parseOptions', () => { diff --git a/packages/client/lib/client/index.ts b/packages/client/lib/client/index.ts index ccad872e22..1a27ea8898 100644 --- a/packages/client/lib/client/index.ts +++ b/packages/client/lib/client/index.ts @@ -496,8 +496,14 @@ export default class RedisClient< this._commandOptions = options.commandOptions; } - if (options) { - return RedisClient.parseOptions(options); + if (options?.url) { + const parsedOptions = RedisClient.parseOptions(options); + + if (parsedOptions?.database) { + this._self.#selectedDB = parsedOptions.database; + } + + return parsedOptions; } return options;