PHP 애플리케이션의 Redis 정규식 작업

王林
풀어 주다: 2023-05-16 17:32:01
원래의
880명이 탐색했습니다.

Redis는 문자열, 해시 테이블, 목록, 집합, 순서 집합 등을 포함한 다양한 데이터 구조를 지원하는 고성능 키-값 저장소 시스템입니다. 동시에 Redis는 문자열 데이터에 대한 정규식 일치 및 대체 작업도 지원하므로 PHP 애플리케이션 개발 시 매우 유연하고 편리합니다.

PHP 애플리케이션에서 정규식 작업에 Redis를 사용하려면 먼저 Redis 서버와 통신하기 위한 API를 제공하는 phpredis 확장을 설치해야 합니다. 설치 방법은 터미널에서 다음 명령을 실행하면 됩니다.

pecl install redis
로그인 후 복사

구성이 완료된 후 Redis 서버와 PHP 애플리케이션을 시작한 후 정규식을 사용하여 Redis 데이터베이스를 작동할 수 있습니다. 다음은 Redis에 대한 5가지 정규식 작업입니다.

1. 지정된 패턴과 일치하는 키 가져오기

Redis 명령: KEYS 패턴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 ...]

이 명령은 지정된 패턴과 일치하는 모든 키 이름을 반환할 수 있습니다. 패턴 패턴에는 다음 특수 문자가 포함될 수 있습니다.

  • *: 임의 개수의 문자와 일치
  • ?: 임의의 단일 문자와 일치
  • []: 지정된 문자와 일치 문자 집합

의 모든 문자 예를 들어, 다음 명령을 사용하여 "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에 해당하는 값을 가져옵니다. 지정된 키

Redis 명령: GET key

이 명령은 지정된 키에 해당하는 문자열 값을 반환합니다. 키가 존재하지 않으면 nil을 반환합니다. 예를 들어, 다음 명령을 사용하여 "username"이라는 키 값을 가져올 수 있습니다: 🎜
$redis->eval($script, ['username'], ["/%d+/", '']);
로그인 후 복사
🎜3. 키 값 설정 🎜🎜Redis 명령: SET 키 값 [EX 초] [PX 밀리초] [NX |XX] 🎜🎜이 명령은 지정된 키의 값을 설정하는 데 사용할 수 있습니다. 키가 이미 존재하는 경우 원래 값을 덮어씁니다. 이 중 선택적 매개변수인 second와 milliseconds는 키 값의 만료 시간을 나타내며, 단위는 각각 초와 밀리초이다. NX와 XX는 상호 배타적인 옵션입니다. 키 값을 설정할 때 NX 옵션을 지정하면 해당 키가 없는 경우에만 설정된다는 의미이고, XX 옵션을 지정하면 키가 이미 있는 경우에만 설정된다는 의미입니다. 🎜🎜예를 들어 다음 명령을 사용하면 "username"이라는 키 값을 "redis"로 설정하고 만료 시간을 600초로 설정할 수 있습니다. 🎜rrreee🎜4 지정된 패턴과 일치하는 모든 키 이름 🎜🎜Redis 명령 : SCAN 커서 [MATCH 패턴] [COUNT 개수]🎜🎜이 명령은 데이터베이스의 모든 키 이름을 반복하는 데 사용됩니다. 선택적 매개 변수 패턴 및 개수는 KEYS 명령과 동일하며 사용할 수 있습니다. 지정된 패턴의 키 이름 및 설정과 일치하도록 반환된 키 이름 수입니다. 한 작업에서 너무 많은 키 이름이 반환되는 것을 방지하기 위해 이 명령은 반복 작업을 여러 번 분할하고 각 작업에서 키 이름의 일부를 반환합니다. 각 키 이름은 다음 반복 작업에서 SCAN 명령에 매개변수로 전달될 수 있는 커서와 함께 반환됩니다. 🎜🎜예를 들어 다음 명령을 사용하여 "user"로 시작하는 모든 키 이름을 가져올 수 있습니다: 🎜rrreee🎜5. 문자열 값의 정규식 교체 ​​🎜🎜Redis 명령: EVAL 스크립트 numkeys key [key . ..] arg [arg ...]🎜🎜이 명령은 사용자 정의 Lua 스크립트를 실행할 수 있으며 Lua 스크립트를 통해 문자열 값의 정규식 대체를 실현할 수 있습니다. 그 중 스크립트 매개변수는 Lua 스크립트의 코드이며 키는 하나 이상의 키 이름이 될 수 있습니다. 이러한 키 이름은 Lua 스크립트에서 해당 값을 얻고 수정할 수 있습니다. arg는 다른 매개변수를 Lua 스크립트에 전달하는 데 사용할 수 있는 선택적 매개변수입니다. 🎜🎜다음은 Lua 스크립트를 사용하여 교체 프로세스를 구현하는 예입니다. 🎜rrreee🎜이 스크립트를 사용하면 문자열 값의 특정 내용을 키 이름으로 바꿀 수 있습니다. 스크립트의 패턴 및 대체 매개변수는 각각 정규식 및 대체 문자열을 나타냅니다. string.gsub() 함수를 사용하여 문자열 대체 작업을 수행합니다. 🎜🎜예를 들어 다음 명령을 사용하여 위의 Lua 스크립트를 실행하고 "username"이라는 키 값의 모든 숫자를 ""로 바꿀 수 있습니다. 🎜rrreee

위 내용은 PHP 애플리케이션의 Redis 정규식 작업의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!