Tair (compatible avec Redis OSS) propose un ensemble de commandes internes destinées aux instances en cluster et aux instances à séparation lecture/écriture connectées en mode proxy. Ces commandes permettent de cibler directement des shards de données spécifiques, une fonctionnalité que les commandes standard Redis INFO, SCAN et MONITOR ne peuvent pas offrir dans un environnement multi-shards avec proxy.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Une instance Tair en cluster ou à séparation lecture/écriture connectée en mode proxy
Conventions syntaxiques
| Notation | Signification | |
|---|---|---|
MAJUSCULES |
Mot-clé de commande | |
_italique_ |
Variable — remplacez par une valeur réelle | |
[option] |
Paramètre facultatif ; les paramètres sans crochets sont obligatoires | |
`A\ |
B` |
Paramètres mutuellement exclusifs — spécifiez-en un seul |
... |
Le paramètre précédent peut être répété |
Commandes
INFO KEY
Syntaxe : INFO KEY _key_
Renvoie le slot de hachage et l'index du shard auxquels une clé est assignée. Utilisez cette commande pour vérifier si plusieurs clés se trouvent sur le même slot, condition requise pour les commandes multi-clés dans les instances en cluster.
L'index de shard renvoyé parINFO KEYidentifie un nœud de shard de données dans une instance en cluster, et non un index de base de données utilisé par la commandeSELECT.
Exemple
INFO KEY foo
Réponse
slot:12182 node_index:0
IINFO
Syntaxe : IINFO _db_idx_ [_section_] [[_section_] ...]
Renvoie les statistiques d'un nœud de shard de données spécifique. Cette commande équivaut à exécuter la commande native Redis INFO sur ce shard.
| Paramètre | Description | Valeurs valides |
|---|---|---|
_db_idx_ |
Index du nœud de shard de données | 0 à (nombre total de shards du cluster) |
_section_ |
(Facultatif) Une ou plusieurs sections INFO à renvoyer | Mêmes sections que pour la commande native INFO |
Exemple
IINFO 1 Server
Réponse
"# Server\r\nredis_version:5.0.13\r\nos:Linux\r\ntcp_port:6379\r\nuptime_in_seconds:547026\r\nuptime_in_days:6\r\nhz:10\r\nlru_clock:4869333\r\n"
RIINFO
Syntaxe : RIINFO _db_idx_ _ro_slave_idx_ [_section_] [[_section_] ...]
Renvoie les statistiques d'un réplica en lecture seule spécifique dans une instance à séparation lecture/écriture. Cette commande équivaut à exécuter la commande native Redis INFO sur ce réplica.
| Paramètre | Description | Valeurs valides |
|---|---|---|
_db_idx_ |
Index du shard principal | Par défaut : 0 |
_ro_slave_idx_ |
Index du réplica en lecture seule | 0 à 5 |
_section_ |
(Facultatif) Une ou plusieurs sections INFO à renvoyer | Mêmes sections que pour la commande native INFO |
Exemple
RIINFO 0 0 Server
Réponse
"# Server\r\nredis_version:5.0.13\r\nos:Linux\r\ntcp_port:6379\r\nuptime_in_seconds:322575\r\nuptime_in_days:3\r\nhz:10\r\nlru_clock:4926418\r\n"
ISCAN
Syntaxe : ISCAN _db_idx_ _cursor_ [MATCH _pattern_] [COUNT _count_]
Exécute une analyse des clés sur un nœud de shard de données spécifique dans une instance en cluster. Cette commande équivaut à la commande native Redis SCAN.
| Paramètre | Description | Valeurs valides |
|---|---|---|
_db_idx_ |
Index du nœud de shard de données | 0 à (nombre total de shards du cluster) |
_cursor_ |
Position du curseur ; utilisez 0 pour démarrer une nouvelle analyse |
Entier ≥ 0 |
MATCH _pattern_ |
(Facultatif) Renvoyer uniquement les clés correspondant au modèle | Modèle de type glob, par exemple user:* |
COUNT _count_ |
(Facultatif) Indication du nombre de clés à analyser par appel | Entier > 0 |
Exemple : analyser toutes les clés du shard 0
ISCAN 0 0
Exemple : filtrer les clés par modèle
ISCAN 0 0 MATCH user:*
Réponse
1) "0"
2) 1) "user:1001"
2) "user:1002"
3) "user:1003"
Exemple : limiter le nombre de clés analysées par appel
ISCAN 0 0 COUNT 3
Réponse
1) "0"
2) 1) "dkjfd"
2) "k"
3) "9z9"
COUNTest une indication, pas une limite stricte. Le nombre réel de clés renvoyées peut différer. Itérez jusqu'à ce que le curseur renvoie"0"pour terminer une analyse complète.
IMONITOR
Syntaxe : IMONITOR _db_idx_
Diffuse en continu toutes les commandes traitées par un nœud de shard de données spécifique dans une instance en cluster. Cette commande équivaut à la commande native Redis MONITOR.
| Paramètre | Description | Valeurs valides |
|---|---|---|
_db_idx_ |
Index du nœud de shard de données (Master) | 0 à (nombre total de shards du cluster) |
Exécutez IMONITOR via Telnet. L'exemple ci-dessous montre une session complète :
$ telnet <host> <port>
Trying <host>...
Connected to <host>.
AUTH <password>
+OK
IMONITOR 0
+OK
+1682652565.538228 [0 127.0.0.1:38618] "info" "all"
+1682652566.538231 [0 127.0.0.1:38618] "info" "all"
QUIT
+OK
Pour arrêter le flux, envoyez QUIT.
RIMONITOR
Syntaxe : RIMONITOR _db_idx_ _ro_slave_idx_
Diffuse en continu toutes les commandes traitées par un réplica en lecture seule spécifique dans une instance à séparation lecture/écriture. Cette commande équivaut à la commande native Redis MONITOR.
| Paramètre | Description | Valeurs valides |
|---|---|---|
_db_idx_ |
Index du shard principal | Par défaut : 0 |
_ro_slave_idx_ |
Index du réplica en lecture seule | 0 à 5 |
Exécutez RIMONITOR via Telnet. L'exemple ci-dessous montre une session complète :
$ telnet <host> <port>
Trying <host>...
Connected to <host>.
AUTH <password>
+OK
RIMONITOR 0 1
+OK
+1682653310.571527 [0 127.0.0.1:59492] "info" "all"
+1682653311.571573 [0 127.0.0.1:59492] "info" "all"
QUIT
+OK
Pour arrêter le flux, envoyez QUIT.