Tous les produits
Search
Centre de documentation

Tair (Redis® OSS-Compatible):Cpc

Dernière mise à jour :Aug 08, 2026

TairCpc est une structure de données fondée sur le sketch CPC (Compressed Probability Counting). Elle offre une estimation de la cardinalité d'une grande précision tout en consommant nettement moins de mémoire que HyperLogLog (HLL), ce qui la rend idéale pour la déduplication en temps réel des flux de données à haut débit.

Contexte

Les systèmes décisionnels en temps réel traitent les événements métier dès leur arrivée, stockent les résultats pour un accès rapide et appliquent des règles pour agir immédiatement. Le comptage de cardinalité à faible latence y est crucial, notamment dans les cas suivants :

  • Prévention de la fraude par carte bancaire : Déterminez si une carte est utilisée dans un contexte suspect et bloquez les transactions douteuses au plus tôt.

  • Lutte contre la revente abusive de billets : Détectez et bloquez les bots utilisant des dispositifs virtuels et de fausses adresses IP avant qu'ils n'acquièrent du stock.

TairCpc vous permet de dédupliquer les données entrantes par dimension, de stocker le sketch dans une instance Tair et d'exécuter des requêtes d'agrégation en quelques nanosecondes, combinant ainsi stockage et calcul au sein d'une même couche.

Vue d'ensemble

CPC compte les valeurs distinctes dans un flux de données et prend en charge la fusion de plusieurs sketches pour obtenir un total combiné. Par rapport à HLL, CPC atteint la même précision avec environ 40 % de mémoire en moins.

TairCpc étend l'implémentation open source de CPC et réduit le taux d'erreur à 0,008 %, contre 0,67 % pour CPC standard et 1,95 % pour HLL.

Considérez TairCpc comme une alternative économe en mémoire à un ensemble (Set) pour le comptage d'éléments uniques :

Opération Équivalent Set Équivalent TairCpc
Ajouter un élément SADD key item CPC.UPDATE key item
Compter les éléments uniques SCARD key CPC.ESTIMATE key

Contrairement à un ensemble, TairCpc ne stocke pas les éléments bruts ; il conserve un sketch compact qui approxime le nombre d'éléments. Ce compromis permet une agrégation infra-milliseconde à très grande échelle.

Fonctionnalités clés

  • Faible empreinte mémoire grâce aux lectures et écritures incrémentielles, et aux E/S minimales

  • Déduplication haute performance et ultra-précise

  • Taux d'erreur réduit à 0,008 % (contre 0,67 % pour CPC open source et 1,95 % pour HLL)

Cas d'utilisation

  • Systèmes de sécurité bancaire : Combien de comptes ou d'appareils distincts ont effectué une action donnée au cours de la dernière minute ?

  • Ventes flash : Combien d'utilisateurs uniques ont tenté d'acheter cet article durant la fenêtre temporelle actuelle ?

  • Lutte contre la revente abusive de billets : Combien d'adresses IP distinctes ont envoyé des requêtes depuis cette session au cours des 10 dernières secondes ?

Prérequis

Avant de commencer, vérifiez que votre instance appartient à l'une des séries Tair suivantes :

Maintenez votre instance à jour avec la dernière version mineure pour bénéficier du maximum de fonctionnalités et d'une stabilité optimale. Pour les instructions de mise à niveau, consultez Mettre à jour la version mineure d'une instance . Pour les instances en cluster et les instances avec séparation lecture/écriture, mettez également à jour les nœuds proxy vers la dernière version mineure afin que toutes les commandes s'exécutent correctement.

Notes d'utilisation

Les données TairCpc sont stockées sur une instance Tair.

Commandes prises en charge

Commande Syntaxe Description
CPC.UPDATE `CPC.UPDATE key item [EX EXAT

PX

PXAT time]`

Ajoute un élément à une clé. Crée la clé si elle n'existe pas. Aucune opération si l'élément existe déjà.

CPC.ESTIMATE CPC.ESTIMATE key Renvoie l'estimation de la cardinalité dédupliquée pour une clé sous forme de DOUBLE.
CPC.UPDATE2EST `CPC.UPDATE2EST key item [EX EXAT

PX

PXAT time]`

