This package provides a way to use Upstash as a KV adapter with Payload.
pnpm add @rubixstudios/payload-upstashimport { upstashKVAdapter } from '@rubixstudios/payload-upstash'
export default buildConfig({
collections: [Media],
kv: upstashKVAdapter({
// Upstash connection URL. Defaults to process.env.UPSTASH_URL
url: process.env.UPSTASH_URL!,
token: process.env.UPSTASH_TOKEN!,
// Optional prefix for Upstash Redis keys to isolate the store. Defaults to 'payload-kv:'
keyPrefix: 'kv-storage:',
// Optional TTL configuration for automatic expiration by key prefix
ttl: [
{ prefix: 'session:', ttl: 3600 },
{ prefix: 'cache:', ttl: 300 },
{ prefix: 'temp:', ttl: 60 },
],
}),
})Then you can access the KV storage using payload.kv:
await payload.kv.set('key', { value: 1 })
const data = await payload.kv.get('key')
payload.logger.info(data)