- Propriétés de IRedisClient
Les propriétés exposées par l'interface IRedisClient incluent :
| Propriété | Description |
|---|---|
| ConnectTimeout | Délai d'attente pour établir la connexion |
| Db | Identifiant ou index de la base de données active |
| DbSize | Nombre total de clés dans la base de données courante |
| HadExceptions | Indique si des exceptions ont été rencontrées |
| Hashes | Accès aux collections de type hachage, permettant de stocker plusieurs champs par valeur |
| Host | Adresse de l'hôte du serveur Redis |
| Info | Fournit diverses informations et statistiques sur le serveur Redis |
| LastSave | Horodatage de la dernière sauvegarde réussie des données sur le disque |
| Lists | Ensemble de toutes les listes dans la base de données active |
| Password | Mot de passe d'authentification |
| Port | Port d'écoute du serveur Redis |
| RetryCount | Nombre de tentatives de reconnexion |
| RetryTimeout | Délai d'attente antre les tentatives de reconnexion |
| SendTimeout | Délai d'attente pour l'envoi de données |
| Sets | Collection de tous les ensembles de type HashSet<T> |
| SortedSets | Collection de tous les ensembles triés de type SortedSet<T> |
| this[string key] | Accès par index (clé) à une valeur de type chaîne de caractères |
Exemple d'utilisation des propriétés :
// Initialisation du client Redis
var client = new RedisClient("localhost");
// Ajout d'éléments à un ensemble
client.AddItemToSet("EquipeAlpha", "Alice");
client.AddItemToSet("EquipeAlpha", "Bob");
client.AddItemToSet("EquipeAlpha", "Charlie");
// Accès à la collection d'ensembles
IHasNamed<iredisset> ensembleCollection = client.Sets;
HashSet<string> membresAlpha = ensembleCollection["EquipeAlpha"].GetAll();
// Affichage des éléments
foreach (string membre in membresAlpha)
{
Console.WriteLine(membre);
}
</iredisset>
- Opérations de Données via IRedisClient
2.1 Interface ICacheClient
IRedisClient implémente l'interface ICacheClient, offrant les fonctionnalités suivantes :
| Méthode | Description |
|---|---|
| Add | Ajoute un enregistrement clé-valeur ; retourne false si la clé existe déjà |
| FlushAll | Invalide tous les caches (supprime toutes les clés de toutes les bases Redis) |
| Get | Récupère la valeur d'un enregistrement par sa clé |
| GetAll | Récupère plusieurs enregistrements à partir de clés multiples |
| Remove | Supprime un enregistrement par sa clé |
| RemoveAll | Supprime plusieurs enregistrements à partir de clés multiples |
| Replace | Écrase la valeur d'un enregistrement si la clé existe ; sans ajout si inexistante |
| Set | Modifie ou ajoute un enregistrement selon l'existence de la clé |
| SetAll | Écrase plusieurs enregistrements à partir de clés multiples |
| Increment | Incrémente une valeur numérique |
| Decrement | Décrémente une valeur numérique |
Les méthodes d'ajout possèdent des surcharges pour définir l'expiration :
- Avec DateTime : expiration à un instant précis
- Avec TimeSpan : expiration après une durée écoulée
Exemple d'utilisation basique :
// Configuration du gestionnaire de clients Redis
var config = new RedisClientManagerConfig
{
AutoStart = true,
MaxReadPoolSize = 50,
MaxWritePoolSize = 50
};
var clientManager = new PooledRedisClientManager(
new List<string> { "127.0.0.1" },
new List<string> { "127.0.0.1" },
config
);
using (IRedisClient client = clientManager.GetClient())
{
client.Add("clé1", "valeurA");
client.Set("clé1", "valeurB");
client.Replace("clé1", "valeurC");
Console.WriteLine(client.Get<string>("clé1"));
client.Remove("clé1");
Console.WriteLine(client.Get<string>("clé1") == null);
}
2.2 Fonctionnalités Supplémentaires
Au-delà de l'interface ICacheClient, IRedisClient offre de nombreuses méthodes opérationnelles :
| Méthode | Description |
|---|---|
| AppendToValue | Ajoute une valeur à la fin d'une chaîne existante |
| ContainsKey | Vérifie si une clé est utilisée dans la base de données |
| GetAllKeys | Récupère l'ensemble de toutes les clés |
| DecrementValue | Décrémente une valeur entière de 1 |
| DecrementValueBy | Décrémente une valeur entière d'un montant spécifié |
| IncrementValue | Incémente une valeur entière de 1 |
| IncrementValueBy | Incémente une valeur entière d'un montant spécifié |
| RenameKey | Renomme une clé sans modifier sa valeur |
| SearchKeys | Recherche des clés par modèle (supporte les expressions simples) |
| GetRandomKey | Récupère une clé aléatoire parmi celles utilisées |
| GetValue | Récupère une valeur de type chaîne par clé |
| GetValues | Récupère plusieurs valeurs pour des clés spécifiques (supporte les génériques) |
| GetTimeToLive | Obtient le TimeSpan restant avant l'expiration d'une clé |
| GetSortedSetCount | Compte les éléments d'un ensemble trié, avec options de filtrage |
| ExpireEntryAt | Définit une date d'expiration pour une clé |
| ExpireEntryIn | Définit une durée d'expiration pour une clé |
| FlushDb | Supprime toutes les données de la base courante |
| FlushAll | Supprime toutes les données de toutes les bases |
| Shutdown | Arrête les clients, sauvegarde et ferme le serveur Redis |
| Save | Sauvegarde les données sur le disque |
| SaveAsync | Sauvegarde asynchrone des données |
| PublishMessage | Publie un message sur un canal spécifié |
| GetValuesMap | Récupère des paires clé-valeur pour des valeurs de même type |
| SetEntry | Définit ou écrase une valeur de type chaîne |
| SetEntryIfNotExists | Définit une valeur seulement si la clé n'existe pas |
| GetEntryType | Détermine le type de valeur stockée (None, String, List, Set, SortedSet, Hash) |
2.3 Collections Internes
IRedisClient gère plusieurs types de collections internes : List<T>, SortedSet<T>, et HashSet<T>. Voici les méthodes associées :
| Méthode | Description |
|---|---|
| AddItemToList | Ajoute un élément à une liste interne |
| AddItemToSet | Ajoute un élément à un ensemble de type HashSet |
| AddItemToSortedSet | Ajoute un élément à un ensemble trié, avec option de score pour le tri |
| AddRangeToList | Ajoute plusieurs éléments à une liste interne |
| AddRangeToSet | Ajoute plusieurs éléments à un ensemble de type HashSet |
| AddRangeToSortedSet | Ajoute plusieurs éléments à un ensemble trié, avec scores optionnels |
| GetAllItemsFromList | Récupère tous les éléments d'une liste par son identifiant |
| GetAllItemsFromSet | Récupère tous les éléments d'un ensemble de type HashSet |
| GetAllItemsFromSortedSet | Récupère tous les éléments d'un ensemble trié |
| GetAllItemsFromSortedSetDesc | Récupère tous les éléments d'un ensemble trié en ordre décroissant |
| GetRangeFromList | Récupère une plage d'éléments d'une liste par index |
| GetRangeFromSortedSet | Récupère une plage d'éléments d'un ensemble de type HashSet par index |
| GetRangeFromSortedSetByHighestScore | Récupère des éléments d'un ensemble trié triés par score décroissant |
| GetRangeFromSortedSetByLowestScore | Récupère des éléments d'un ensemble trié triés par score croissant |
| GetRangeWithScoresFromSortedSet | Récupère des éléments avec leurs scores pour une plage donnée |
| RemoveAllFromList | Supprime tous les éléments d'une liste |
| RemoveItemFromList | Supprime un élément spécifique d'une liste |
| RemoveItemFromSet | Supprime un élément spécifique d'un ensemble de type HashSet |
| RemoveItemFromSortedSet | Supprime un élément spécifique d'un ensemble trié |
| RemoveRangeFromSortedSet | Supprime une plage d'éléments d'un ensemble trié par index |
| RemoveRangeFromSortedSetByScore | Supprime une plage d'éléments d'un ensemble trié par score |
| RemoveStartFromList | Supprime le premier élément d'une liste |
| RemoveEndFromList | Supprime le dernier élément d'une liste |
| BlockingRemoveStartFromList | Supprime le premier élément d'une liste de manière bloquante |
| RemoveEntry | Supprime plusieurs collections internes par leurs identifiants |
| GetItemFromList | Récupère un élément d'une liste par index |
| GetItemIndexInSortedSet | Obtient l'index d'un élément dans un ensemble trié |
| GetItemScoreInSortedSet | Obtient le score d'un élément dans un ensemble trié |
| GetListCount | Compte les éléments d'une liste |
| GetSetCount | Compte les éléments d'un ensemble de type HashSet |
| GetIntersectFromSets | Calcule l'intersection de plusieurs ensembles de type HashSet |
| GetUnionFromSets | Calcule l'union de plusieurs ensembles de type HashSet |
| GetRandomItemFromSet | Récupère un élément aléatoire d'un ensemble |
| StoreUnionFromSets | Stocke l'union de plusieurs ensembles dans un nouvel ensemble |
| StoreIntersectFromSets | Stocke l'intersection de plusieurs ensembles dans un nouvel ensemble |
| EnqueueItemOnList | Ajoute un élément en tête d'une liste |
| DequeueItemFromList | Retire et retourne le dernier élément d'une liste |
| BlockingDequeueItemFromList | Retire le dernier élément d'une liste de manière bloquante |
| PopItemFromList | Retire et retourne un élément d'une liste |
| PopItemFromSet | Retire et retourne un élément d'un ensemble de type HashSet |
| PopItemWithHighestScoreFromSortedSet | Retire l'élément avec le score le plus élevé d'un ensemble trié |
| PopItemWithLowestScoreFromSortedSet | Retire l'élément avec le score le plus bas d'un ensemble trié |
| PopAndPushItemBetweenLists | Déplace un élément d'une liste à la tête d'une autre |
| SetContainsItem | Vérifie si un ensemble contient un élément spécifique |
| SortedSetContainsItem | Vérifie si un ensemble trié contient une clé |
| TrimList | Réduit une liste à une plage d'index spécifiée |
| IncrementItemInSortedSet | Ajoute un score à un élément dans un ensemble trié |
| SetItemInList | Remplace un élément dans une liste par index |
| PushItemToList | Ajoute un élément à la fin d'une liste |
| PrependItemToList | Ajoute un élément au début d'une liste |
| PrependRangeToList | Ajoute plusieurs éléments au début d'une liste |
| GetDifferencesFromSet | Calcule la différence entre des ensembles |
| StoreDifferencesFromSet | Stocke la différence entre des ensembles dans un nouvel ensemble |
| MoveBetweenSets | Déplace un élément d'un ensemble à un autre |
Exemple d'utilisation de List et HashSet :
// Gestion d'une liste interne
client.AddItemToList("Projecteurs", "ProjetA");
client.AddItemToList("Projecteurs", "ProjetB");
client.AddItemToList("Projecteurs", "ProjetC");
List<string> listeProjets = client.GetAllItemsFromList("Projecteurs");
foreach (string projet in listeProjets)
{
Console.WriteLine(projet);
}
// Gestion d'un ensemble de type HashSet
client.AddItemToSet("Ressources", "Serveur1");
client.AddItemToSet("Ressources", "Serveur1"); // Doublon ignoré
client.AddItemToSet("Ressources", "Serveur2");
HashSet<string> ensembleRessources = client.GetAllItemsFromSet("Ressources");
foreach (string ressource in ensembleRessources)
{
Console.WriteLine(ressource); // Affiche Serveur1 et Serveur2
}
Exemple d'opérations avec plages et scores :
// Utilisation d'un ensemble trié avec scores
client.AddItemToSortedSet("Priorités", "TâcheUrgente", 10);
client.AddItemToSortedSet("Priorités", "TâcheMoyenne", 5);
client.AddItemToSortedSet("Priorités", "TâcheFaible", 1);
IDictionary<string, double> elementsAvecScores = client.GetRangeWithScoresFromSortedSet("Priorités", 0, 2);
foreach (var element in elementsAvecScores)
{
Console.WriteLine($"{element.Key}: Score {element.Value}");
}
2.4 Hachages Internes
IRedisClient supporte les tables de hachage internes avec les méthodes suivantes :
| Méthode | Description |
|---|---|
| SetEntryInHash | Définit une paire clé-valeur dans une table de hachage (écrase si existe) |
| SetEntryInHashIfNotExists | Définit une paire clé-valeur seulmeent si la clé n'existe pas |
| GetHashValues | Récupère toutes les valeurs d'une table de hachage par son identifiant |
| GetValuesFromHash | Récupère plusieurs valeurs à partir de clés spécifiques dans une table de hachage |
| GetValueFromHash | Récupère une valeur spécifique d'une table de hachage |
| GetHashKeys | Récupère toutes les clés d'une table de hachage |
| GetHashCount | Compte les clés dans une table de hachage |
| HashContainsEntry | Vérifie si une clé existe dans une table de hachage |
| IncrementValueInHash | Incémente une valeur numérique dans une table de hachage |
| StoreAsHash | Stocke un objet dans une table de hachage (supporte les génériques) |
| GetFromHash | Récupère un objet depuis une table de hachage (supporte les génériques) |
| SetRangeInHash | Définit plusieurs paires clé-valeur dans une table de hachage en une seule opération |
Exemple d'utilisation des hachages :
// Création d'une table de hachage
client.SetEntryInHash("ConfigDB", "host", "localhost");
client.SetEntryInHash("ConfigDB", "port", "5432");
// Ajout de plusieurs paires clé-valeur
var parametres = new List<KeyValuePair<string, string>>
{
new KeyValuePair<string, string>("user", "admin"),
new KeyValuePair<string, string>("password", "secure123")
};
client.SetRangeInHash("ConfigDB", parametres);
2.5 Scripts Lua
À partir de Redis 2.6.0, l'exécution de scripts Lua est supportée via l'interpréteur intégré. Les méthodes disponibles sont :
| Méthode | Description |
|---|---|
| LoadLuaScript | Charge un script Lua dans le cache sans l'exécuter |
| KillRunningLuaScript | Arrête un script Lua en cours d'exécution par son identifiant |
| ExecLuaAsInt | Exécute un script Lua et retourne le résultat comme entier |
| ExecLuaAsList | Exécute un script Lua et retourne le résultat comme liste |
| ExecLuaAsString | Exécute un script Lua et retourne le résultat comme chaîne |
| ExecLuaShaAsInt | Exécute un script Lua par son SHA1 et retourne le résultat comme entier |
| ExecLuaShaAsList | Exécute un script Lua par son SHA1 et retourne le résultat comme liste |
| ExecLuaShaAsString | Exécute un script Lua par son SHA1 et retourne le résultat comme chaîne |
| HasLuaScript | Vérifie si un script Lua est en cache |
| CalculateSha1 | Calcule le hash SHA1 d'un script Lua |
| WhichLuaScriptsExists | Vérifie l'existence de plusieurs scripts Lua par leurs SHA1 |
Pour plus d'informations sur les scripts Lua, consultez la documentation officielle de Redis.
2.6 Transactions
Redis offre des fonctionnalités transactionnelles via les méthodes suivantes :
| Méthode | Description |
|---|---|
| Watch | Surveille une ou plusieurs clés ; si elles sont modifiées avant la transaction, celle-ci est annulée |
| UnWatch | Annule la surveillance de toutes les clés |
| AcquireLock | Acquiert un verrou sur une clé pour empêcher les accès concurrents |
| CreateTransaction | Crée une transaction et retourne un objet IRedisTransaction |
| CreateSubscription | Crée un abonnement et retourne un objet IRedisSubscription |
| CreatePipeline | Crée un pipeline et retourne un objet IRedisPipeline |