Ajoute un élément et renvoie l'estimation DOUBLE mise à jour. Crée la clé si elle n'existe pas.

CPC.UPDATE2JUD `CPC.UPDATE2JUD key item [EX EXAT

PX

PXAT time]`

Ajoute un élément et renvoie l'estimation mise à jour ainsi que la différence. Utilisez la différence pour détecter les doublons : 1 = nouvel élément, 0 = doublon.

CPC.ARRAY.UPDATE `CPC.ARRAY.UPDATE key timestamp item [EX EXAT

PX

PXAT time] [SIZE size] [WIN window_length]`

Ajoute un élément à la fenêtre temporelle correspondant à l'horodatage donné.

CPC.ARRAY.ESTIMATE CPC.ARRAY.ESTIMATE key timestamp Renvoie l'estimation de la cardinalité pour la fenêtre temporelle correspondant à l'horodatage donné.
CPC.ARRAY.ESTIMATE.RANGE CPC.ARRAY.ESTIMATE.RANGE key start_time end_time Renvoie les estimations de cardinalité par fenêtre sur une plage temporelle (intervalle fermé).
CPC.ARRAY.ESTIMATE.RANGE.MERGE CPC.ARRAY.ESTIMATE.RANGE.MERGE key timestamp range Renvoie l'estimation fusionnée et dédupliquée à partir d'un horodatage et couvrant N fenêtres temporelles en arrière.
CPC.ARRAY.UPDATE2EST `CPC.ARRAY.UPDATE2EST key timestamp item [EX EXAT

PX

PXAT time] [SIZE size] [WIN window_length]`

Ajoute un élément à une fenêtre temporelle et renvoie l'estimation mise à jour pour cette fenêtre.

CPC.ARRAY.UPDATE2JUD `CPC.ARRAY.UPDATE2JUD key timestamp item [EX EXAT

PX

PXAT time] [SIZE size] [WIN window_length]`

Ajoute un élément à une fenêtre temporelle et renvoie l'estimation mise à jour ainsi que la différence pour cette fenêtre.

DEL DEL key [key ...] Supprime une ou plusieurs clés TairCpc.

Conventions de syntaxe

  • MAJUSCULES : mot-clé de commande

  • _italique_ : variable

  • [option] : paramètre facultatif

  • A|B : options mutuellement exclusives — spécifiez-en une seule

  • ... : le paramètre précédent peut être répété

CPC.UPDATE

Ajoute un élément à une clé TairCpc. Crée la clé si elle n'existe pas. Si l'élément existe déjà, la commande n'a aucun effet.

Syntaxe

CPC.UPDATE key item [EX|EXAT|PX|PXAT time]

Complexité temporelle O(1)

Paramètres

Paramètre Description
key La clé TairCpc à mettre à jour.
item L'élément à ajouter.
EX time Durée d'expiration relative en secondes. La clé n'expire pas si ce paramètre est omis.
EXAT time Heure d'expiration absolue sous forme d'horodatage UNIX en secondes. La clé n'expire pas si ce paramètre est omis.
PX time Durée d'expiration relative en millisecondes. La clé n'expire pas si ce paramètre est omis.
PXAT time Heure d'expiration absolue sous forme d'horodatage UNIX en millisecondes. La clé n'expire pas si ce paramètre est omis.

Valeur de retour

  • OK en cas de succès.

  • Un message d'erreur dans le cas contraire.

Exemple

CPC.UPDATE foo f1 EX 3600
OK

CPC.ESTIMATE

Renvoie l'estimation de la cardinalité d'une clé TairCpc après déduplication. La valeur de retour est de type DOUBLE ; arrondissez-la à l'entier le plus proche pour obtenir un compte utilisable.

Syntaxe

CPC.ESTIMATE key

Complexité temporelle : O(1)

Paramètres

Paramètre Description
key La clé TairCpc à interroger.

Valeur de retour

  • L'estimation de la cardinalité de type DOUBLE en cas de succès.

  • Un message d'erreur dans le cas contraire.

Exemple

CPC.ESTIMATE foo
"19.000027716212127"

