switch redis lib to have a separate client, so that i can use it for k:v cache later

merge-requests/208/head
fatchan 5 years ago
parent 21b4d01d92
commit 3aabb5dbb5
  1. 2
      gulp/res/js/quote.js
  2. 59
      package-lock.json
  3. 1
      package.json
  4. 17
      queue.js
  5. 20
      redis.js
  6. 17
      server.js
  7. 3
      worker.js

@ -5,7 +5,7 @@ window.addEventListener('DOMContentLoaded', (event) => {
var quote = function(e) {
const quoteNum = this.textContent.replace('[Reply]', '').split(' ')[0].trim();
const messageBox = document.getElementById('message')
const messageBox = document.getElementById('message');
messageBox.value += `>>${quoteNum}\n`;
messageBox.scrollTop = messageBox.scrollHeight;
};

59
package-lock.json generated

@ -1210,6 +1210,11 @@
}
}
},
"cluster-key-slot": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz",
"integrity": "sha512-2Nii8p3RwAPiFwsnZvukotvow2rIHM+yQ6ZcBXGHdniadkYGZYiGmkHJIbZPIV9nfv7m/U1IPMVVcAhoWFeklw=="
},
"co": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
@ -1698,6 +1703,11 @@
"resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
"integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
},
"denque": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/denque/-/denque-1.4.1.tgz",
"integrity": "sha512-OfzPuSZKGcgr96rf1oODnfjqBFmr1DVoc/TrItj3Ohe0Ah1C5WX5Baquw/9U9KovnQ88EqmJbD66rKYUQYN1tQ=="
},
"depd": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
@ -3684,6 +3694,45 @@
"resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
"integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY="
},
"ioredis": {
"version": "4.14.0",
"resolved": "https://registry.npmjs.org/ioredis/-/ioredis-4.14.0.tgz",
"integrity": "sha512-vGzyW9QTdGMjaAPUhMj48Z31mIO5qJLzkbsE5dg+orNi7L5Ph035htmkBZNDTDdDk7kp7e9UJUr+alhRuaWp8g==",
"requires": {
"cluster-key-slot": "^1.1.0",
"debug": "^4.1.1",
"denque": "^1.1.0",
"lodash.defaults": "^4.2.0",
"lodash.flatten": "^4.4.0",
"redis-commands": "1.5.0",
"redis-errors": "^1.2.0",
"redis-parser": "^3.0.0",
"standard-as-callback": "^2.0.1"
},
"dependencies": {
"debug": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
"requires": {
"ms": "^2.1.1"
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"redis-parser": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz",
"integrity": "sha1-tm2CjNyv5rS4pCin3vTGvKwxyLQ=",
"requires": {
"redis-errors": "^1.0.0"
}
}
}
},
"ip": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
@ -5666,6 +5715,11 @@
"resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.5.0.tgz",
"integrity": "sha512-6KxamqpZ468MeQC3bkWmCB1fp56XL64D4Kf0zJSwDZbVLLm7KFkoIcHrgRvQ+sk8dnhySs7+yBg94yIkAK7aJg=="
},
"redis-errors": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz",
"integrity": "sha1-62LSrbFeTq9GEMBK/hUpOEJQq60="
},
"redis-parser": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-2.6.0.tgz",
@ -6286,6 +6340,11 @@
"resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
"integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA="
},
"standard-as-callback": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.0.1.tgz",
"integrity": "sha512-NQOxSeB8gOI5WjSaxjBgog2QFw55FV8TkS6Y07BiB3VJ8xNTvUYm0wl0s8ObgQ5NhdpnNfigMIKjgPESzgr4tg=="
},
"static-extend": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",

@ -25,6 +25,7 @@
"gulp-less": "^4.0.1",
"gulp-pug": "^4.0.1",
"gulp-uglify-es": "^1.0.4",
"ioredis": "^4.14.0",
"live-mutex": "^0.1.1066",
"lodash": "^4.17.15",
"lodash.mergewith": "^4.6.2",

@ -1,6 +1,6 @@
const RedisSMQ = require('rsmq')
, configs = require(__dirname+'/configs/main.json')
, rsmq = new RedisSMQ({ host: '127.0.0.1', port: 6379, ns: 'rsmq', password: configs.redisPassword })
, { redisClient } = require(__dirname+'/redis.js')
, rsmq = new RedisSMQ({ ns: 'rsmq', client: redisClient })
, queuename = 'generate'
rsmq.createQueue({ qname: queuename }, (err) => {
@ -17,16 +17,3 @@ module.exports.push = (data) => {
//message enqueued successfully
});
}
/*
//was testing
setInterval(() => {
const data = {
task: 'buildCatalog',
options: {
'board': 'b'
}
}
module.exports.push(data);
}, 500);
*/

@ -0,0 +1,20 @@
'use strict';
const Redis = require('ioredis')
, configs = require(__dirname+'/configs/main.json')
, redisClient = new Redis(configs.redis);
module.exports = {
redisClient, //the redis client instance (So we can share with queues elsewhere)
//cache not used yet, but will need to JSON stringify things that are objects e.g. boards, threads
get: async (key) => {
return client.get(key);
},
set: (key, value) => {
return client.set(key, value);
},
}

@ -24,15 +24,20 @@ const express = require('express')
//connect to mongodb
console.log('CONNECTING TO MONGODB');
await Mongo.connect();
console.log('CONNECTED TO MONGODB');
//use live mutex for locking, will switch to redis later
console.log('CONNECTING TO LMX');
await Mutex.connect();
console.log('CONNECTED TO LMX');
//redis for queue, and in future for caching, so moving the client instance here.
console.log('CONNECTING TO REDIS');
//need an instance of redis client to disconnect cleanly on server close
const { redisClient } = require(__dirname+'/redis.js');
//connecting is not async, so just requiring it here so logging is correct order
// disable useless express header
app.disable('x-powered-by');
// parse forms
// parse forms (is json required?)
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());
//parse cookies
@ -43,7 +48,7 @@ const express = require('express')
secret: configs.sessionSecret,
store: new MongoStore({
db: Mongo.client.db('sessions'),
stringify: false
stringify: false //keep sessions as object in db
}),
resave: false,
saveUninitialized: false,
@ -114,7 +119,9 @@ const express = require('express')
// close database connection
console.info('DISCONNECTING MONGODB');
Mongo.client.close();
console.info('DISCONNECTED MONGODB');
//close redis connection
console.log('DISCONNECTING REDIS')
redisClient.quit();
// now close without error
process.exit(0);
});

@ -6,7 +6,8 @@ process
const RedisSMQ = require('rsmq')
, configs = require(__dirname+'/configs/main.json')
, rsmq = new RedisSMQ({ host: '127.0.0.1', port: 6379, ns: 'rsmq', password: configs.redisPassword })
, { redisClient } = require(__dirname+'/redis.js')
, rsmq = new RedisSMQ({ ns: 'rsmq', client: redisClient })
, queuename = 'generate'
, Mongo = require(__dirname+'/db/db.js')
, Mutex = require(__dirname+'/mutex.js');

Loading…
Cancel
Save