diff --git a/VERSION b/VERSION
index ebf14b4..63a1a1c 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.1.8
+2.1.9
diff --git a/containers/chameleon/Dockerfile.chameleon b/containers/chameleon/Dockerfile.chameleon
index c35782a..482f319 100644
--- a/containers/chameleon/Dockerfile.chameleon
+++ b/containers/chameleon/Dockerfile.chameleon
@@ -13,7 +13,7 @@
 # limitations under the License.
 
 # xosproject/chameleon
-FROM xosproject/xos-base:2.1.8
+FROM xosproject/xos-base:2.1.9
 
 # xos-base already has protoc and dependencies installed
 
diff --git a/containers/xos/Dockerfile.client b/containers/xos/Dockerfile.client
index 6bcb072..9230250 100644
--- a/containers/xos/Dockerfile.client
+++ b/containers/xos/Dockerfile.client
@@ -13,7 +13,7 @@
 # limitations under the License.
 
 # xosproject/xos-client
-FROM xosproject/xos-libraries:2.1.8
+FROM xosproject/xos-libraries:2.1.9
 
 # Install XOS client
 COPY xos/xos_client /tmp/xos_client
diff --git a/containers/xos/Dockerfile.libraries b/containers/xos/Dockerfile.libraries
index b4af5a4..e26a00c 100644
--- a/containers/xos/Dockerfile.libraries
+++ b/containers/xos/Dockerfile.libraries
@@ -12,7 +12,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-FROM xosproject/xos-base:2.1.8
+FROM xosproject/xos-base:2.1.9
 
 # Add libraries
 COPY lib /opt/xos/lib
diff --git a/containers/xos/Dockerfile.synchronizer-base b/containers/xos/Dockerfile.synchronizer-base
index 7594539..7270bea 100644
--- a/containers/xos/Dockerfile.synchronizer-base
+++ b/containers/xos/Dockerfile.synchronizer-base
@@ -13,7 +13,7 @@
 # limitations under the License.
 
 # xosproject/xos-synchronizer-base
-FROM xosproject/xos-client:2.1.8
+FROM xosproject/xos-client:2.1.9
 
 COPY xos/synchronizers/new_base /opt/xos/synchronizers/new_base
 COPY xos/xos/logger.py /opt/xos/xos/logger.py
diff --git a/containers/xos/Dockerfile.xos-core b/containers/xos/Dockerfile.xos-core
index 570fd76..c8e384d 100644
--- a/containers/xos/Dockerfile.xos-core
+++ b/containers/xos/Dockerfile.xos-core
@@ -13,7 +13,7 @@
 # limitations under the License.
 
 # xosproject/xos-core
-FROM xosproject/xos-libraries:2.1.8
+FROM xosproject/xos-libraries:2.1.9
 
 # Install XOS
 ADD xos /opt/xos
diff --git a/containers/xos/pip_requested.txt b/containers/xos/pip_requested.txt
index cd6a85b..5a9f4f6 100644
--- a/containers/xos/pip_requested.txt
+++ b/containers/xos/pip_requested.txt
@@ -42,7 +42,6 @@
 python-novaclient==10.1.0
 python-openstackclient==3.14.0
 pytz==2018.3
-redis==2.10.6
 requests==2.18.4
 service-identity==17.0.0
 shade==1.27.1
diff --git a/containers/xos/pip_requirements.txt b/containers/xos/pip_requirements.txt
index 97ed1dd..1a08af3 100644
--- a/containers/xos/pip_requirements.txt
+++ b/containers/xos/pip_requirements.txt
@@ -117,7 +117,6 @@
 python-novaclient==10.1.0
 python-openstackclient==3.14.0
 pytz==2018.3
-redis==2.10.6
 repoze.lru==0.7
 requests==2.18.4
 requestsexceptions==1.4.0
diff --git a/xos/core/models/xosbase_header.py b/xos/core/models/xosbase_header.py
index da40d16..0a108ba 100644
--- a/xos/core/models/xosbase_header.py
+++ b/xos/core/models/xosbase_header.py
@@ -34,9 +34,6 @@
 from django.contrib.contenttypes.models import ContentType
 from django.core.validators import MaxValueValidator, MinValueValidator
 
-import redis
-from redis import ConnectionError
-
 from xoskafka import XOSKafkaProducer
 
 from xosconfig import Config
@@ -284,39 +281,6 @@
 
     def push_messagebus_event(self, deleted=False, pk=None):
         self.push_kafka_event(deleted, pk)
-        self.push_redis_event(deleted, pk)
-
-    def push_redis_event(self, deleted=False, pk=None):
-        # Transmit update via Redis
-        try:
-            r = redis.Redis("redis")
-
-            model = self.serialize_for_messagebus()
-            bases = inspect.getmro(self.__class__)
-            class_names = ",".join([x.__name__ for x in bases])
-
-            model['class_names'] = class_names
-
-            if not pk:
-                pk = self.pk
-
-            json_dict = {
-                'pk': pk,
-                'changed_fields': self.changed_fields,
-                'object': model
-            }
-
-            if deleted:
-                json_dict['deleted'] = True
-                json_dict['object']['id'] = pk
-
-            payload = json.dumps(json_dict, default=json_handler)
-            r.publish(self.__class__.__name__, payload)
-
-        except ConnectionError:
-            # Redis not running.
-            log.error('Connection to Redis failed')
-            pass
 
     def push_kafka_event(self, deleted=False, pk=None):
         # Transmit update via kafka
