From 0493631d22942e640a0c9c2a885276f696b0cee8 Mon Sep 17 00:00:00 2001 From: Apher Date: Thu, 16 Jul 2026 20:48:58 +0000 Subject: [PATCH] Create redis module --- redis/config/index.js | 4 ++++ redis/index.js | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 redis/config/index.js create mode 100644 redis/index.js diff --git a/redis/config/index.js b/redis/config/index.js new file mode 100644 index 0000000..627c270 --- /dev/null +++ b/redis/config/index.js @@ -0,0 +1,4 @@ +module.exports = { + REDIS_HOST: process.env.REDIS_HOST, + REDIS_PORT: process.env.REDIS_PORT +} diff --git a/redis/index.js b/redis/index.js new file mode 100644 index 0000000..4c2c4e2 --- /dev/null +++ b/redis/index.js @@ -0,0 +1,38 @@ +const config = require('./config'); + +const Redis = require('redis'); +const redis = {}; + +redis.client = Redis.createClient({ + url: `redis://default@${config.REDIS_HOST}:${config.REDIS_PORT}` +}); + +redis.connect = async () => { + await redis.client.connect().catch(console.error); +} + +redis.quit = async () => { + await redis.client.quit(); +} + +redis.ensureGroup = async (stream, group) => { + await redis.connect(); + + try { + await redis.client.xGroupCreate(stream, group, "0", {MKSTREAM: true}); + + console.log(`Created consumer group: ${group} (${stream})`); + } catch (err) { + if (err) { + if (err.message.includes('BUSYGROUP')) { + console.log(`Consumer group already exists: ${group} (${stream})`); + } else { + console.error(err); + } + } + } +} + +module.exports = { + redis +} \ No newline at end of file