Maison >développement back-end >tutoriel php >Opération d'expression régulière Redis dans les applications PHP

Opération d'expression régulière Redis dans les applications PHP

王林
王林original
2023-05-16 17:31:36919parcourir

Redis est un système de stockage clé-valeur hautes performances qui prend en charge une variété de structures de données, notamment des chaînes, des tables de hachage, des listes, des ensembles, des ensembles ordonnés, etc. Dans le même temps, Redis prend également en charge les opérations de correspondance et de remplacement d'expressions régulières sur les données de chaîne, ce qui le rend très flexible et pratique pour le développement d'applications PHP.

Pour utiliser Redis pour les opérations d'expression régulière dans les applications PHP, vous devez d'abord installer l'extension phpredis, qui fournit une API pour communiquer avec le serveur Redis. La méthode d'installation peut être réalisée en exécutant la commande suivante dans le terminal :

pecl install redis

Une fois la configuration terminée, après avoir démarré le serveur Redis et l'application PHP, vous pouvez utiliser des expressions régulières pour faire fonctionner la base de données Redis. Voici cinq opérations d'expression régulière pour Redis.

1. Obtenir les clés qui correspondent au modèle spécifié

Commande Redis : KEYS patternKEYS pattern

该命令可以返回与指定模式匹配的所有键名。其中pattern模式可以包含以下特殊字符:

  • *: 匹配任意数量的字符
  • ?: 匹配任意单个字符
  • []: 匹配指定字符集中的任意一个字符

例如,以下命令可以用于获取所有以“user”开头的key:

$redis->keys('user*');

2. 获取指定键对应的值

Redis命令:GET key

该命令返回指定键所对应的字符串值。如果键不存在,则返回nil。例如,以下命令可以用于获取名为“username”的键的值:

$value = $redis->get('username');

3. 设置键值

Redis命令:SET key value [EX seconds] [PX milliseconds] [NX|XX]

该命令可以用于设置指定键的值。如果键已经存在,则会覆盖原来的值。其中,可选参数seconds和milliseconds表示键值的过期时间,单位分别为秒和毫秒。NX和XX是互斥的选项,在设置键值时指定NX选项表示只在键不存在时才进行设置,而指定XX选项则表示只在键已存在的情况下进行设置。

例如,以下命令可以用于设置名为“username”的键的值为“redis”,过期时间设置为600秒:

$redis->set('username', 'redis', 600);

4. 匹配指定模式的全部键名

Redis命令:SCAN cursor [MATCH pattern] [COUNT count]

该命令用于迭代数据库中的所有键名,可选参数pattern和count与KEYS命令相同,可以用于匹配指定模式的键名和设置返回的键名数量。为了避免在一次操作中返回太多键名,该命令将迭代操作拆分成多次,在每次操作中返回一部分键名。每个键名返回时都会携带一个游标(cursor),此游标可用于在下一个迭代操作中作为参数传递给SCAN命令。

例如,以下命令可以用于获取所有以“user”开头的键名:

$cursor = 0;
$pattern = 'user*';
$keys = [];
do {
    $result = $redis->SCAN($cursor, 'MATCH '.$pattern);
    $cursor = $result[0];
    $keys = array_merge($keys, $result[1]);
} while ($cursor != 0);

5. 正则表达式替换字符串值

Redis命令:EVAL script numkeys key [key ...] arg [arg ...]

Cette commande peut renvoyer tous les noms de clés qui correspondent au modèle spécifié. Le modèle de modèle peut inclure les caractères spéciaux suivants :

  • * : correspond à n'importe quel nombre de caractères
  • ? : correspond à n'importe quel caractère unique
  • [] : correspond au spécifié jeu de caractères N'importe quel caractère de
Par exemple, la commande suivante peut être utilisée pour obtenir toutes les clés commençant par "user":

local key = KEYS[1]
local pattern = ARGV[1]
local replacement = ARGV[2]
redis.call('SET', key, string.gsub(redis.call('GET', key), pattern, replacement))

2. la clé spécifiée

Commande Redis : GET key

Cette commande renvoie la valeur de chaîne correspondant à la clé spécifiée. Si la clé n'existe pas, renvoie zéro. Par exemple, la commande suivante peut être utilisée pour obtenir la valeur d'une clé nommée « nom d'utilisateur » : 🎜
$redis->eval($script, ['username'], ["/%d+/", '']);
🎜3. Définir la valeur de la clé 🎜🎜Commande Redis : SET key value [EX seconds] [PX milliseconds] [NX |XX] 🎜🎜Cette commande peut être utilisée pour définir la valeur de la clé spécifiée. Si la clé existe déjà, la valeur d'origine sera écrasée. Parmi eux, les paramètres facultatifs secondes et millisecondes représentent le délai d'expiration de la valeur clé, et les unités sont respectivement les secondes et les millisecondes. NX et XX sont des options mutuellement exclusives. Spécifier l'option NX lors de la définition d'une valeur de clé signifie qu'elle ne sera définie que si la clé n'existe pas, tandis que spécifier l'option XX signifie qu'elle ne sera définie que si la clé existe déjà. 🎜🎜Par exemple, la commande suivante peut être utilisée pour définir la valeur d'une clé nommée "username" sur "redis" et le délai d'expiration sur 600 secondes : 🎜rrreee🎜4. Tous les noms de clés correspondant au modèle spécifié 🎜🎜Commande Redis. : SCAN Cursor [MATCH pattern] [COUNT count]🎜🎜Cette commande est utilisée pour parcourir tous les noms de clés dans la base de données. Le modèle et le nombre de paramètres facultatifs sont les mêmes que la commande KEYS et peuvent être utilisés. pour correspondre aux noms de clé et aux paramètres du modèle spécifié. Le nombre de noms de clé renvoyés. Afin d'éviter de renvoyer trop de noms de clés en une seule opération, cette commande divise l'opération d'itération en plusieurs fois et renvoie une partie des noms de clés dans chaque opération. Chaque nom de clé est renvoyé avec un curseur, qui peut être transmis en tant que paramètre à la commande SCAN lors de l'opération d'itération suivante. 🎜🎜Par exemple, la commande suivante peut être utilisée pour obtenir tous les noms de clés commençant par "user": 🎜rrreee🎜5. Remplacement par expression régulière des valeurs de chaîne 🎜🎜Commande Redis : EVAL script numkeys key [key . ..] arg [arg ...]🎜🎜Cette commande peut exécuter un script Lua personnalisé et réaliser le remplacement par expression régulière des valeurs de chaîne via le script Lua. Parmi eux, le paramètre script est le code du script Lua, et la clé peut être un ou plusieurs noms de clé. Ces noms de clé peuvent être utilisés dans le script Lua pour obtenir et modifier les valeurs correspondantes. arg est un paramètre facultatif qui peut être utilisé pour transmettre d'autres paramètres au script Lua. 🎜🎜Ce qui suit est un exemple d'utilisation d'un script Lua pour implémenter le processus de remplacement : 🎜rrreee🎜Ce script peut être utilisé pour remplacer un contenu spécifique dans la valeur de chaîne par le nom de la clé. Les paramètres de modèle et de remplacement dans le script représentent respectivement les expressions régulières et les chaînes de remplacement. Utilisez la fonction string.gsub() pour effectuer des opérations de remplacement de chaîne. 🎜🎜Par exemple, la commande suivante peut être utilisée pour exécuter le script Lua ci-dessus et remplacer tous les chiffres de la valeur clé nommée "nom d'utilisateur" par "": 🎜rrreee

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn