UNPKG

p3x-redis-ui-server

Version:

🏍️ P3X Redis UI server — Socket.IO backend for the dual Angular + React frontend with AI queries, 54 languages, and auto data decompression

2 lines (1 loc) 1.86 kB
export default async e=>{const{socket:t}=e;try{const s=t.p3xrs.ioredis,[a,n]=await Promise.all([s.info(),s.slowlog("GET",10)]),r={};let o="";for(const e of a.split("\n")){const t=e.trim();if(!t||t.startsWith("#")){t.startsWith("# ")&&(o=t.slice(2).toLowerCase(),r[o]={});continue}const s=t.indexOf(":");if(s>0){const e=t.slice(0,s),a=t.slice(s+1);o&&(r[o][e]=a)}}const p=r.memory||{},i=r.stats||{},m=r.clients||{},_=r.server||{},u=r.keyspace||{},c=parseInt(i.keyspace_hits)||0,d=parseInt(i.keyspace_misses)||0,l=c+d>0?(c/(c+d)*100).toFixed(1):"0.0",y={timestamp:Date.now(),server:{version:_.redis_version,uptime:parseInt(_.uptime_in_seconds)||0,mode:_.redis_mode||"standalone"},memory:{used:parseInt(p.used_memory)||0,usedHuman:p.used_memory_human||"0B",rss:parseInt(p.used_memory_rss)||0,rssHuman:p.used_memory_rss_human||"0B",peak:parseInt(p.used_memory_peak)||0,peakHuman:p.used_memory_peak_human||"0B",fragRatio:parseFloat(p.mem_fragmentation_ratio)||0},stats:{opsPerSec:parseInt(i.instantaneous_ops_per_sec)||0,totalCommands:parseInt(i.total_commands_processed)||0,hits:c,misses:d,hitRate:parseFloat(l),inputKbps:parseFloat(i.instantaneous_input_kbps)||0,outputKbps:parseFloat(i.instantaneous_output_kbps)||0,totalNetInput:parseInt(i.total_net_input_bytes)||0,totalNetOutput:parseInt(i.total_net_output_bytes)||0,expiredKeys:parseInt(i.expired_keys)||0,evictedKeys:parseInt(i.evicted_keys)||0},clients:{connected:parseInt(m.connected_clients)||0,blocked:parseInt(m.blocked_clients)||0,maxInput:parseInt(m.client_recent_max_input_buffer)||0,maxOutput:parseInt(m.client_recent_max_output_buffer)||0},keyspace:u,slowlog:n.map(e=>({id:e[0],timestamp:e[1],duration:e[2],command:Array.isArray(e[3])?e[3].join(" "):String(e[3])}))};t.emit(e.responseEvent,{status:"ok",data:y})}catch(s){console.error(s),t.emit(e.responseEvent,{status:"error",error:s.message})}};