CPC.UPDATE2EST

Ajoute un élément à une clé TairCpc et renvoie l'estimation de la cardinalité mise à jour en un seul aller-retour. Crée la clé si elle n'existe pas.

Syntaxe

CPC.UPDATE2EST key item [EX|EXAT|PX|PXAT time]

Complexité temporelle : O(1)

Paramètres

Paramètre Description
key La clé TairCpc à mettre à jour.
item L'élément à ajouter.
EX time Durée d'expiration relative en secondes. La clé n'expire pas si ce paramètre est omis.
EXAT time Heure d'expiration absolue sous forme d'horodatage UNIX en secondes. La clé n'expire pas si ce paramètre est omis.
PX time Durée d'expiration relative en millisecondes. La clé n'expire pas si ce paramètre est omis.
PXAT time Heure d'expiration absolue sous forme d'horodatage UNIX en millisecondes. La clé n'expire pas si ce paramètre est omis.

Valeur de retour

  • L'estimation de la cardinalité de type DOUBLE après la mise à jour en cas de succès.

  • Un message d'erreur dans le cas contraire.

Exemple

CPC.UPDATE2EST foo f3
"3.0000004768373003"

CPC.UPDATE2JUD

Ajoute un élément à une clé TairCpc et renvoie à la fois l'estimation de la cardinalité mise à jour et la différence par rapport à l'estimation précédente. Utilisez cette différence pour déterminer si l'élément était nouveau ou existait déjà, sans avoir besoin d'une commande de lecture séparée.

  • Si la différence renvoyée est 1, l'élément était nouveau (aucun doublon).

  • Si la différence renvoyée est 0, l'élément existait déjà (doublon détecté).

Crée la clé si elle n'existe pas.

Syntaxe

CPC.UPDATE2JUD key item [EX|EXAT|PX|PXAT time]

Complexité temporelle : O(1)

Paramètres

Paramètre Description
key La clé TairCpc à mettre à jour.
item L'élément à ajouter.
EX time Durée d'expiration relative en secondes. La clé n'expire pas si ce paramètre est omis.
EXAT time Heure d'expiration absolue sous forme d'horodatage UNIX en secondes. La clé n'expire pas si ce paramètre est omis.
PX time Durée d'expiration relative en millisecondes. La clé n'expire pas si ce paramètre est omis.
PXAT time Heure d'expiration absolue sous forme d'horodatage UNIX en millisecondes. La clé n'expire pas si ce paramètre est omis.

Valeur de retour

  • En cas de succès : deux valeurs DOUBLE — la nouvelle estimation de la cardinalité, puis la différence entre les nouvelles et précédentes estimations.

  • Un message d'erreur dans le cas contraire.

Exemple

CPC.UPDATE2JUD foo f20
1) "20.000027716212127"    // New cardinality estimate: 20
2) "1.0000014901183398"    // Difference: 20 - 19 = 1 (new item)

CPC.ARRAY.UPDATE

Ajoute un élément à une clé de tableau TairCpc dans la fenêtre temporelle dans laquelle tombe l'horodatage donné. Crée la clé si elle n'existe pas.

Une clé de tableau TairCpc maintient une fenêtre glissante de sketches CPC. Chaque appel écrit les données dans la fenêtre temporelle correspondant à l'horodatage. La plage temporelle totale observable est de SIZE × WIN millisecondes. Les données en dehors de cette plage sont écrasées à mesure que de nouvelles données arrivent.

SIZE et WIN ne s'appliquent que lors de la première création de la clé. Les écritures ultérieures sur la même clé utilisent les valeurs définies au moment de la création.

Exemple : Pour suivre les événements uniques par minute au cours des 10 dernières minutes, définissez SIZE sur 10 et WIN sur 60000. Lorsque les données de la 11e minute arrivent, les données de la première minute sont écrasées.

Syntaxe

CPC.ARRAY.UPDATE key timestamp item [EX|EXAT|PX|PXAT time] [SIZE size] [WIN window_length]

Complexité temporelle : O(1)

Paramètres

