diff --git a/inventory_provider/router_interfaces.py b/inventory_provider/router_interfaces.py
index 84127bbfecb4be844b68aab9342e3385e0b96678..c8d88ee38eee0b7962c28d5206a074a6c3943c7b 100644
--- a/inventory_provider/router_interfaces.py
+++ b/inventory_provider/router_interfaces.py
@@ -3,6 +3,7 @@ import logging
 from multiprocessing import Process, Queue
 
 import click
+import redis
 
 from inventory_provider import constants
 from inventory_provider import snmp
@@ -81,11 +82,16 @@ def load_network_details(params):
         p.start()
         processes.append({"router": r, "process": p, "queue": q})
 
+
+    r = redis.StrictRedis(
+        host=params["redis"]["hostname"],
+        port=params["redis"]["port"])
+
     result = {}
     for p in processes:
         threading_logger.debug(
             "waiting for get_router_details result: %r" % p["router"])
-        result[p["router"]["hostname"]] = p["queue"].get()
+        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"])
@@ -106,11 +112,17 @@ def _validate_config(ctx, param, value):
     default=open("config.json"),
     callback=_validate_config)
 def cli(params):
-    network_details = load_network_details(params)
+    load_network_details(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()])
+
     filename = "/tmp/router-info.json"
     logging.debug("writing output to: " + filename)
     with open(filename, "w") as f:
-        f.write(json.dumps(network_details))
+        f.write(json.dumps(result))
 
 
 if __name__ == "__main__":