Collection expirée de java

Par exemple, Redis vous permet de spécifier une date d'expiration pour une entrée. C'est généralement suffisant, mais recherchez une bibliothèque de collections en Java capable de le faire.

Code source

pom.xml


	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>11</java.version>
	</properties>

	<dependencies>
		<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-collections4 -->
		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-collections4</artifactId>
			<version>4.4</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
		<dependency>
			<groupId>com.google.guava</groupId>
			<artifactId>guava</artifactId>
			<version>28.0-jre</version>
		</dependency>

	</dependencies>

Carte expirante passive des collections Apache Commons

import java.util.Map;
import java.util.concurrent.TimeUnit;

import org.apache.commons.collections4.map.PassiveExpiringMap;

public class App {
    public static void main(String[] args) throws InterruptedException {

        Map<String, String> map = new PassiveExpiringMap<String, String>(3000, TimeUnit.MILLISECONDS);
        map.put("key1", "value1");

        while (true) {
            TimeUnit.MILLISECONDS.sleep(1000);
            System.out.println(map.size());
        }
    }
}

Lorsque ce qui précède est exécuté, cela devient comme suit.

1
1
0

Date d'expiration 3 secondes. L'expiration n'est pas vérifiée à moins que vous n'effectuiez une opération spécifique sur la carte en tant que Passive ''. Qu'est-ce qu'une opération spécifique? ```Toutes les entrées expirées sont supprimées de .. comme indiqué dans https://commons.apache.org/proper/commons-collections/apidocs/org/apache/commons/collections4/map/PassiveExpiringMap.html Celui qui a quelque chose comme. ''.

note that passiveexpiringmap is not synchronized and is not thread-safeIl est écrit que vous devez y faire attention.

Constructeur de cache de goyave

import java.util.concurrent.TimeUnit;

import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;

public class GuavaCaamain {

    public static void main(String[] args) throws InterruptedException {        
        Cache<String, String> cache = CacheBuilder.newBuilder().expireAfterWrite(3000, TimeUnit.MILLISECONDS).build();
        cache.put("key1", "value1");
        
        while (true) {
            TimeUnit.MILLISECONDS.sleep(1000);
            cache.put("key2", "value2");
            System.out.println(cache.size());
        }

    }

}

Lorsque ce qui précède est exécuté, cela devient comme suit.

2
2
1

Vérifiez la date d'expiration au moment de l'écriture, comme indiqué dans expireAfterWrite </ code>. Donc, si vous supprimez la ligne put du code ci-dessus, le contenu du cache ne changera pas.

Au contraire, pour vérifier au moment de la lecture, suivez les étapes ci-dessous.

Cache<String, String> cache = CacheBuilder.newBuilder().expireAfterAccess(3000, TimeUnit.MILLISECONDS).build();

référence

https://stackoverflow.com/questions/3802370/java-time-based-map-cache-with-expiring-keys

Recommended Posts

Collection expirée de java
[Java] Comparateur de la classe Collection
Collection Java9
Réintroduction Java - Collection Java
[Java] Présentation de Java
[Java] Cadre de collection
Importance de l'interface apprise de la collection Java
[Java] Contenu de l'interface de collection et de l'interface de liste
Caractéristiques prévues de Java
[Java] Importance de serialVersionUID
Questions d'entretien de Java Collection
NIO.2 examen de Java
Avis sur Java Shilber
java --Unification des commentaires
Histoire des annotations Java
java (mérites du polymorphisme)
Une collection de questions simples pour les débutants Java
Examen NIO de Java
[Java] Trois fonctionnalités de Java
Résumé du support Java 2018
Java: utilisez Stream pour trier le contenu d'une collection
Premiers pas avec Java Collection
À propos des instances Java
[Java] Utilisation de Mirage-Basic de SQL
[Java] Compréhension débutante de Servlet-②
[Java] Pratique de la gestion des exceptions [Exception]
[Java11] Résumé du flux -Avantages du flux-
Principes de base de l'utilisation des caractères (Java)
Jugement d'inclusion des éléments de la collection
Collection d'exemples de code parallèle Java
[Java] Création d'annotations originales
java learning day 4
[Java] Compréhension débutante de Servlet-①
Java fin du mois plusMonths
[Java] Résumé des expressions régulières
[Java] Résumé des opérateurs (opérateur)
[Java] Implémentation du réseau Faistel
Collection de méthodes de code de test Java
Qu'est-ce qu'une collection Java?
Collection de la bibliothèque Android de "Mercariatte"
Résumé des bases du langage Java
Résumé de la classe Java Math
Énumération de toutes les combinaisons Java
java (héritage du principe is-a)
Avantages et inconvénients de Java
Avantages de la méthode statique Java
[Java] Résumé de la syntaxe de contrôle
Implémentation Java de tri-tree
Collecte de copies approfondies en Java
Résumé du traitement des erreurs Java
[Java] Résumé des modèles de conception
[Java] Résumé des opérations mathématiques
[Java] Définit la structure de la classe de collection (à propos de HashSet et TreeSet)
[Java] Comparaison de vitesse de combinaison de chaînes
Pensez à une stratégie de mise à jour Java
[Java] Supprimer les éléments de la liste
[Pour les débutants] Résumé du constructeur java
Diverses méthodes de la classe Java String