{"id":25561,"library":"express-idempotency-redis-adapter","title":"express-idempotency-redis-adapter","description":"Redis adapter for the express-idempotency middleware, enabling idempotency key storage in Redis. v1.0.8, stable, low update cadence. Key differentiator: integrates seamlessly with express-idempotency middleware and supports both connection config and existing Redis instances, with configurable TTL. Alternatives require custom Redis integration.","status":"active","version":"1.0.8","language":"javascript","source_language":"en","source_url":"https://github.com/alias-rahil/express-idempotency-redis-adapter","tags":["javascript","typescript"],"install":[{"cmd":"npm install express-idempotency-redis-adapter","lang":"bash","label":"npm"},{"cmd":"yarn add express-idempotency-redis-adapter","lang":"bash","label":"yarn"},{"cmd":"pnpm add express-idempotency-redis-adapter","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"peer dependency; this adapter is meant to be used with the express-idempotency middleware","package":"express-idempotency","optional":false},{"reason":"runtime dependency for connecting to Redis","package":"redis","optional":false}],"imports":[{"note":"Package exports a default export; CommonJS require works as shown in docs.","wrong":"const RedisAdapter = require('express-idempotency-redis-adapter')","symbol":"RedisAdapter (default)","correct":"import RedisAdapter from 'express-idempotency-redis-adapter'"},{"note":"Also exported as named export for convenience.","wrong":"","symbol":"RedisAdapter (named)","correct":"import { RedisAdapter } from 'express-idempotency-redis-adapter'"},{"note":"Types included for options interface.","wrong":"","symbol":"types (TypeScript)","correct":"import type { RedisAdapterOptions } from 'express-idempotency-redis-adapter'"}],"quickstart":{"code":"import idempotency from 'express-idempotency';\nimport RedisAdapter from 'express-idempotency-redis-adapter';\nimport express from 'express';\n\nconst app = express();\nconst adapter = new RedisAdapter({\n  connectionConfig: { url: process.env.REDIS_URL ?? 'redis://localhost:6379' },\n  ttl: 3600\n});\n\nawait adapter.connect();\n\napp.use(idempotency({\n  dataAdapter: adapter\n}));\n\napp.listen(3000, () => console.log('Server running'));","lang":"typescript","description":"Shows how to import and use the Redis adapter with the express-idempotency middleware, including connection and TTL configuration."},"warnings":[{"fix":"Pass only one of the two options.","message":"You must provide either connectionConfig or connectionInstance, not both.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Ensure async connect() is awaited before app.use().","message":"The adapter.connect() must be called before using the middleware.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Set ttl to your desired value in seconds.","message":"TTL option is in seconds; default is 86400 (1 day).","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Use connectionInstance with a pre-configured ioredis client if needed.","message":"The adapter does not support Redis Cluster or Sentinel out of the box.","severity":"gotcha","affected_versions":">=1.0.0"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Pass connectionConfig (object with url) or connectionInstance (existing node-redis client).","cause":"Missing either option when instantiating the adapter.","error":"Error: RedisAdapter requires either connectionConfig or connectionInstance"},{"fix":"import RedisAdapter from 'express-idempotency-redis-adapter' (default export).","cause":"Importing default incorrectly (non-function object).","error":"TypeError: adapter.connect is not a function"},{"fix":"Ensure Redis is running, or set REDIS_URL environment variable.","cause":"Redis server not running or wrong host/port.","error":"Error: connect ECONNREFUSED ::1:6379"},{"fix":"Use new RedisAdapter(options) and pass the instance.","cause":"Passing something that is not a RedisAdapter instance.","error":"Error: The dataAdapter provided does not implement the required interface."}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}