Fast, lightweight Redis client built upon the Web Streams API.
import { RedisClient } from "@iuioiua/redis";
import { assertEquals } from "@std/assert/equals";
using redisConn = await Deno.connect({ port: 6379 });
const redisClient = new RedisClient(redisConn);
const reply1 = await redisClient.sendCommand(["SET", "hello", "world"]);
assertEquals(reply1, "OK");
const reply2 = await redisClient.sendCommand(["GET", "hello"]);
assertEquals(reply2, "world");- Capable of handling 1000s of requests per second.
- More than 12x smaller than the next major Redis client in Deno.
- Supports RESPv2, RESP3, raw data, pipelining, pub/sub, transactions and Lua scripts.
- Compatible with all major JavaScript runtimes including Bun, Cloudflare Workers, Deno, Node.js and the browser!
- Cleanly written to be easily understood and debugged.
- Compatible with timeouts and retries.
- Encourages the use of actual Redis commands without intermediate abstractions, resulting in fewer moving parts.
This package currently doesn't correctly read replies that contain CRLF (\r\n)
within the message. For example, if a bulk string contains a CRLF, it'll only
return the message, up to that CLRF. The simple workaround for this is to use LF
(\n) for delimiting newlines, instead of CRLF.
If this issue affects you, please open a new issue. Otherwise, this issue is a "won't fix".
Like Italian cooking, the design of this package is defined by what it doesn't do rather than what it does do, and relies upon high-quality building blocks. It doesn't extend the functionality of a TCP connection. It doesn't implement a method for each Redis command, of which there are hundreds. Instead, the Redis client consumes a TCP connection, lets the user write Redis commands, and returns the parsed result according to the RESP data type. The result is a design with fewer moving parts, fewer bugs, less maintenance, and a smaller footprint than other JavaScript implementations of Redis clients.
| Module | Size (KB) | Dependencies |
|---|---|---|
| jsr:@iuioiua/redis | 20.03 | 0 |
| jsr:@db/redis | 214.31 | 34 |
| npm:ioredis | 898.03 | 10 |
| npm:redis | 968.17 | 9 |
Note: Results were produced using
deno info <module>on May 28, 2025.