RuntimePackage ManagerBundlerTest RunnerLinterFormatterGuidesReferenceBlogFeedback

Bun Redis with Upstash

Upstash is a fully managed Redis database as a service. It works with the Redis® API, so you can connect with Bun's native Redis client.


  1. Create a new project

    Create a new project with bun init:

    terminal
    bun init bun-upstash-redis
    cd bun-upstash-redis
    
  2. Create an Upstash Redis database

    Go to the Upstash dashboard and create a new Redis database. After completing the getting started guide, you'll see your database page with connection information.

    The database page displays two connection methods: HTTP and TLS. For Bun's Redis client, you need the TLS connection details; the URL starts with rediss://.

    Upstash Redis database page

  3. Connect using Bun's Redis client

    Set the REDIS_URL environment variable in your .env file using the Redis endpoint (not the REST URL):

    .env
    REDIS_URL=rediss://********@********.upstash.io:6379
    

    Bun's Redis client reads connection information from REDIS_URL by default:

    index.ts
    import { redis } from "bun";
    
    // Reads from process.env.REDIS_URL automatically
    await redis.set("counter", "0"); // [!code ++]
    

    Alternatively, create a custom client with RedisClient:

    index.ts
    import { RedisClient } from "bun";
    
    const redis = new RedisClient(process.env.REDIS_URL); // [!code ++]
    
  4. Use the Redis client

    Use the Redis client to read and write keys in your Upstash database:

    index.ts
    import { redis } from "bun";
    
    // Get a value
    let counter = await redis.get("counter");
    
    // Set a value if it doesn't exist
    if (!counter) {
    	await redis.set("counter", "0");
    }
    
    // Increment the counter
    await redis.incr("counter");
    
    // Get the updated value
    counter = await redis.get("counter");
    console.log(counter);
    
    Text
    1
    

    The Redis client handles connections automatically. You don't need to connect or disconnect manually for basic operations.