#mongodb #spring-boot #redis
#mongodb #пружинный ботинок #редис
Вопрос:
Я внедряю это в первый раз и немного сбит с толку. Я хочу прочитать строки из mongodb и поместить их в redis для дальнейшего использования. Вот что я попробовал:’
package com.td.resource.config; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.Duration; import java.util.Arrays; import java.util.Date; import org.springframework.beans.factory.annotation.Value; import org.springframework.cache.CacheManager; import org.springframework.cache.annotation.CachingConfigurerSupport; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.core.convert.converter.Converter; import org.springframework.data.convert.ReadingConverter; import org.springframework.data.redis.cache.RedisCacheConfiguration; import org.springframework.data.redis.cache.RedisCacheManager; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.connection.RedisStandaloneConfiguration; import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.convert.RedisCustomConversions; import org.springframework.stereotype.Component; @Configuration public class RedisConfig extends CachingConfigurerSupport{ @Value("${redis.hostname}") private String redisHostName; @Value("${redis.port}") private int redisPort; @Value("${redis.password}") private String redisPassword; @Bean JedisConnectionFactory jedisConnectionFactory() { RedisStandaloneConfiguration config = new RedisStandaloneConfiguration(); config.setPort(redisPort); config.setHostName(redisHostName); return new JedisConnectionFactory(config); } @Bean(value = "redisTemplate") public RedisTemplatelt;String, Objectgt; redisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplatelt;String, Objectgt; redisTemplate = new RedisTemplatelt;gt;(); redisTemplate.setConnectionFactory(redisConnectionFactory); return redisTemplate; } @Bean(name = "cacheManagerNoExpiry") // Default cache manager is infinite public CacheManager cacheManagerNoExpiry(RedisConnectionFactory redisConnectionFactory) { return RedisCacheManager.builder(redisConnectionFactory).cacheDefaults(RedisCacheConfiguration.defaultCacheConfig()).build(); } @Primary @Bean(name = "cacheManager24Hours") // Default cache manager is infinite public CacheManager cacheManager24Hours(RedisConnectionFactory redisConnectionFactory) { Duration expiration = Duration.ofHours(24); return RedisCacheManager.builder(redisConnectionFactory).cacheDefaults(RedisCacheConfiguration.defaultCacheConfig().entryTtl(expiration)).build(); } }
Вот класс, в котором я читаю из базы данных:
package com.td.resource.service.impl; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.Cacheable; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.stereotype.Component; import com.td.resource.constant.ServiceConstant; import com.td.resource.dto.TDResponse; import com.td.resource.entity.Advertiser; import com.td.resource.service.CacheService; import com.td.resource.utils.ResponseGeneratorUtils; @Component public class CacheServiceImpl implements CacheService{ @Autowired private MongoTemplate mongoTemplate; @Autowired private ResponseGeneratorUtils responseGeneratorUtils; @Override @Cacheable(value = "advertisers", cacheManager = "cacheManagerNoExpiry") public TDResponse getAdvertisers() { Listlt;Advertisergt; advertisers = mongoTemplate.findAll(Advertiser.class); return responseGeneratorUtils.generateResponse(ServiceConstant.API_CODE.SUCCESS.toString(), true, ServiceConstant.STATUS.CREATE_SUCCESS.toString(), advertisers); } }
Я просмотрел несколько учебных пособий, и они говорят, что @Cacheable справится с этим самостоятельно. Я не вижу никаких данных в redis после запуска. Никаких ошибок, успешное соединение с Redis.
Что я делаю не так?