Guide Complet des Propriétés et Fonctionnalités de ServiceStack.Redis

  1. 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>
  1. 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

Étiquettes: ServiceStack.Redis Redis CSharp dotnet Caching

Publié le 10 juin à 05h47