-
Notifications
You must be signed in to change notification settings - Fork 3.9k
Closed
Labels
bugSomething isn't workingSomething isn't workingredisSomething to do with `redis` in the "bun" moduleSomething to do with `redis` in the "bun" module
Description
What version of Bun is running?
1.2.9
What platform is your computer?
Linux 6.15.0-rc1-1-cachyos-rc x86_64 Arch Linux
What steps can reproduce the bug?
Using the redis-cli, go-redis, node-redis and probably more libraries, when given a Redis connection URI, it is supported to pass the number of the DB the client wants to use at the end of the URI like so:
redis[s]://[[username][:password]@][host][:port][/db-number]
This behaviour does not work in Buns RedisClient.
Example Code:
for (let i = 0; i < 16; i++) {
const client = new Bun.RedisClient(`redis://localhost:6379/${i}`);
await client.set("key", JSON.stringify({ value: "Hello, Redis!" }));
const value = await client.get("key");
console.log(`DB number in URI: ${i}`, value);
}Output:
DB number in URI: 0 {"value":"Hello, Redis!"}
DB number in URI: 1 OK
DB number in URI: 2 OK
DB number in URI: 3 OK
DB number in URI: 4 OK
DB number in URI: 5 OK
DB number in URI: 6 OK
DB number in URI: 7 OK
DB number in URI: 8 OK
DB number in URI: 9 OK
DB number in URI: 10 OK
DB number in URI: 11 OK
DB number in URI: 12 OK
DB number in URI: 13 OK
DB number in URI: 14 OK
DB number in URI: 15 OKWhat is the expected behavior?
Expected behavior would be to get the correct result for the key, no matter which DB number was passed in the connection URI.
What do you see instead?
Any DB number other than 0 in the connection URI just returns "OK" for any key.
Additional information
Using the SELECT command after initializing the RedisClient works.
for (let i = 0; i < 16; i++) {
const client = new Bun.RedisClient(`redis://localhost:6379/`);
await client.send(`select`, [i.toString()]);
await client.set("key", JSON.stringify({ value: "Hello, Redis!" }));
const value = await client.get("key");
console.log(`DB number in select: ${i}`, value);
}DB number in select: 0 {"value":"Hello, Redis!"}
DB number in select: 1 {"value":"Hello, Redis!"}
DB number in select: 2 {"value":"Hello, Redis!"}
DB number in select: 3 {"value":"Hello, Redis!"}
DB number in select: 4 {"value":"Hello, Redis!"}
DB number in select: 5 {"value":"Hello, Redis!"}
DB number in select: 6 {"value":"Hello, Redis!"}
DB number in select: 7 {"value":"Hello, Redis!"}
DB number in select: 8 {"value":"Hello, Redis!"}
DB number in select: 9 {"value":"Hello, Redis!"}
DB number in select: 10 {"value":"Hello, Redis!"}
DB number in select: 11 {"value":"Hello, Redis!"}
DB number in select: 12 {"value":"Hello, Redis!"}
DB number in select: 13 {"value":"Hello, Redis!"}
DB number in select: 14 {"value":"Hello, Redis!"}
DB number in select: 15 {"value":"Hello, Redis!"}Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't workingredisSomething to do with `redis` in the "bun" moduleSomething to do with `redis` in the "bun" module