Configure Redis leader follower(master-slave) replication Permalink to "Configure Redis leader follower(master-slave) replication"

Tip submitted by @zhx828

In the latest JHipster generator, it provides a redis cluster setting for production deployment. But oftentimes, that might be overkill for small projects. This document provides a solution to configure Redis leader follower (master-slave) replication. For more information about Redis Replication, please see here.

The following changes are based on my own project set up. I assume you have modified your application properties to setup Redis password, so you can adjust your own accordingly.

Step 1 Permalink to "Step 1"

Add file

public class RedisProperties {
    String type;
    String password;
    MasterSlaveRedisCache masterSlaveCache;
    SingleRedisCache singleCache;

    public String getType() {
        return type;

    public void setType(String type) {
        this.type = type;

    public String getPassword() {
        return password;

    public void setPassword(String password) {
        this.password = password;

    public MasterSlaveRedisCache getMasterSlaveCache() {
        return masterSlaveCache;

    public void setMasterSlaveCache(MasterSlaveRedisCache masterSlaveCache) {
        this.masterSlaveCache = masterSlaveCache;

    public SingleRedisCache getSingleCache() {
        return singleCache;

    public void setSingleCache(SingleRedisCache singleCache) {
        this.singleCache = singleCache;

Step 2 Permalink to "Step 2"

Add RedisProperties to

public class ApplicationProperties {

    private RedisProperties redis;
    public RedisProperties getRedis() {
        return redis;

    public void setRedis(RedisProperties redis) {
        this.redis = redis;

Step 3 Permalink to "Step 3"

Update the file, method jcacheConfiguration. These changes have to be combined with the current cluster setup.

if (applicationProperties.getRedis().getType().equals(RedisType.SINGLE.getType())) {
} else if (applicationProperties.getRedis().getType().equals(RedisType.MASTER_SLAVE.getType())) {
} else {
    throw new Exception("The redis type " + applicationProperties.getRedis().getType() + " is not supported. Only single and master-slave are supported.");

Step 4 Permalink to "Step 4"

Update application-dev.yml to use single server

  profile: dev
    type: 'single'
    password: 'public-redis-password'
      address: 'redis://localhost:6379'

Step 5 Permalink to "Step 5"

Update application-prod.yml to use master-slave servers

  profile: prod
    type: 'master-slave'
    password: 'public-redis-password'
      master-address: 'redis://redis-master:6379'
      slave-address: 'redis://redis-slave:6379'