Removed etc and added better redis support.
This commit is contained in:
parent
4653430c0f
commit
950d47bcfa
@ -15,10 +15,6 @@
|
||||
"requiredRoles": []
|
||||
},
|
||||
"database": {
|
||||
"etcd": {
|
||||
"host": "localhost",
|
||||
"port": 2379
|
||||
},
|
||||
"mongo": {
|
||||
"url": "mongodb://127.0.0.1:27017/farmcontrol"
|
||||
},
|
||||
@ -42,10 +38,6 @@
|
||||
"requiredRoles": []
|
||||
},
|
||||
"database": {
|
||||
"etcd": {
|
||||
"host": "localhost",
|
||||
"port": 2379
|
||||
},
|
||||
"mongo": {
|
||||
"url": "mongodb://farmcontrol.tombutcher.local:27017/farmcontrol"
|
||||
}
|
||||
|
||||
@ -25,7 +25,6 @@
|
||||
"dayjs": "^1.11.19",
|
||||
"dotenv": "^17.2.3",
|
||||
"ejs": "^3.1.10",
|
||||
"etcd3": "^1.1.2",
|
||||
"express": "^5.1.0",
|
||||
"he": "^1.2.0",
|
||||
"jsonwebtoken": "^9.0.2",
|
||||
@ -38,7 +37,7 @@
|
||||
"object-hash": "^3.0.0",
|
||||
"posthtml": "^0.16.7",
|
||||
"puppeteer": "^24.31.0",
|
||||
"redis": "^4.6.14",
|
||||
"redis": "^5.10.0",
|
||||
"socket.io": "^4.8.1",
|
||||
"socket.io-adapter-mongo": "^2.0.5",
|
||||
"socketio-jwt": "^4.6.2"
|
||||
|
||||
@ -28,11 +28,20 @@ class RedisServer {
|
||||
|
||||
async connect() {
|
||||
if (this.connected) return;
|
||||
logger.info('Connecting to Redis...');
|
||||
await this.client.connect();
|
||||
this.connected = true;
|
||||
logger.info('Connected to Redis');
|
||||
}
|
||||
|
||||
async disconnect() {
|
||||
if (!this.connected) return;
|
||||
logger.info('Disconnecting from Redis...');
|
||||
await this.client.quit();
|
||||
this.connected = false;
|
||||
logger.info('Disconnected from Redis');
|
||||
}
|
||||
|
||||
async setKey(key, value, ttlSeconds) {
|
||||
await this.connect();
|
||||
const payload = typeof value === 'string' ? value : JSON.stringify(value);
|
||||
@ -58,6 +67,24 @@ class RedisServer {
|
||||
await this.connect();
|
||||
await this.client.del(key);
|
||||
}
|
||||
|
||||
async getKeysByPattern(pattern) {
|
||||
await this.connect();
|
||||
const keys = [];
|
||||
let cursor = '0';
|
||||
logger.trace('Getting keys by pattern:', pattern);
|
||||
do {
|
||||
logger.trace('Scanning keys:', cursor);
|
||||
const result = await this.client.scan(cursor, {
|
||||
MATCH: pattern,
|
||||
COUNT: 100
|
||||
});
|
||||
cursor = result.cursor;
|
||||
logger.trace('Result:', result);
|
||||
keys.push(...result.keys);
|
||||
} while (cursor !== '0');
|
||||
return keys;
|
||||
}
|
||||
}
|
||||
|
||||
const redisServer = new RedisServer();
|
||||
|
||||
28
src/index.js
28
src/index.js
@ -1,7 +1,7 @@
|
||||
import { loadConfig } from './config.js';
|
||||
import { SocketManager } from './socket/socketmanager.js';
|
||||
import { etcdServer } from './database/etcd.js';
|
||||
import { natsServer } from './database/nats.js';
|
||||
import { redisServer } from './database/redis.js';
|
||||
import express from 'express';
|
||||
import log4js from 'log4js';
|
||||
import http from 'http';
|
||||
@ -21,19 +21,9 @@ import { mongoServer } from './database/mongo.js';
|
||||
|
||||
new SocketManager(server);
|
||||
|
||||
// Connect to Etcd (await)
|
||||
try {
|
||||
//await etcdServer.connect();
|
||||
// logger.info('Connected to Etcd');
|
||||
} catch (err) {
|
||||
logger.error('Failed to connect to Etcd:', err);
|
||||
throw err;
|
||||
}
|
||||
|
||||
// Connect to NATS (await)
|
||||
try {
|
||||
await natsServer.connect();
|
||||
logger.info('Connected to NATS');
|
||||
} catch (err) {
|
||||
logger.error('Failed to connect to NATS:', err);
|
||||
throw err;
|
||||
@ -42,12 +32,19 @@ import { mongoServer } from './database/mongo.js';
|
||||
// Connect to Mongo DB (await)
|
||||
try {
|
||||
await mongoServer.connect();
|
||||
logger.info('Connected to Mongo DB');
|
||||
} catch (err) {
|
||||
logger.error('Failed to connect to Mongo DB:', err);
|
||||
throw err;
|
||||
}
|
||||
|
||||
// Connect to Redis (await)
|
||||
try {
|
||||
await redisServer.connect();
|
||||
} catch (err) {
|
||||
logger.error('Failed to connect to Redis:', err);
|
||||
throw err;
|
||||
}
|
||||
|
||||
// Start HTTP server
|
||||
server.listen(config.server.port, () => {
|
||||
logger.info(`Server listening on port ${config.server.port}`);
|
||||
@ -55,6 +52,11 @@ import { mongoServer } from './database/mongo.js';
|
||||
|
||||
process.on('SIGINT', async () => {
|
||||
logger.info('Shutting down...');
|
||||
await etcdServer.disconnect();
|
||||
await redisServer.disconnect();
|
||||
await mongoServer.disconnect();
|
||||
await natsServer.disconnect();
|
||||
await server.close();
|
||||
logger.info('Shutdown complete');
|
||||
process.exit(0);
|
||||
});
|
||||
})();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user