Я пытаюсь использовать Redis в приложении с весенней загрузкой в качестве кэша. Ниже описано, как я пытаюсь использовать.
RedisEntity.Java
@Getter
@Setter
@RedisHash
public class RedisEntity {
@Id
private RequestObject requestObject;
private ResponseObject responseObject;
}
Репозиторий для Redis:
public interface RedisEntityRepository extends CrudRepository<RedisEntity, RequestObject> {
}
В классе обслуживания:
@Autowired
RedisEntityRepository redisEntityRepository;
redisEntityRepository.save(requestObject);
При попытке сохранить в кеше я получаю следующее исключение:
No converter found capable of converting from type [Package.request.RequestObject] to type [byte[]]
Я не уверен, что является причиной проблемы. Ниже приведена конфигурация Redis, которую я имею:
@Configuration
public class RedisCache extends CachingConfigurerSupport {
private long timeoutSeconds=200l;
private long cacheDuration=2l;
public Map<String, Long> getCacheExpiration() {
Map<String, Long> cacheExpiration = new HashMap<>();
cacheExpiration.put("object", TimeUnit.DAYS.toSeconds(cacheDuration));
cacheExpiration.put("object1", TimeUnit.DAYS.toSeconds(cacheDuration));
return cacheExpiration;
}
private static RedisCacheConfiguration createCacheConfiguration(long timeoutInSeconds) {
return RedisCacheConfiguration.defaultCacheConfig()
.entryTtl(Duration.ofSeconds(timeoutInSeconds));
}
@Bean
public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory cf) {
RedisTemplate<String, String> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(cf);
return redisTemplate;
}
@Bean
public RedisCacheConfiguration cacheConfiguration() {
return createCacheConfiguration(timeoutSeconds);
}
@Bean
public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
Map<String, RedisCacheConfiguration> cacheConfigurations = new HashMap<>();
for (Entry<String, Long> cacheNameAndTimeout : getCacheExpiration().entrySet()) {
cacheConfigurations.put(cacheNameAndTimeout.getKey(), createCacheConfiguration(cacheNameAndTimeout.getValue()));
}
return RedisCacheManager
.builder(redisConnectionFactory)
.cacheDefaults(cacheConfiguration())
.withInitialCacheConfigurations(cacheConfigurations).build();
}
}
Любые предложения высоко ценятся и будут полезны!