diff --git a/inventory_provider/router_interfaces.py b/inventory_provider/router_interfaces.py
index c8d88ee38eee0b7962c28d5206a074a6c3943c7b..95a09be5492c59710b33c6377bf50a951dd26839 100644
--- a/inventory_provider/router_interfaces.py
+++ b/inventory_provider/router_interfaces.py
@@ -25,7 +25,7 @@ def ssh_exec_commands_q(hostname, ssh_params, commands, q):
     threading_logger.debug("[<<EXIT] exec_router_commands_q: %r" % hostname)
 
 
-def get_router_details(router, params, q):
+def get_router_details(router, params):
 
     threading_logger = logging.getLogger(constants.THREADING_LOGGER_NAME)
 
@@ -53,21 +53,26 @@ def get_router_details(router, params, q):
     command_output = commands_proc_queue.get()
     assert len(command_output) == len(commands)
 
-    result = {}
+    r = redis.StrictRedis(
+        host=params["redis"]["hostname"],
+        port=params["redis"]["port"])
     for c, o in zip(commands, command_output):
         if c["key"]:
-            result[c["key"]] = c["parser"](o)
-
+            r.hset(
+                name=router["hostname"],
+                key=c["key"],
+                value=json.dumps(c["parser"](o)))
     commands_proc.join()
     threading_logger.debug("... got commands result & joined: %r" % router)
 
     threading_logger.debug("waiting for snmp ifc results: %r" % router)
-    result["snmp-interfaces"] = snmpifc_proc_queue.get()
+    r.hset(
+        name=router["hostname"],
+        key="snmp-interfaces",
+        value=json.dumps(snmpifc_proc_queue.get()))
     snmpifc_proc.join()
     threading_logger.debug("... got snmp ifc result & joined: %r" % router)
 
-    q.put(result)
-
     threading_logger.debug("[<<EXIT]get_router_details: %r" % router)
 
 
@@ -77,21 +82,14 @@ def load_network_details(params):
 
     processes = []
     for r in params["routers"]:
-        q = Queue()
-        p = Process(target=get_router_details, args=(r, params, q))
+        p = Process(target=get_router_details, args=(r, params))
         p.start()
-        processes.append({"router": r, "process": p, "queue": q})
-
-
-    r = redis.StrictRedis(
-        host=params["redis"]["hostname"],
-        port=params["redis"]["port"])
+        processes.append({"router": r, "process": p})
 
     result = {}
     for p in processes:
         threading_logger.debug(
             "waiting for get_router_details result: %r" % p["router"])
-        r.set(p["router"]["hostname"], json.dumps(p["queue"].get()))
         p["process"].join()
         threading_logger.debug(
             "got result and joined get_router_details proc: %r" % p["router"])
@@ -117,7 +115,15 @@ def cli(params):
     r = redis.StrictRedis(
         host=params["redis"]["hostname"],
         port=params["redis"]["port"])
-    result = dict([(k.decode("utf-8"), json.loads(r.get(k))) for k in r.keys()])
+
+    result = {}
+    for hostname in r.keys():
+        host = {}
+        for key in r.hkeys(name=hostname):
+            host[key.decode("utf-8")] = json.loads(
+                r.hget(hostname, key).decode("utf-8")
+            )
+        result[hostname.decode("utf-8")] = host
 
     filename = "/tmp/router-info.json"
     logging.debug("writing output to: " + filename)