diff --git a/ansible/roles/redis/defaults/main.yml b/ansible/roles/redis/defaults/main.yml
index 1e02f161ff6925ac9fd3b6d7d1ce5d19534bc36b..b9a29b0776efbc49cd6ce6e9b64895c0fe38ffa5 100644
--- a/ansible/roles/redis/defaults/main.yml
+++ b/ansible/roles/redis/defaults/main.yml
@@ -9,6 +9,7 @@ redis_services:
     image: "{{ redis_image_full }}"
     volumes: "{{ redis_default_volumes + redis_extra_volumes }}"
     dimensions: "{{ redis_dimensions }}"
+    healthcheck: "{{ redis_healthcheck }}"
   redis-sentinel:
     container_name: redis_sentinel
     group: redis
@@ -16,6 +17,7 @@ redis_services:
     image: "{{ redis_sentinel_image_full }}"
     volumes: "{{ redis_sentinel_default_volumes + redis_sentinel_extra_volumes }}"
     dimensions: "{{ redis_sentinel_dimensions }}"
+    healthcheck: "{{ redis_sentinel_healthcheck }}"
 
 ####################
 # Docker
@@ -31,6 +33,32 @@ redis_sentinel_image_full: "{{ redis_sentinel_image }}:{{ redis_tag }}"
 redis_dimensions: "{{ default_container_dimensions }}"
 redis_sentinel_dimensions: "{{ default_container_dimensions }}"
 
+redis_enable_healthchecks: "{{ enable_container_healthchecks }}"
+redis_healthcheck_interval: "{{ default_container_healthcheck_interval }}"
+redis_healthcheck_retries: "{{ default_container_healthcheck_retries }}"
+redis_healthcheck_start_period: "{{ default_container_healthcheck_start_period }}"
+redis_healthcheck_test: ["CMD-SHELL", "healthcheck_listen redis-server {{ redis_port }}"]
+redis_healthcheck_timeout: "{{ default_container_healthcheck_timeout }}"
+redis_healthcheck:
+  interval: "{{ redis_healthcheck_interval }}"
+  retries: "{{ redis_healthcheck_retries }}"
+  start_period: "{{ redis_healthcheck_start_period }}"
+  test: "{% if redis_enable_healthchecks | bool %}{{ redis_healthcheck_test }}{% else %}NONE{% endif %}"
+  timeout: "{{ redis_healthcheck_timeout }}"
+
+redis_sentinel_enable_healthchecks: "{{ enable_container_healthchecks }}"
+redis_sentinel_healthcheck_interval: "{{ default_container_healthcheck_interval }}"
+redis_sentinel_healthcheck_retries: "{{ default_container_healthcheck_retries }}"
+redis_sentinel_healthcheck_start_period: "{{ default_container_healthcheck_start_period }}"
+redis_sentinel_healthcheck_test: ["CMD-SHELL", "healthcheck_listen redis-sentinel {{ redis_sentinel_port }}"]
+redis_sentinel_healthcheck_timeout: "{{ default_container_healthcheck_timeout }}"
+redis_sentinel_healthcheck:
+  interval: "{{ redis_sentinel_healthcheck_interval }}"
+  retries: "{{ redis_sentinel_healthcheck_retries }}"
+  start_period: "{{ redis_sentinel_healthcheck_start_period }}"
+  test: "{% if redis_sentinel_enable_healthchecks | bool %}{{ redis_sentinel_healthcheck_test }}{% else %}NONE{% endif %}"
+  timeout: "{{ redis_sentinel_healthcheck_timeout }}"
+
 redis_default_volumes:
   - "{{ node_config_directory }}/redis/:{{ container_config_directory }}/:ro"
   - "/etc/localtime:/etc/localtime:ro"
diff --git a/ansible/roles/redis/handlers/main.yml b/ansible/roles/redis/handlers/main.yml
index 2b900c37db46b813f4978fe8347b1617436d6c6b..f0d2de78adf8c679fe288a95cbeee36b94180071 100644
--- a/ansible/roles/redis/handlers/main.yml
+++ b/ansible/roles/redis/handlers/main.yml
@@ -11,6 +11,7 @@
     image: "{{ service.image }}"
     volumes: "{{ service.volumes }}"
     dimensions: "{{ service.dimensions }}"
+    healthcheck: "{{ service.healthcheck | default(omit) }}"
   when:
     - kolla_action != "config"
 
@@ -26,5 +27,6 @@
     image: "{{ service.image }}"
     volumes: "{{ service.volumes }}"
     dimensions: "{{ service.dimensions }}"
+    healthcheck: "{{ service.healthcheck | default(omit) }}"
   when:
     - kolla_action != "config"
diff --git a/ansible/roles/redis/tasks/check-containers.yml b/ansible/roles/redis/tasks/check-containers.yml
index f7a64522bd20f9972a26be34568cb112603a8e1f..24e168b88ac4d03270836dba794252a77605ba1e 100644
--- a/ansible/roles/redis/tasks/check-containers.yml
+++ b/ansible/roles/redis/tasks/check-containers.yml
@@ -8,6 +8,7 @@
     image: "{{ item.value.image }}"
     volumes: "{{ item.value.volumes }}"
     dimensions: "{{ item.value.dimensions }}"
+    healthcheck: "{{ item.value.healthcheck | default(omit) }}"
   when:
     - inventory_hostname in groups[item.value.group]
     - item.value.enabled | bool
diff --git a/releasenotes/notes/implement-docker-healthchecks-for-redis-12f8d528d1b8c0cb.yaml b/releasenotes/notes/implement-docker-healthchecks-for-redis-12f8d528d1b8c0cb.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..089a963267bd58d78474b9cc2f0389a08deffd77
--- /dev/null
+++ b/releasenotes/notes/implement-docker-healthchecks-for-redis-12f8d528d1b8c0cb.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - |
+    Implements container healthchecks for redis services.
+    See `blueprint
+    <https://blueprints.launchpad.net/kolla-ansible/+spec/container-health-check>`__