p3x-redis-ui-server
Version:
🏍️ The p3x-redis-ui-server package motor that is connected to the p3x-redis-ui-material web user interface
110 lines (84 loc) • 2.83 kB
JavaScript
const consolePrefix = 'socket.io key get full'
module.exports = async (options) => {
const {socket, payload} = options;
try {
let redis = socket.p3xrs.ioredis
const key = payload.key;
//const type = payload.type;
const type = await redis.type(key)
//console.info(consolePrefix, payload, type, key)
const viewPipeline = redis.pipeline()
switch (type) {
case 'string':
//viewPipeline.get(key)
viewPipeline.getBuffer(key)
break;
case 'list':
//viewPipeline.lrange(key, 0, -1)
viewPipeline.lrangeBuffer(key, 0, -1)
break;
case 'hash':
//viewPipeline.hgetall(key)
viewPipeline.hgetallBuffer(key)
break;
case 'set':
//viewPipeline.smembers(key)
viewPipeline.smembersBuffer(key)
break;
case 'zset':
//viewPipeline.zrange(key, 0, -1, 'WITHSCORES')
viewPipeline.zrangeBuffer(key, 0, -1, 'WITHSCORES')
break;
case 'stream':
//viewPipeline.xrange(key, '-', '+')
viewPipeline.xrangeBuffer(key, '-', '+')
break;
}
viewPipeline.ttl(key)
viewPipeline.object('encoding', key)
switch (type) {
case 'stream':
viewPipeline.xlen(key)
break;
case 'hash':
viewPipeline.hlen(key)
break;
case 'list':
viewPipeline.llen(key)
break;
case 'set':
viewPipeline.scard(key)
break;
case 'zset':
viewPipeline.zcard(key)
break;
}
const viewPipelineResult = await viewPipeline.exec()
// console.log(viewPipelineResult)
//const value = viewPipelineResult[0][1]
const valueBuffer = viewPipelineResult[0][1]
const ttl = viewPipelineResult[1][1]
const encoding = viewPipelineResult[2][1]
let length
if (type !== 'string') {
length = viewPipelineResult[3][1]
}
const socketResult = {
length: length,
key: key,
status: 'ok',
type: type,
valueBuffer: valueBuffer,
ttl: ttl,
encoding: encoding,
};
// console.warn('socketResult', socketResult)
socket.emit(options.responseEvent, socketResult)
} catch (e) {
console.error(e)
socket.emit(options.responseEvent, {
status: 'error',
error: e.message,
})
}
}