2017-09-06 3 views
2

J'ai une application qui utilise Redis pour mettre en cache les données de requête de ma base de données relationnelle.Représentation de l'ensemble vide dans les ensembles Redis

Lorsque j'effectue une extraction des données, je vérifie d'abord le cache des résultats dans Redis, et si une entrée existe dans Redis, je renvoie ce résultat. Sinon, si aucun résultat en cache n'est trouvé, j'exécute la requête sur la base de données et stocke les résultats dans Redis.

Je souhaite également pouvoir mettre en cache les résultats vides de la base de données. Quelle est la meilleure façon de représenter un ensemble vide dans Redis, actuellement je stocke
une valeur de 0 dans la base de données pour représenter l'ensemble vide:

Set<Integer> handleNullCaseSet = new HashSet<>(); 
     handleNullCaseSet.add(0); 

Y at-il une meilleure solution?

+0

créez-vous un ensemble pour chaque enregistrement? Pouvez-vous s'il vous plaît partager vos données d'échantillon pour comprendre la manière dont vous stockez des données dans Redis? –

Répondre

1

Pour représenter un ensemble vide dans Redis, vous devez utiliser une valeur sentinelle pour représenter l'ensemble vide, si l'ensemble Redis est vide, la clé sera récupérée. Votre solution est en train de le faire en utilisant la valeur zéro, il n'y a pas de meilleure façon. Pour plus d'informations, voir this answer pour plus d'informations.

+0

En réalité Quiz Maître fait la même chose que vous l'avez dit (en utilisant 0 comme une valeur sentinelle). Il cherche une meilleure solution, je suppose. –

+0

J'ai édité ma réponse pour clarifier que toute solution doit utiliser une sorte de valeur sentinelle. Hoepfully cela fait plus de sens. –