Skip to main content

@auth/upstash-redis-adapter

Official Upstash Redis adapter for Auth.js / NextAuth.js.

Installation​

npm install @upstash/redis @auth/upstash-redis-adapter

UpstashRedisAdapter()​

UpstashRedisAdapter(client, options = {}): Adapter

Setup​

Configure Auth.js to use the Upstash Redis Adapter:

pages/api/auth/[...nextauth].js
import NextAuth from "next-auth"
import GoogleProvider from "next-auth/providers/google"
import { UpstashRedisAdapter } from "@auth/upstash-redis-adapter"
import upstashRedisClient from "@upstash/redis"

const redis = upstashRedisClient(
process.env.UPSTASH_REDIS_URL,
process.env.UPSTASH_REDIS_TOKEN
)

export default NextAuth({
adapter: UpstashRedisAdapter(redis),
providers: [
GoogleProvider({
clientId: process.env.GOOGLE_CLIENT_ID,
clientSecret: process.env.GOOGLE_CLIENT_SECRET
})
]
})

Advanced usage​

Using multiple apps with a single Upstash Redis instance​

The Upstash free-tier allows for only one Redis instance. If you have multiple Auth.js connected apps using this instance, you need different key prefixes for every app.

You can change the prefixes by passing an options object as the second argument to the adapter factory function.

The default values for this object are:

const defaultOptions = {
baseKeyPrefix: "",
accountKeyPrefix: "user:account:",
accountByUserIdPrefix: "user:account:by-user-id:",
emailKeyPrefix: "user:email:",
sessionKeyPrefix: "user:session:",
sessionByUserIdKeyPrefix: "user:session:by-user-id:",
userKeyPrefix: "user:",
verificationTokenKeyPrefix: "user:token:"
}

Usually changing the baseKeyPrefix should be enough for this scenario, but for more custom setups, you can also change the prefixes of every single key.

Example:

export default NextAuth({
...
adapter: UpstashRedisAdapter(redis, {baseKeyPrefix: "app2:"})
...
})

Parameters​

ParameterType
clientRedis
optionsUpstashRedisAdapterOptions

Returns​

Adapter


UpstashRedisAdapterOptions​

This is the interface of the Upstash Redis adapter options.

Properties​

accountByUserIdPrefix​

optional accountByUserIdPrefix: string

The prefix for the accountByUserId key


accountKeyPrefix​

optional accountKeyPrefix: string

The prefix for the account key


baseKeyPrefix​

optional baseKeyPrefix: string

The base prefix for your keys


emailKeyPrefix​

optional emailKeyPrefix: string

The prefix for the emailKey key


sessionByUserIdKeyPrefix​

optional sessionByUserIdKeyPrefix: string

The prefix for the sessionByUserId key


sessionKeyPrefix​

optional sessionKeyPrefix: string

The prefix for the sessionKey key


userKeyPrefix​

optional userKeyPrefix: string

The prefix for the user key


verificationTokenKeyPrefix​

optional verificationTokenKeyPrefix: string

The prefix for the verificationToken key