The Redis Driver is a production-ready implementation that uses Redis for actor state persistence, coordination, and communication. It supports distributed actor systems and enables horizontal scaling across multiple instances.

You rarely need to manually configure drivers. The platform package you’re using will configure the appropriate drivers for you. See the documentation for your platform for details.

ActorCore requires AOF (Append Only File) persistence to be enabled on your Redis server. See the Redis Persistence Documentation for setup instructions.

Compatibility

PlatformsTopologies
Node.js Standalone
Bun Coordinate
Cloudflare Workers Partition
Rivet

Installation

1

Install the required packages:

npm install @actor-core/redis @actor-core/nodejs ioredis
2

Create a Redis connection and set up your server:

src/index.ts
import { serve } from "@actor-core/nodejs"
import { RedisManagerDriver } from "@actor-core/redis/manager";
import { RedisActorDriver } from "@actor-core/redis/actor";
import { RedisCoordinateDriver } from "@actor-core/redis/coordinate";
import Redis from "ioredis";

// Create a Redis connection
const redis = new Redis();

serve(app, {
  topology: "coordinate", // Can be "standalone" or "coordinate"
  drivers: {
    manager: new RedisManagerDriver(redis),
    actor: new RedisActorDriver(redis),
    coordinate: new RedisCoordinateDriver(redis),
  },
});
3

Start your server:

npm run dev

Redis Configuration

The Redis driver requires an ioredis connection instance when creating the drivers. Custom configuration parameters can be passed like:

import Redis from "ioredis";
import { RedisManagerDriver } from "@actor-core/redis/manager";
import { RedisActorDriver } from "@actor-core/redis/actor";
import { RedisCoordinateDriver } from "@actor-core/redis/coordinate";

// Create a Redis connection
const redis = new Redis({
  host: "localhost",
  port: 6379,
  password: "foobar",
});

// Create the Redis drivers
const managerDriver = new RedisManagerDriver(redis);
const actorDriver = new RedisActorDriver(redis);
const coordinateDriver = new RedisCoordinateDriver(redis);

See the ioredis documentation for more connection configuration options.

Hosted Redis Providers

For production deployments, consider using these managed Redis providers:

Limitations

The Redis driver has several limitations to be aware of:

  • Very Limited Storage: Storage is limited to the available memory of your Redis server
  • Single Region Support: Only supports deployment within a single region, not globally distributed
  • Performance Bottleneck: All operations go through Redis, which can become a bottleneck under high load
  • Single Point of Failure: Redis becomes a single point of failure if not configured with proper failover mechanisms

For multi-region support, built-in redundancy, and unlimited storage capacity, consider using Rivet or Cloudflare Workers instead.