Paramètre Description
key La clé de tableau TairCpc à mettre à jour.
timestamp Horodatage UNIX en millisecondes indiquant la fenêtre temporelle dans laquelle écrire.
item L'élément à ajouter.
EX time Durée d'expiration relative en secondes. La clé n'expire pas si ce paramètre est omis.
EXAT time Heure d'expiration absolue sous forme d'horodatage UNIX en secondes. La clé n'expire pas si ce paramètre est omis.
PX time Durée d'expiration relative en millisecondes. La clé n'expire pas si ce paramètre est omis.
PXAT time Heure d'expiration absolue sous forme d'horodatage UNIX en millisecondes. La clé n'expire pas si ce paramètre est omis.
SIZE size Nombre de fenêtres temporelles. Valeur par défaut : 10. Plage valide : 1–1000. Maintenez cette valeur inférieure à 120 pour les charges de travail typiques.
WIN window_length Durée de chaque fenêtre temporelle en millisecondes. Valeur par défaut : 60000 (1 minute).

Valeur de retour

  • OK en cas de succès.

  • Un message d'erreur dans le cas contraire.

Exemple

CPC.ARRAY.UPDATE foo 1645584510000 f1 SIZE 120 WIN 10000
OK

CPC.ARRAY.ESTIMATE

Renvoie l'estimation de la cardinalité pour la fenêtre temporelle dans laquelle tombe l'horodatage donné.

Syntaxe

CPC.ARRAY.ESTIMATE key timestamp

Complexité temporelle : O(1)

Paramètres

Paramètre Description
key La clé de tableau TairCpc à interroger.
timestamp Horodatage UNIX en millisecondes identifiant la fenêtre temporelle à interroger.

Valeur de retour

  • L'estimation de la cardinalité pour la fenêtre temporelle correspondante en cas de succès.

  • Un message d'erreur dans le cas contraire.

Exemple

CPC.ARRAY.ESTIMATE foo 1645584532000
"2"

CPC.ARRAY.ESTIMATE.RANGE

Renvoie les estimations de cardinalité par fenêtre pour toutes les fenêtres temporelles comprises dans une plage temporelle spécifiée (intervalle fermé). Chaque valeur de la réponse correspond à une fenêtre temporelle.

Syntaxe

CPC.ARRAY.ESTIMATE.RANGE key start_time end_time

Complexité temporelle : O(1)

Paramètres

Paramètre Description
key La clé de tableau TairCpc à interroger.
start_time Début de la plage temporelle sous forme d'horodatage UNIX en millisecondes.
end_time Fin de la plage temporelle sous forme d'horodatage UNIX en millisecondes.

Valeur de retour

  • Une liste d'estimations de cardinalité, une par fenêtre temporelle dans la plage, en cas de succès.

  • Un message d'erreur dans le cas contraire.

Exemple

CPC.ARRAY.ESTIMATE.RANGE foo 1645584510000 1645584550000
1) "2"
2) "0"
3) "1"
4) "0"
5) "0"

CPC.ARRAY.ESTIMATE.RANGE.MERGE

Renvoie une estimation unique de la cardinalité fusionnée et dédupliquée, en agrégeant N fenêtres temporelles à partir de l'horodatage donné et en remontant le temps.

Utilisez cette commande lorsque vous avez besoin d'un compte unique unifié sur plusieurs fenêtres temporelles — par exemple, le nombre total d'utilisateurs uniques au cours des 5 dernières minutes — plutôt que de comptes par fenêtre.

Syntaxe

CPC.ARRAY.ESTIMATE.RANGE.MERGE key timestamp range

Complexité temporelle : O(1)

Paramètres

Paramètre Description
key La clé de tableau TairCpc à interroger.
timestamp Point de départ de la requête sous forme d'horodatage UNIX en millisecondes.
range Nombre de fenêtres temporelles à fusionner, en comptant à rebours à partir de l'horodatage.

Valeur de retour

  • L'estimation de la cardinalité fusionnée et dédupliquée en cas de succès.

  • Un message d'erreur dans le cas contraire.

Exemple

CPC.ARRAY.ESTIMATE.RANGE.MERGE foo 1645584510000 3
"6"

