[JAVA] À propos de la spécification de la période de validité lors de l'enregistrement du cache dans Redis avec Spring Cache

Contexte

J'ai vérifié la spécification de la période de validité de Redis, mais j'ai créé un article car la description était ancienne et il y avait peu d'informations qui peuvent être utilisées telles quelles

Confirmez que Redis peut spécifier la période de validité pour chaque donnée dans Spring Cache

build.gradle

implementation 'org.springframework.boot:spring-boot-starter-cache'
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
Créer une classe de configuration
@Configuration
@EnableCaching
public class RedisConfig {

	@Bean
	public CacheManager cacheManager(RedisConnectionFactory fac) {
		
        //1. 1. Créer un cache à partir du générateur de cache
		RedisCacheManagerBuilder builder = RedisCacheManager.builder(fac);
		builder
			.cacheDefaults(
		//2. Définir une date d'expiration du cache par défaut
					RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofDays(1)))
		//3. 3. Définissez une date d'expiration pour le cache nommé cache1
			.withCacheConfiguration("cache1", 
					RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofMinutes(1)))
		//3. 3. Définissez une date d'expiration pour le cache nommé cache2
			.withCacheConfiguration("cache2", 
					RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofHours(1)));

		return builder.build();
	}
}

** Supplément **

1.

//fac est un type RedisConnectionFactory
RedisCacheManager rcm = RedisCacheManager.create(fac);

2.

3.

Contrôleur pour la vérification des opérations (créer cache1 et cache2)
@RestController
@RequestMapping("/api/sample")
public class SampleRedisCacheController {

	@Autowired
	CacheManager cm;

	@GetMapping("redisCache")
	public String redisCache() {

		Cache c1 = cm.getCache("cache1");
		c1.put("k1", 123456);
		c1.put("k2", 234567);

		Cache c2 = cm.getCache("cache2");
		c2.put("k1", 123456);
		c2.put("k2", 234567);

		return "redis cache test";
	}
}

Vérifier le résultat

commentaire

Le contenu de la classe CacheManager m'a semblé difficile, mais j'ai pu comprendre comment le créer et divers paramètres. Le constructeur a été mentionné dans Effective Java. Je pense qu'il a été introduit car il est pratique à utiliser lorsqu'il y a beaucoup d'arguments dans le constructeur. Je pense qu'il a été introduit parce qu'il y a beaucoup de valeurs de réglage cette fois.

Recommended Posts

À propos de la spécification de la période de validité lors de l'enregistrement du cache dans Redis avec Spring Cache
Cache de support nul dans Spring Data Redis
Utilisez thymeleaf3 avec le parent sans spécifier spring-boot-starter-parent dans Spring Boot
À propos du comportement lors de la création d'un mappage de fichiers avec Java
A propos de la spécification du chemin JAXRS
Voir le comportement de redirection relative avec le paramètre server.tomcat.use-relative-redirects dans Spring Boot