Heim  >  Artikel  >  Backend-Entwicklung  >  Redis-Operation mit regulären Ausdrücken in PHP-Anwendungen

Redis-Operation mit regulären Ausdrücken in PHP-Anwendungen

王林
王林Original
2023-05-16 17:31:36842Durchsuche

Redis ist ein leistungsstarkes Schlüsselwertspeichersystem, das eine Vielzahl von Datenstrukturen unterstützt, darunter Zeichenfolgen, Hash-Tabellen, Listen, Mengen, geordnete Mengen usw. Gleichzeitig unterstützt Redis auch reguläre Ausdrucksabgleichs- und Ersetzungsvorgänge für String-Daten, was es äußerst flexibel und bequem bei der Entwicklung von PHP-Anwendungen macht.

Um Redis für reguläre Ausdrucksoperationen in PHP-Anwendungen zu verwenden, müssen Sie zuerst die phpredis-Erweiterung installieren, die eine API für die Kommunikation mit dem Redis-Server bereitstellt. Die Installationsmethode kann durch Ausführen des folgenden Befehls im Terminal erreicht werden:

pecl install redis

Nachdem die Konfiguration abgeschlossen ist, können Sie nach dem Starten des Redis-Servers und der PHP-Anwendung reguläre Ausdrücke verwenden, um die Redis-Datenbank zu betreiben. Im Folgenden sind fünf reguläre Ausdrucksoperationen für Redis aufgeführt.

1. Schlüssel abrufen, die dem angegebenen Muster entsprechen. Redis-Befehl: KEYS-Muster. Dieser Befehl kann alle Schlüsselnamen zurückgeben, die dem angegebenen Muster entsprechen. Das Mustermuster kann die folgenden Sonderzeichen enthalten:

  • *: Entspricht einer beliebigen Anzahl von Zeichen
  • ?: Entspricht einem beliebigen einzelnen Zeichen
  • []: Entspricht dem angegebenen Zeichensatz Beliebiges Zeichen von

Der folgende Befehl kann beispielsweise verwendet werden, um alle Schlüssel abzurufen, die mit „user“ beginnen:KEYS 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 ...]

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 der angegebene Schlüssel

Redis-Befehl: GET key

Dieser Befehl gibt den Zeichenfolgenwert zurück, der dem angegebenen Schlüssel entspricht. Wenn der Schlüssel nicht existiert, wird Null zurückgegeben. Beispielsweise kann der folgende Befehl verwendet werden, um den Wert eines Schlüssels mit dem Namen „Benutzername“ abzurufen:

$redis->eval($script, ['username'], ["/%d+/", '']);

3 Set key value

Redis-Befehl: SET key value [EX seconds] [PX milliseconds] [NX |XX] 🎜🎜Mit diesem Befehl kann der Wert des angegebenen Schlüssels festgelegt werden. Wenn der Schlüssel bereits vorhanden ist, wird der ursprüngliche Wert überschrieben. Unter diesen stellen die optionalen Parameter Sekunden und Millisekunden die Ablaufzeit des Schlüsselwerts dar, und die Einheiten sind Sekunden bzw. Millisekunden. NX und XX sind sich gegenseitig ausschließende Optionen. Wenn Sie den Schlüsselwert festlegen, bedeutet die Angabe der NX-Option, dass er nur dann festgelegt wird, wenn der Schlüssel nicht vorhanden ist, während die Angabe der XX-Option bedeutet, dass er nur festgelegt wird, wenn der Schlüssel bereits vorhanden ist. 🎜🎜Zum Beispiel kann der folgende Befehl verwendet werden, um den Wert eines Schlüssels mit dem Namen „Benutzername“ auf „Redis“ und die Ablaufzeit auf 600 Sekunden zu setzen: 🎜rrreee🎜4. Alle Schlüsselnamen entsprechen dem angegebenen Muster 🎜🎜Redis-Befehl : SCAN-Cursor [MATCH-Muster] [COUNT-Anzahl]🎜🎜Dieser Befehl wird verwendet, um alle Schlüsselnamen in der Datenbank zu iterieren. Die optionalen Parameter Muster und Anzahl sind die gleichen wie beim Befehl KEYS und können verwendet werden um die Schlüsselnamen und Einstellungen des angegebenen Musters abzugleichen. Die Anzahl der zurückgegebenen Schlüsselnamen. Um zu vermeiden, dass in einer Operation zu viele Schlüsselnamen zurückgegeben werden, teilt dieser Befehl die Iterationsoperation in mehrere Male auf und gibt in jeder Operation einen Teil der Schlüsselnamen zurück. Jeder Schlüsselname wird mit einem Cursor zurückgegeben, der im nächsten Iterationsvorgang als Parameter an den SCAN-Befehl übergeben werden kann. 🎜🎜Zum Beispiel kann der folgende Befehl verwendet werden, um alle Schlüsselnamen abzurufen, die mit „user“ beginnen: 🎜rrreee🎜5. Ersetzung von Zeichenfolgenwerten durch reguläre Ausdrücke 🎜🎜Redis-Befehl: EVAL script numkeys key [key . ..] arg [arg ...]🎜🎜Dieser Befehl kann ein benutzerdefiniertes Lua-Skript ausführen und die Ersetzung von Zeichenfolgenwerten durch reguläre Ausdrücke durch ein Lua-Skript realisieren. Unter diesen ist der Skriptparameter der Code des Lua-Skripts, und der Schlüssel kann ein oder mehrere Schlüsselnamen sein. Diese Schlüsselnamen können im Lua-Skript verwendet werden, um die entsprechenden Werte abzurufen und zu ändern. arg ist ein optionaler Parameter, der verwendet werden kann, um andere Parameter an das Lua-Skript zu übergeben. 🎜🎜Das Folgende ist ein Beispiel für die Verwendung eines Lua-Skripts zur Implementierung des Ersetzungsprozesses: 🎜rrreee🎜Dieses Skript kann verwendet werden, um bestimmte Inhalte im Zeichenfolgenwert durch den Schlüsselnamen zu ersetzen. Die Muster- und Ersetzungsparameter im Skript stellen reguläre Ausdrücke bzw. Ersetzungszeichenfolgen dar. Verwenden Sie die Funktion string.gsub(), um Zeichenfolgenersetzungsvorgänge durchzuführen. 🎜🎜Zum Beispiel kann der folgende Befehl verwendet werden, um das obige Lua-Skript auszuführen und alle Zahlen im Schlüsselwert namens „Benutzername“ durch „“ zu ersetzen: 🎜rrreee

Das obige ist der detaillierte Inhalt vonRedis-Operation mit regulären Ausdrücken in PHP-Anwendungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn