Recherche…


Introduction

L'espace de clés Redis peut être considéré comme une table de hachage ou des clés de mappage de dictionnaire pour les structures de données de la base de données.

Redis fournit un large éventail de commandes qui fonctionnent avec des clés pour gérer l'espace de clés, y compris la possibilité de supprimer des clés, d'inspecter les métadonnées des clés, de rechercher des clés et de modifier certaines propriétés des clés.

Syntaxe

  • Motif de touches
  • Clé PERSIST
  • EXPIRE clé secondes
  • Horodatage de la clé EXPIREAT
  • Clé TTL
  • Clé millisecondes PEXPIRE
  • Clé PEXPIREAT millisecondes-horodatage
  • Clé PTTL
  • Clé UNLINK [clé ...]
  • Touche DEL [touche ...]
  • Curseur SCAN [motif MATCH] [compte COUNT]

Remarques

Pour les caractères valides dans les clés Redis , le manuel explique cela complètement :

Les clés Redis sont sécurisées en binaire, cela signifie que vous pouvez utiliser n'importe quelle séquence binaire en tant que clé, d'une chaîne telle que "foo" au contenu d'un fichier JPEG. La chaîne vide est également une clé valide.

Quelques autres règles concernant les clés:

Les clés très longues ne sont pas une bonne idée, par exemple une clé de 1024 octets est une mauvaise idée non seulement du point de vue de la mémoire, mais aussi parce que la recherche de la clé dans le jeu de données peut nécessiter plusieurs comparaisons de clés coûteuses. Même lorsque la tâche à accomplir consiste à faire coïncider l'existence d'une valeur élevée, le recours au hachage (par exemple avec SHA1) est une meilleure idée, en particulier du point de vue de la mémoire et de la bande passante.

Les clés très courtes ne sont souvent pas une bonne idée. Il est inutile d'écrire "u1000flw" comme clé si vous pouvez écrire "user: 1000: followers". Ce dernier est plus lisible et l'espace ajouté est mineur par rapport à l'espace utilisé par l'objet-clé lui-même et l'objet de valeur. Bien que les touches courtes consomment évidemment un peu moins de mémoire, votre travail consiste à trouver le bon équilibre.

Essayez de vous en tenir à un schéma. Par exemple, "object-type: id" est une bonne idée, comme dans "user: 1000". Les points ou les tirets sont souvent utilisés pour les champs à plusieurs mots, comme dans "comment: 1234: reply.to" ou "comment: 1234: reply-to".

La taille de clé maximale autorisée est de 512 Mo.

Soyez prudent lorsque vous utilisez la commande KEYS sur un système de production, cela peut entraîner de sérieux problèmes de performances. Si vous devez effectuer une recherche sur l'espace de clés, les commandes SCAN constituent une meilleure alternative.

Touches valides

Les clés Redis sont sécurisées par des binaires, de sorte que tout peut littéralement être utilisé comme clé. Les seules limites sont qu’elles doivent être inférieures à 512 Mo.

Exemples de clés valides:

