이 기사는 순회 키 및 데이터베이스 관리에 대한 관련 내용을 주로 소개하는 Redis에 대한 관련 지식을 제공합니다. 모두에게 도움이 되기를 바랍니다.
추천 학습: Redis 비디오 튜토리얼
1.1 전체 트래버스 키
때때로 모든 키를 완전히 트래버스해야 하는 경우 키 패턴 명령을 사용해야 합니다. 이 명령은 패턴 일치를 지원합니다.
127.0.0.1:6379> mset name luke neme josh OK
모든 키를 탐색하려면 명령 키를 사용할 수 있습니다. *
127.0.0.1:6379> keys * 1) "name" 2) "neme"
pattern은 glob 스타일 와일드카드를 사용합니다. 여기서
*는 모든 문자를 나타냅니다.
? 문자를 나타냅니다
[]는 문자의 일치하는 부분을 나타냅니다. 예를 들어 [a,b]는 일치하는 두 문자 a와 b를 나타내고, [1-10]은 1에서 10까지의 숫자 일치를 나타냅니다.
x escape 를 나타냅니다. * 문자와 일치해야 할 경우 탈출해야 합니다
다음 작업을 수행할 수 있습니다:
127.0.0.1:6379> keys n[a,e]me 1) "name" 2) "neme"
이 작업도 수행할 수 있습니다
127.0.0.1:6379> keys n?me 1) "name" 2) "neme"
하지만 Redis에 많은 수의 키가 있는 경우 데이터베이스에서는 키가 redis를 차단합니다.
키를 순회해야 하는 경우 어떻게 해야 하나요?
일반적으로 우리의 프로덕션 환경은 다중 노드이므로 데이터를 순회하는 외부 서비스를 제공하지 않는 Redis 슬레이브 노드를 찾을 수 있습니다. 그러나 데이터 양이 많으면 여전히 Redis를 차단하지만 슬레이브 노드의 경우 마스터 및 슬레이브 복사본에만 영향을 미칩니다.
redis에 키가 많지 않다고 확신한다면 직접 실행할 수 있습니다.
1.2 점진적 순회
점진적 순회는 매번 키의 일부를 순회한 다음 돌아와서 다음에 후속 데이터를 계속해서 순회하는 것입니다. 이러한 방식으로 Redis 서비스를 차단하지 않고 모든 데이터를 탐색할 수 있습니다.
scan cursor [MATCH pattern] [COUNT count]
매개변수는 다음과 같이 설명됩니다.
cursor는 필수 매개변수입니다. 다음에 이 커서에서 탐색이 시작될 때 0이 반환된다는 의미입니다. 횡단이 완료되었습니다.
MATCH 패턴은 선택적 매개변수로 키 패턴과 동일합니다.
COUNT 수는 여러 키를 순회하는 것을 의미하며 기본값은 10이며 실제 상황에 따라 증가할 수 있습니다
127.0.0.1:6379> mset a 1 b 1 c 1 d 1 e 1 f 1 g 1 h 1 i 1 g 1 k 1 l 1 m 1 n 1 o 1 p 1 q 1 r 1 s 1 t 1 u 1 v 1 w 1 x 1 y 1 z 1 OK
우리는 scan Traversal을 사용하며 첫 번째 실행은 다음을 반환합니다.
127.0.0.1:6379> scan 0 1) "1" 2) 1) "l" 2) "f" 3) "k" 4) "y" 5) "c" 6) "e" 7) "w" 8) "d" 9) "b" 10) "o" 11) "q"
두 번째는 처음에서 반환된 1을 사용하여 탐색하는 데 사용되며 10개의 키를 탐색할 수 있습니다
127.0.0.1:6379> scan 1 1) "23" 2) 1) "v" 2) "u" 3) "z" 4) "g" 5) "n" 6) "s" 7) "i" 8) "a" 9) "r" 10) "t"
세 번째는 23을 사용하여 탐색하는 데 사용됩니다. 두 번째부터 반환되며, 0이면 순회가 완료된 것입니다
127.0.0.1:6379> scan 23 1) "0" 2) 1) "x" 2) "h" 3) "m" 4) "p"
해시형은 hscan, 세트형은 sscan, 주문형은 zscan이 있으며 사용법은 스캔과 동일합니다.
redis에는 데이터베이스 작업을 위한 여러 명령도 있습니다: dbsize, select, 플러시db/flushall
2.1 데이터베이스 전환, select
select dbIndex dbIndex는 해당 데이터베이스 일련 번호입니다. redis의 기본 구성에서 데이터베이스로 전환할 번호를 선택합니다.
예를 들어 기본 데이터베이스 0번
127.0.0.1:6379> set name luke OK
에 키를 설정한 다음 1번 데이터베이스로 전환하여 키를 가져오지만 키를 얻을 수 없어 Redis 서비스의 데이터베이스는 상호 운용이 불가능함을 나타냅니다.
127.0.0.1:6379> select 1 OK 127.0.0.1:6379[1]> get name (nil)
그럼 다중 Redis로 사용할 수 있는 건가요? 물론 아니죠. 더 많은 라이브러리가 있지만 redis는 단일 스레드이기 때문에 실제로는 여전히 CPU입니다. 데이터베이스의 명령이 매우 느리게 실행되면 다른 라이브러리도 영향을 받게 됩니다. 따라서 이 경우 다른 라이브러리에 의해 차단됩니다. 라이브러리, 특정 라이브러리를 사용하는 개발자의 경우 문제가 무엇인지 분석하기 어려울 수 있습니다.
2.2 플러시all/flushdb
flushall과 플러시db의 차이점은 플러시all은 모든 라이브러리의 모든 데이터를 지우는 반면, 플러시db는 현재 데이터베이스만 지운다는 것입니다.
이해하기 쉽기 때문에 예시는 생략하겠습니다. 하지만 이 두 명령은 모든 데이터를 삭제하며, 오작동의 결과는 재앙이 될 수 있다는 점에 유의하세요. 그리고 키가 너무 많으면 redis도 차단되므로 이 두 명령을 사용할 때는 주의해야 합니다.
추천 학습: Redis 비디오 튜토리얼
위 내용은 Redis 키 순회 및 데이터베이스 관리에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!