{"id":44823,"library":"eip-redis","title":"eip-redis","description":"Redis adapter for the eip (Enterprise Integration Patterns) module, providing a PubSub and Queue implementation on top of Redis for distributed event aggregation and resource throttling across multiple nodes. Current stable version is 1.7.1. The package is mature with a stable API, designed specifically for use with the eip framework version ^1.8.0 and redis client ^2.0.0. It enables cross-node pub/sub patterns needed for rate limiting and circuit breaking in distributed Node.js applications. Differentiators include tight integration with eip patterns and explicit Redis connection management. Release cadence is low; last update was years ago.","status":"maintenance","version":"1.7.1","language":"javascript","source_language":"en","source_url":"https://github.com/Workable/eip-redis","tags":["javascript","typescript"],"install":[{"cmd":"npm install eip-redis","lang":"bash","label":"npm"},{"cmd":"yarn add eip-redis","lang":"bash","label":"yarn"},{"cmd":"pnpm add eip-redis","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"peer dependency required for core eip route and throttle functionality","package":"eip","optional":false},{"reason":"peer dependency required for Redis client connections","package":"redis","optional":false}],"imports":[{"note":"This package does not ship ESM; only CommonJS is supported. Named import via destructuring from require.","wrong":"import { PubSub } from 'eip-redis';","symbol":"PubSub","correct":"const { PubSub } = require('eip-redis');"},{"note":"Also valid, but destructuring is standard. Accessing via default export is incorrect as there is no default export.","wrong":"const Queue = require('eip-redis').Queue;","symbol":"Queue","correct":"const { Queue } = require('eip-redis');"},{"note":"No default export; must use named imports or require the whole module.","wrong":"import eipRedis from 'eip-redis';","symbol":"default","correct":"const eipRedis = require('eip-redis'); const { PubSub } = eipRedis;"}],"quickstart":{"code":"const eip = require('eip');\nconst redis = require('redis');\nconst { PubSub, Queue } = require('eip-redis');\nconst { Timer } = require('eip-timer');\n\nconst redisPub = redis.createClient();\nconst redisSub = redis.createClient({ return_buffers: true });\n\nconst pubSub = new PubSub(1, 1000, redisPub, redisSub, 'namespace');\nconst queue = new Queue(redisPub, 'namespace');\nconst resource = x => x;\n\nconst throttler = new eip.Route().throttleResource({ pubSub, queue, resource, timer });","lang":"javascript","description":"Shows how to initialize PubSub and Queue from eip-redis with Redis clients and use them with eip throttle."},"warnings":[{"fix":"Upgrade Node.js to version 6.0.0 or later, or use an older version of the package if available.","message":"Requires Node.js version >= 6.0.0; earlier versions are not supported.","severity":"breaking","affected_versions":"<1.0.0"},{"fix":"Use `return_buffer: true` when creating the subscriber client.","message":"The redis client option `return_buffers` is deprecated in redis v3+. Use `return_buffer` (singular) instead.","severity":"deprecated","affected_versions":">=1.7.0"},{"fix":"Always provide a unique namespace string to avoid event collisions.","message":"PubSub constructor expects (eventsPerPeriod, periodInMS, redisPub, redisSub, namespace) but namespace is optional; omitting it can cause collisions across different applications.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Install and require `eip-timer` and pass it as `timer` option.","message":"The `Timer` import from `eip-timer` is required for throttle; not providing it causes a runtime error.","severity":"breaking","affected_versions":">=1.0.0"},{"fix":"Use `PubSub` instead of `RedisPubSub`.","message":"The old `require('eip-redis').RedisPubSub` is deprecated in favor of `PubSub`.","severity":"deprecated","affected_versions":"<1.0.0"}],"env_vars":null,"search_vec":"'1.7.1':37 '1.8.0':55 '2.0.0':59 'across':30 'adapt':5 'aggreg':26 'ago':98 'api':45 'applic':77 'break':73 'cadenc':91 'circuit':72 'client':58 'connect':88 'cross':63 'cross-nod':62 'current':33 'design':46 'differenti':78 'distribut':24,75 'eip':2,8,52,83 'eip-redi':1 'enabl':61 'enterpris':9 'event':25 'explicit':86 'framework':53 'implement':18 'includ':79 'integr':10,81 'javascript':99 'last':94 'limit':70 'low':93 'manag':89 'matur':41 'modul':12 'multipl':31 'need':67 'node':32,64 'node.js':76 'packag':39 'pattern':11,66,84 'provid':13 'pub/sub':65 'pubsub':15 'queue':17 'rate':69 'redi':3,4,22,57,87 'releas':90 'resourc':28 'specif':47 'stabl':34,44 'throttl':29 'tight':80 'top':20 'typescript':100 'updat':95 'use':49 'version':35,54 'year':97","created_at":"2026-06-07T12:52:00.690475+00:00","updated_at":"2026-06-07T12:52:00.690475+00:00","problems":[{"fix":"Ensure eip version ^1.8.0 is installed: `npm install eip@^1.8.0`","cause":"Using an incompatible version of eip peer dependency (e.g., eip v2+ changed API).","error":"TypeError: eip.Route is not a constructor"},{"fix":"Start Redis server: `redis-server` or specify correct host/port in `redis.createClient()` options.","cause":"Redis server not running or unavailable.","error":"Error: Redis connection to 127.0.0.1:6379 failed - connect ECONNREFUSED"},{"fix":"Create redisSub with `redis.createClient({ return_buffers: true })`","cause":"Subscriber Redis client not created with `return_buffers: true`.","error":"TypeError: Cannot read property 'subscribe' of undefined"},{"fix":"Use `const { PubSub } = require('eip-redis');`","cause":"Incorrect import; possibly trying to import as default or using wrong module.","error":"TypeError: PubSub is not a constructor"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/Workable/eip-redis#readme","github":"https://github.com/Workable/eip-redis","docs":null,"changelog":null,"pypi":null,"npm":"eip-redis","openapi_spec":null,"status_page":null,"smithery":null,"categories":["messaging"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-07","next_check":"2026-09-05","install_tag":null}}