Spring Boot 3.5.0 with * spring-boot-starter-cache * spring-boot-starter-data-redis * jedis (replaces lettuce)
fails with NoSuchMethodError on method annotated with @Cacheable
after upgrade from Spring Boot 3.4.5 to 3.5.0.
java.lang.NoSuchMethodError: 'redis.clients.jedis.params.BaseSetExParams redis.clients.jedis.params.SetParams.px(long)'
at org.springframework.data.redis.connection.jedis.JedisConverters.toSetCommandExPxArgument(JedisConverters.java:378)
at org.springframework.data.redis.connection.jedis.JedisClusterStringCommands.set(JedisClusterStringCommands.java:144)
at org.springframework.data.redis.cache.DefaultRedisCacheWriter.doPut(DefaultRedisCacheWriter.java:247)
at org.springframework.data.redis.cache.DefaultRedisCacheWriter.lambda$put$3(DefaultRedisCacheWriter.java:238)
at org.springframework.data.redis.cache.DefaultRedisCacheWriter.execute(DefaultRedisCacheWriter.java:403)
at org.springframework.data.redis.cache.DefaultRedisCacheWriter.put(DefaultRedisCacheWriter.java:237)
at org.springframework.data.redis.cache.RedisCache.put(RedisCache.java:208)
at org.springframework.cache.transaction.TransactionAwareCacheDecorator.put(TransactionAwareCacheDecorator.java:119)
at org.springframework.cache.interceptor.AbstractCacheInvoker.doPut(AbstractCacheInvoker.java:157)
at org.springframework.cache.interceptor.CacheAspectSupport$CachePutRequest.performCachePut(CacheAspectSupport.java:1087)
at org.springframework.cache.interceptor.CacheAspectSupport$CachePutRequest.apply(CacheAspectSupport.java:1072)
at org.springframework.cache.interceptor.CacheAspectSupport.evaluate(CacheAspectSupport.java:616)
at org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:448)
at org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:410)
at org.springframework.cache.interceptor.CacheInterceptor.invoke(CacheInterceptor.java:65)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728)
The issue seems to be related to https://github.com/spring-projects/spring-data-redis/issues/3144.
Upgrading managed jedis version from default 5.2.0 to the latest 6.0.0 fixes the problem and at least in our case seems to work well.