Skip to main content

Redis Methods

All Redis methods are instance methods on RedisDataSource.

Supported Types

  • string, number, boolean, object, array, Buffer

Setting Values

await redis.set("key", "value", 1000); // expires in 1s
await redis.set("key", { foo: "bar" }, 5000);

Getting Values

const value = await redis.get<string>("key");
const obj = await redis.get<{ foo: string }>("key");

Buffers

await redis.set("key", Buffer.from("value"), 1000);
const buffer = await redis.getBuffer("key");

Consuming (get and delete)

const value = await redis.consume<string>("key");

Deleting

await redis.delete("key");

Flushing All

await redis.flushAll();

List Operations

await redis.lpush("list", "a", "b");
await redis.rpush("list", "c");
const range = await redis.lrange<string>("list", 0, -1);
const len = await redis.llen("list");
const left = await redis.lpop<string>("list");
const right = await redis.rpop<string>("list");

Hash Operations

await redis.hset("hash", "field", "value");
await redis.hmset("hash", { f1: "v1", f2: "v2" });
const val = await redis.hget<string>("hash", "field");
const all = await redis.hgetall<string>("hash");
const multi = await redis.hmget<string>("hash", "f1", "f2");
const exists = await redis.hexists("hash", "field");
const keys = await redis.hkeys("hash");
const len = await redis.hlen("hash");
await redis.hdel("hash", "field");

Set Operations

await redis.sadd("set", "a", "b", "c");
const members = await redis.smembers<string>("set");
await redis.srem("set", "a");
const isMember = await redis.sismember("set", "b");
const card = await redis.scard("set");
const inter = await redis.sinter<string>("set1", "set2");
const union = await redis.sunion<string>("set1", "set2");
const diff = await redis.sdiff<string>("set1", "set2");

Sorted Set Operations

await redis.zadd("zset", 1, "a");
await redis.zadd("zset", [[2, "b"], [3, "c"]]);
const range = await redis.zrange<string>("zset", 0, -1);
const rev = await redis.zrevrange<string>("zset", 0, -1);
const score = await redis.zscore("zset", "a");
const card = await redis.zcard("zset");
await redis.zrem("zset", "a");

Key Operations

const exists = await redis.exists("key");
await redis.expire("key", 60);
await redis.expireat("key", Math.floor(Date.now() / 1000) + 60);
await redis.pexpire("key", 60000);
const ttl = await redis.ttl("key");
const pttl = await redis.pttl("key");
await redis.persist("key");
const keys = await redis.keys("prefix:*");
await redis.rename("old", "new");
const type = await redis.type("key");

Pub/Sub Operations

// Subscribe
await redis.subscribe(["channel1", "channel2"], (channel, message) => {
console.log(`${channel}: ${message}`);
});

// Pattern subscribe
await redis.psubscribe(["news:*"], (pattern, message) => {
console.log(`${pattern}: ${message}`);
});

// Publish (from a separate instance)
await publisher.publish("channel1", "hello");

// Unsubscribe
await redis.unsubscribe("channel1");
await redis.punsubscribe("news:*");

Best Practices

  • Use expiry for cache keys.
  • Use type parameters for type safety.
  • Use separate instances for pub/sub subscribers vs publishers.

Next: Advanced Utilities