Команда Redis keys не показывает все ключи - PullRequest
0 голосов
/ 04 ноября 2019

Я использую redis в качестве слоя кэширования. В этом у меня есть куча мест, где я использую @Cacheable в своих различных сервисах и слоях.

Вот пример кода:

@Cacheable(value = "my_detail", key = "'m_detail_'+#entityIdd")
public InstituteDetail getMyDetail(Long entityId) {

    call1();
    call2()
}

@Cacheable(value = "call_1", key = "'call_1'+#entityIdd")
public InstituteDetail getMyDetail1(Long entityId) {

    //some code
}

@Cacheable(value = "call_2", key = "'call_2'+#entityIdd")
public InstituteDetail getMyDetail2(Long entityId) {

    //some code
}

Приложение и кэширование работают нормально, но когда я получаю все ключи в Redis-Cli, используя следующую команду:

keys *

показывает только ключи для call_1 и call_2. И не показывает ключ для "my_detail".

Это странно и не решается. Любое предположение, что здесь не так.

1 Ответ

0 голосов
/ 11 ноября 2019

Создан прокси-класс, который перехватывает все запросы и отвечает кэшированным значением, только внешние вызовы методов, поступающие через прокси, перехватываются. Это означает, что в целевом объекте, вызывающем другой метод того же целевого объекта, не будет происходить фактический перехват кэша во время выполнения, даже если вызванный метод помечен @Cacheable.

Следовательно вы можете'my_detail' не хранить в кэше , если метод вызывает другие методы того же класса .

...