Общий экземпляр Redis для нескольких экземпляров одного и того же приложения

avatar
jprogrammer
8 апреля 2018 в 03:46
2663
1
2

Нас попросили реализовать кэширование в приложении с помощью Redis. Приложение должно иметь логику очищать кеш при запуске и инициализировать его. Однако экземпляр Redis может совместно использоваться несколькими экземплярами приложения.

например. Приложение X имеет два экземпляра X0 и X1, совместно использующих один и тот же экземпляр Redis.

Проблема: При наличии нескольких экземпляров возможно, что один экземпляр пытается инициализировать кеш, а другой экземпляр очищает его.

Два вопроса

1) Как убедиться, что во время инициализации кэша другой экземпляр не очищает его.

Один из способов решения этой проблемы — поддерживать флаг в Redis, чтобы проверять, сбрасывается ли он или инициализируется. Если кеш инициализируется, не очищайте и не инициализируйте его повторно.

2) Является ли хорошей практикой использование общего экземпляра Redis для нескольких экземпляров приложения?

Источник

Ответы (1)

avatar
Sripathi Krishnan
8 апреля 2018 в 17:39
0

Как правило, делиться Redis не рекомендуется. Если у вас есть только ограниченное количество экземпляров приложения, вам лучше создать отдельный процесс Redis для каждого. Redis легковесен, поэтому несколько процессов, работающих в разных частях одного сервера, на практике работают хорошо.

Если вы не можете установить несколько процессов, вы можете иметь 1 базу данных для каждого экземпляра. Redis по умолчанию поддерживает 16 баз данных. Затем вы можете сбросить каждую базу данных независимо. Просто помните, что базы данных в Redis не рекомендуются, и они больше не поддерживаются в кластере Redis.