CPC.ARRAY.UPDATE2EST

Ajoute un élément à la fenêtre temporelle correspondant à l'horodatage donné et renvoie l'estimation de la cardinalité mise à jour pour cette fenêtre en un seul aller-retour. Crée la clé si elle n'existe pas.

Utilise les mêmes paramètres de création de clé que CPC.ARRAY.UPDATE.

Syntaxe

CPC.ARRAY.UPDATE2EST key timestamp item [EX|EXAT|PX|PXAT time] [SIZE size] [WIN window_length]

Complexité temporelle : O(1)

Paramètres

Paramètre Description
key La clé de tableau TairCpc à mettre à jour.
timestamp Horodatage UNIX en millisecondes identifiant la fenêtre temporelle cible.
item L'élément à ajouter.
EX time Durée d'expiration relative en secondes. La clé n'expire pas si ce paramètre est omis.
EXAT time Heure d'expiration absolue sous forme d'horodatage UNIX en secondes. La clé n'expire pas si ce paramètre est omis.
PX time Durée d'expiration relative en millisecondes. La clé n'expire pas si ce paramètre est omis.
PXAT time Heure d'expiration absolue sous forme d'horodatage UNIX en millisecondes. La clé n'expire pas si ce paramètre est omis.
SIZE size Nombre de fenêtres temporelles. Valeur par défaut : 10. Plage valide : 1–1000. Maintenez cette valeur inférieure à 120 pour les charges de travail typiques.
WIN window_length Durée de chaque fenêtre temporelle en millisecondes. Valeur par défaut : 60000 (1 minute).

Valeur de retour

  • L'estimation de la cardinalité de type DOUBLE mise à jour pour la fenêtre temporelle en cas de succès.

  • Un message d'erreur dans le cas contraire.

Exemple

CPC.ARRAY.UPDATE2EST foo 1645584530000 f3
"3"

CPC.ARRAY.UPDATE2JUD

Ajoute un élément à la fenêtre temporelle correspondant à l'horodatage donné et renvoie à la fois l'estimation de la cardinalité mise à jour et la différence par rapport à l'estimation précédente pour cette fenêtre. Crée la clé si elle n'existe pas.

  • Si la différence renvoyée est 1, l'élément était nouveau (aucun doublon dans cette fenêtre).

  • Si la différence renvoyée est 0, l'élément existait déjà dans cette fenêtre.

Utilise les mêmes paramètres de création de clé que CPC.ARRAY.UPDATE.

Syntaxe

CPC.ARRAY.UPDATE2JUD key timestamp item [EX|EXAT|PX|PXAT time] [SIZE size] [WIN window_length]

Complexité temporelle : O(1)

Paramètres

Paramètre Description
key La clé de tableau TairCpc à mettre à jour.
timestamp Horodatage UNIX en millisecondes identifiant la fenêtre temporelle cible.
item L'élément à ajouter.
EX time Durée d'expiration relative en secondes. La clé n'expire pas si ce paramètre est omis.
EXAT time Heure d'expiration absolue sous forme d'horodatage UNIX en secondes. La clé n'expire pas si ce paramètre est omis.
PX time Durée d'expiration relative en millisecondes. La clé n'expire pas si ce paramètre est omis.
PXAT time Heure d'expiration absolue sous forme d'horodatage UNIX en millisecondes. La clé n'expire pas si ce paramètre est omis.
SIZE size Nombre de fenêtres temporelles. Valeur par défaut : 10. Plage valide : 1–1000. Maintenez cette valeur inférieure à 120 pour les charges de travail typiques.
WIN window_length Durée de chaque fenêtre temporelle en millisecondes. Valeur par défaut : 60000 (1 minute).

Valeur de retour

  • En cas de succès : deux valeurs — l'estimation de la cardinalité mise à jour pour la fenêtre temporelle, puis la différence entre les nouvelles et précédentes estimations.

  • Un message d'erreur dans le cas contraire.

Exemple

CPC.ARRAY.UPDATE2JUD foo 1645584530000 f7
1) "8"    // New cardinality estimate for this window: 8
2) "1"    // Difference: 8 - 7 = 1 (new item)