Sobes.tech
Junior — Middle

How to eliminate the problem of missing data in cache when two containers with a global service cache operate simultaneously?

sobes.tech AI

Answer from AI

The problem of missing data in the cache when running two containers with a global cache simultaneously is usually related to the lack of cache state synchronization between the containers. To resolve this issue, you can:

  • Use a distributed cache (e.g., Redis, Memcached) that is accessible to both containers and ensures data consistency.
  • Implement a cache invalidation mechanism so that when data is changed in one container, the other container updates or resets the corresponding entries.
  • Apply synchronization patterns, such as publishing events through a message broker (Kafka, RabbitMQ), to notify other containers about changes.

Example of using Redis in Java with the Jedis library:

JedisPool pool = new JedisPool(new JedisPoolConfig(), "localhost");
try (Jedis jedis = pool.getResource()) {
    String value = jedis.get("key");
    if (value == null) {
        // load data from DB
        value = loadDataFromDb();
        jedis.set("key", value);
    }
}

Thus, both containers access the same cache, which prevents desynchronization.

How to eliminate the problem of missing data in cache… - sobes.tech