Мой файл cacheService.js -
const Aerospike = require('aerospike');
const AerospikeConfig = require("../config/aerospike");
const hash = require('object-hash');
const NAMESPACE = AerospikeConfig.NAMESPACE;
const SET_NAME = AerospikeConfig.SET_NAME;
const CONNECTION_CONFIG = AerospikeConfig.CONNECTION_CONFIG;
const logger = require('./logger')(__filename);
const META = { ttl: AerospikeConfig.DEFAULT_TTL }
let client;
function connect() {
Aerospike.connect(CONNECTION_CONFIG)
.then(cacheClient => {
client = cacheClient;
logger.info(`[connect] Aerospike connected successfully`);
}).catch(function(err) {
logger.error(`[connect] Unable to create Aerospike Client, Error: ${err}`);
});
}
// Write a record
function write(key, value) {
return new Promise((resolve, reject) => {
client.put(new Aerospike.Key(NAMESPACE, SET_NAME, hash(key)), value, META, (error) => {
if (error) {
logger.error(`[write] Error while writing to cache - ${error}`);
return reject(error);
}
else {
logger.info('[write] Data written successfully');
return resolve(200);
}
});
});
}
// Read a record
function read(key) {
return new Promise((resolve, reject) => {
client.get(new Aerospike.Key(NAMESPACE, SET_NAME, hash(key)), (error, record) => {
if (error) {
logger.info('[read] Record does not exist in cache');
return reject(error);
}
else {
logger.info('[read] Record found in cache');
return resolve(record.bins);
}
});
});
}
module.exports = {
connect: connect,
write: write,
read: read
}
Как мне переписать его так, чтобы перед каждым чтением и записью он проверял, подключен ли клиент, а если нет, то подключается, а затем выполняет дальнейшую операцию?
В настоящее время, когда я перезапускаю аэроспайк, операции чтения и записи не выполняются, и мне приходится перезапускать сервис снова.Мне нужно записать его так, чтобы он снова подключался, не прерывая чтение и запись.