> 데이터 베이스 > Redis > Redis를 사용하여 토큰 저장

Redis를 사용하여 토큰 저장

齐天大圣
풀어 주다: 2020-05-08 10:42:07
원래의
3205명이 탐색했습니다.

WeChat 공개 계정을 개발한 모든 PHP 사용자는 WeChat 인터페이스에 액세스하려면 access_token이 필요하다는 것을 알고 있다고 생각합니다. access_token은 공식 계정의 자격 증명을 호출하는 전역적으로 고유한 인터페이스입니다. 이 access_token은 하루에 얻을 수 있는 횟수에 제한이 있으므로 직접 저장해야 합니다. 또한 이 토큰에도 유효기간이 있습니다. 그러므로 정기적으로 새로고침을 해서 access_token을 다시 얻어야 합니다.

어떻게 저장하나요? mysql을 사용하면 하나의 테이블에 단 하나의 데이터만 저장되는데, 이는 과도하고 우아하지 않은 느낌을 줍니다. 파일을 사용하여 저장하는 경우 성능이 그다지 좋지 않으며 여전히 더티 읽기 문제를 고려해야 합니다.

이제 Redis를 사용하여 토큰을 저장하는 간단하고 우아하며 고성능의 방법을 소개하겠습니다.

두 가지 명령

Redis에는 다양한 데이터 유형이 있습니다. 여기서는 필요한 기능을 완료하려면 가장 간단한 데이터 유형 문자열 아래에 2개의 간단한 명령만 있으면 됩니다.

  • set

  • get

이 두 명령은 매우 간단합니다. Set은 키에 대한 문자열을 설정하는 것입니다.

$redis->set('name', 'monkeyking');
로그인 후 복사

위 내용은 키 이름 값이 Monkeyking으로 설정되어 있음을 나타냅니다. 또한 키의 만료 시간을 설정할 수 있습니다. 유효기간을 설정할 수 있어서 매우 편리합니다.

$redis->set('name', 'monkeyking', ['ex' => 100]);
# 过期时间设置为100秒后
로그인 후 복사

get 명령은 문자열을 가져오는 것입니다. 다음 코드는 키 이름의 값을 가져오는 것을 의미합니다.

$redis->get('name');
로그인 후 복사

redis를 사용하면 좋은 성능 외에도 아주 좋은 점이 있습니다. 단일 스레드 아키텍처이므로 모든 명령이 순서대로 실행됩니다. 이전 명령이 실행된 후 다음 명령이 실행되므로 더티 읽기가 발생하지 않습니다.

함수 구현

set 및 get을 도입한 후 요구사항을 완료할 수 있습니다.

access_token을 얻기 위한 WeChat의 인터페이스, 반환되는 데이터 형식은 다음과 같습니다:

{"access_token":"xEaew2sI2dsAd","expires_in":7200}

xEaew2sI2dsAd를 저장하고 만료 시간을 설정하기만 하면 됩니다.

코드는 다음과 같습니다.

function setAccessToken ($token) {
    return $redis->set(
        'wx_access_token', 
        $token, 
        ['ex'=>7000]
    );
}

function getAccessToken ()
{
    return $redis->get('wx_access_token')
}
로그인 후 복사

위에 주의사항이 있는데 만료 시간은 7200보다 작게 설정해야 합니다. 정확히 7200초에 토큰을 받고, 위챗에서 인터페이스를 호출하는 등 극단적인 상황을 방지하세요. 인터페이스 호출에도 시간이 걸리므로 토큰이 만료되어 오류가 발생합니다.

Redis를 사용하여 토큰에 액세스하는 것은 매우 간단하고 편리합니다! 누구나 시도해 볼 수 있습니다.

위 내용은 Redis를 사용하여 토큰 저장의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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