7
++++
`~!@#$%^&*()-_=+
user:10134
search/9947372/?query=this%20is%20a%28test%29%20query
<div id="div64">

Any other string less than 512MB in size.
The raw binary content of an image or other binary file.
An entire multi-line text document.
An entire SQL query.
Any integer, hexadecimal, octal, or binary value.
Anything else you can think of less than 512MB in size. 

Clés Redis non valides:

Anything larger than 512MB.

Schémas de nommage

Pour plus de clarté et de facilité de maintenance, il est souvent recommandé de développer un système ou un schéma permettant de nommer vos clés Redis. Voici quelques exemples de systèmes courants et maintenables pour nommer vos clés:

user:10134
user:10134:favorites
user:10134:friends
user:10134:friends-of-friends

user:10134
user:10134/favorites
user:10134/friends
user:10134/friends.of.friends

user/10134
user/10134/favorites
user/10134/friends
user/10134/friends of friends

Notez que, bien qu'autorisées, les touches plus grandes utilisent plus de mémoire et ralentissent les temps de recherche. L'utilisation d'une clé de 500 Mo n'est donc peut-être pas une bonne idée de performance. Une meilleure idée pourrait être d'utiliser un hachage SHA-1, SHA-256 ou MD5 d'un objet binaire volumineux en tant que clé à la place:

image/9517bb726d33efdc503a43582e6ea2eea309482b
image52e9df0577fca2ce022d4e8c86b1eccb070d37bef09dec36df2fabbfa7711f5c

Liste de toutes les clés

Vous pouvez répertorier toutes les clés d'une base de données Redis en exécutant les commandes suivantes à partir de redis-cli:

KEYS *

Le paramètre de KEYS est une expression de correspondance de modèle de style glob. Voici des exemples de motifs supposés:

h?llo matches hello, hallo and hxllo
h*llo matches hllo and heeeello
h[ae]llo matches hello and hallo, but not hillo
h[^e]llo matches hallo, hbllo, ... but not hello
h[a-b]llo matches hallo and hbllo

L'utilisation de la commande KEYS * peut avoir des effets néfastes sur les performances. Elle n'est donc pas recommandée contre les instances de production. Utilisez l'opération SCAN pour rechercher des clés dans le code de production.

TTL et expiration des clés

Les valeurs d'expiration d'une clé peuvent être gérées par un utilisateur en dehors des commandes de mise à jour. Redis permet à un utilisateur de déterminer l’heure actuelle de vie (TTL) d’une clé à l’aide de la commande TTL:

TTL key

Cette commande retournera la durée de vie d'une clé en secondes ou renverra les valeurs spéciales -1 ou -2. Un -1 indique que la clé est persistante (n'expire pas) et un -2 indique que la clé n'existe pas.

Une clé qui expire peut être rendue persistante à l'aide de la commande PERSIST:

PERSIST KEY

et une clé persistante peut être faite pour expirer en utilisant la commande EXPIRE:

EXPIRE KEY seconds

Expire peut également être utilisé pour modifier la durée de vie d'une clé existante. Vous pouvez également utiliser la commande EXPIREAT avec un horodatage UNIX pour définir une heure d'expiration.

Il existe des versions millisecondes des commandes TTL, EXPIRE et EXPIREAT qui sont préfixées par un P.

Suppression de clés

Redis fournit deux fonctions pour supprimer des clés de la base de données: del et unlink.

La fonction del supprime une ou plusieurs clés de la base de données. La commande del provoque Redis pour récupérer immédiatement la mémoire pour la clé supprimée sur le thread d'exécution en cours. Le temps d'exécution pour del est proportionnel au nombre d'éléments individuels supprimés de toutes les clés.

La fonction unlink agit comme la commande del, elle supprime une ou plusieurs clés de la base de données. Cependant, contrairement à la commande del, toute mémoire utilisée par ces clés est récupérée de manière asynchrone sur un autre thread.

Numérisation du Redis Keyspace

Redis fournit la commande SCAN pour parcourir les clés de la base de données correspondant à un modèle particulier. Redis prend en charge la correspondance des modèles de style glob dans la commande SCAN.

La commande SCAN fournit un itérateur à base de curseur sur l'espace de clés Redis. La séquence d’appel itérative de SCAN commence par un appel de l’utilisateur avec l’argument curseur positionné sur 0. Le résultat de cet appel est un lot d’articles et un curseur mis à jour qui est fourni au prochain appel à SCAN. Cette itération continue jusqu'à ce que Redis renvoie un curseur 0.

La fonction Python suivante illustre l'utilisation de base de SCAN:

def scan_keys(r, pattern):
    "Returns a list of all the keys matching a given pattern"

    result = []
    cur, keys  = r.scan(cursor=0, match=pattern, count=2)
    result.extend(keys)
    while cur != 0:
        cur, keys = r.scan(cursor=cur, match=pattern, count=2)
        result.extend(keys)
        
    return result

La commande SCAN est la méthode recommandée pour rechercher des clés dans la base de données et est recommandée par rapport à la commande KEYS * .



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow