느린 로그(Slow log)는 쿼리 실행 시간이 특정 시간을 초과하는 명령 요청을 기록하기 위해 Redis에서 사용하는 로깅 시스템입니다. 쿼리 실행 시간은 클라이언트 응답(대화) 및 응답 전송과 같은 IO 작업을 제외하고 쿼리 명령을 실행하는 데 소요된 시간을 의미합니다. 또한, 느린 로그는 메모리에 저장되며, 읽기 및 쓰기 속도가 매우 빨라 안심하고 사용하실 수 있으며, 느린 로그를 켜도 Redis의 속도가 손상될 염려는 하지 않으셔도 됩니다.
서버 구성에는 느린 쿼리 로그와 관련된 두 가지 옵션이 있습니다.
slowlog-log-slower-than: 이 옵션은 실행 시간이 초과하는 마이크로초 수를 지정합니다(1초는 1,000,000마이크로초) 명령 요청이 로그에 기록됩니다. 예를 들어, 이 옵션의 값이 100이면 실행하는 데 100마이크로초가 넘는 명령이 느린 쿼리 로그에 기록되고, 이 옵션의 값이 500이면 실행하는 데 500마이크로초가 넘는 명령이 기록됩니다. 느린 쿼리 로그에 기록됩니다.
slowlog-max-len 옵션은 서버가 보관하는 느린 쿼리 로그의 최대 개수를 결정하는 데 사용됩니다. 서버는 여러 개의 느린 쿼리 로그를 저장하기 위해 선입선출 방식을 사용합니다. 서버에 저장된 느린 쿼리 로그의 개수가 Slowlog-max-len 옵션의 값과 같을 때 서버는 먼저 해당 로그를 추가합니다. 새로운 느린 쿼리 로그를 추가하기 전 가장 오래된 느린 쿼리 로그는 삭제됩니다. 예를 들어 서버의 Slowlog-max-len 값이 100이고, 서버에 느린 쿼리 로그가 100개 저장되어 있다고 가정할 경우, 서버가 새 로그를 추가하려면 현재 저장된 가장 오래된 로그부터 삭제해야 합니다. .로그를 선택한 다음 새 로그를 추가합니다.
느린 쿼리 로그 기능의 예를 살펴보겠습니다. 먼저 CONFIG_SET 명령을 사용하여 Slowlog-log-slower-than 옵션의 값을 0 마이크로초로 설정하면 Redis 서버에서 실행되는 모든 명령이 기록됩니다. 느린 쿼리 로그에서 Slowlog-max-len 옵션의 값을 5로 설정하면 서버는 최대 5개의 느린 쿼리 로그만 저장할 수 있습니다.
redis> CONFIG SET slowlog-log-slower-than 0 OK redis> CONFIG SET slowlog-max-len 5 OK
그런 다음 클라이언트를 사용하여 여러 명령 요청을 보냅니다. :
redis> SET msg "hello world"OK redis> SET number 10086 OK redis> SET database "Redis"OK
그런 다음 SLOWLOG GET 명령을 사용하여 서버에 저장된 느린 쿼리 로그를 확인합니다.
redis> SLOWLOG GET 1) 1) (integer) 4 #日志的唯一标识符(uid); 2) (integer) 1378781447 #命令执行时的UNIX时间戳; 3) (integer) 13 #命令执行的时长,以微秒计算; 4) 1) "SET" #命令以及命令参数; 2) "database" 3) "Redis"2) 1) (integer) 3 2) (integer) 1378781439 3) (integer) 10 4) 1) "SET" 2) "number" 3) "10086"3) 1) (integer) 2 2) (integer) 1378781436 3) (integer) 18 4) 1) "SET" 2) "msg" 3) "hello world"4) 1) (integer) 1 2) (integer) 1378781425 3) (integer) 11 4) 1) "CONFIG" 2) "SET" 3) "slowlog-max-len" 4) "5"5) 1) (integer) 0 2) (integer) 1378781415 3) (integer) 53 4) 1) "CONFIG" 2) "SET" 3) "slowlog-log-slower-than" 4) "0"
이때 또 다른 SLOWLOG GET 1 명령이 실행되면 마지막으로 실행된 SLOWLOG GET 명령이 에 기록된 것을 볼 수 있습니다. 느린 쿼리 로그와 가장 오래된 숫자 값이 0인 느린 쿼리 로그는 삭제되었으며 서버의 느린 쿼리 로그 개수는 여전히 5개입니다.
redis> SLOWLOG GET 1 1) 1) (integer) 5 2) (integer) 1378781521 3) (integer) 61 4) 1) "SLOWLOG" 2) "GET"
로그의 고유 ID만 재설정됩니다. Redis 서버가 다시 시작되면 로그의 반복 처리를 피할 수 있습니다(예: 새로운 느린 쿼리가 발견될 때마다 알리기 위해 이메일을 보낼 수 있습니다).
현재 로그 수를 보려면 SLOWLOG LEN 명령을 사용하세요.
이 값과 Slow-max-len의 차이점에 유의하세요. 하나는 현재 로그 수이고 다른 하나는 기록할 수 있는 최대 로그 수입니다.
redis> SLOWLOG LEN (integer) 5
느린 로그를 지우려면 SLOWLOG RESET 명령을 사용하세요.
rreee위 내용은 Redis 느린 쿼리 로그를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!