Spring Cache + Redis кеш не вычисляет ключи на основе имен методов / классов - PullRequest
0 голосов
/ 11 марта 2020

Я использую redisson с абстракцией jcache, проще говоря, у меня есть это:

public class MyService{

      @Cacheable("cacheA")
      public String returnSomethingAfterLongTime(String parameter){
               //...
      }

      @Cacheable("cacheA")
      public String returnSomethingElse(String parameter){

      }
}

Проблема в том, что они оба создают ключ redis, такой как "cacheA :: parameter", другими словами имя класса и метода не учитывается.

Это вызывает проблему, если строка «параметр» является общим словом, потому что я должен знать каждую часть кода, где используется «cacheA», чтобы быть уверенным, что из-за тот факт, что ключ «параметра» может быть реплицирован между вызовами.

Есть ли что-то, что я делаю неправильно?

1 Ответ

3 голосов
/ 11 марта 2020

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

Атрибут ключа Spring Cacheable

Есть много хороших примеров и ответов на этой записи.

Я никогда лично не использовал Spring Cache, но похоже, что вы можете указать @Cacheable("cacheA", key="#parameter") и значение из Параметр будет использоваться в качестве ключа, а не слова «параметр».

...