>  기사  >  데이터 베이스  >  Redis 문자열 유형의 여러 응용 프로그램

Redis 문자열 유형의 여러 응용 프로그램

齐天大圣
齐天大圣원래의
2020-05-11 10:00:431396검색

Redis의 문자열 데이터 유형은 가장 간단한 데이터 유형이지만 다른 Redis 데이터 유형을 학습하는 기초이기도 합니다. 다음은 Redis의 여러 응용 프로그램을 소개합니다.

Current 제한

redis를 사용하면 전류 제한 역할을 수행할 수 있습니다. Redis 자체는 성능이 매우 뛰어나며 일부 요청을 견디는 데 사용할 수 있습니다.

대규모 트래픽 방어

요즘 웹사이트 공격이 점점 더 만연해지고 있는 상황에서 CDN으로 정적 리소스를 보호할 수 있는데 동적 프로그램을 어떻게 방어할 수 있을까요? 아래에서는 수많은 요청을 방어할 수 있는 Redis 솔루션을 보여줍니다.

기본 아이디어는 특정 기간 내에 IP 요청 수를 제한하는 것입니다. 예를 들어 IP 요청 수는 초당 10회를 초과할 수 없습니다.

의사 코드는 다음과 같습니다.

function ip_limit($cnt = 10)
{
    $ip = $_SERVER['SERVER_ADDR'];
    $key = "limit:$ip:cnt";
    $isExisit = $redis->set($key, 1, ['nx', 'ex'=>1]);
    
    if (!$isExisit || $redis->incr($key) <= $cnt) {
        // 通过
        return true;
    } else {
        // 不通过
        return false;
    }
}

인증 코드 획득 빈도 제한

SMS 인증 코드는 이제 웹 애플리케이션의 표준이 되었으며, 많은 곳에서 SMS 인증 코드가 필요합니다. 예를 들어, 등록, 비밀번호 변경, 더 높은 보안 요구 사항이 필요한 일부 작업 등이 있습니다. 물론 인증 코드를 받는 것은 무료가 아니므로 사용자가 인증 코드를 무제한으로 얻는 것은 원하지 않습니다.

같은 아이디어로 SMS 인증 코드 수신 빈도를 제한하는 애플리케이션을 작성할 수 있습니다.

1분 내에 인증 코드를 한 번만 받을 수 있는 신청서를 작성하세요. 의사 코드는 다음과 같습니다.

function code_limit($mobile, $time = 60)
{
    $key = "limit:$mobile:cnt";
    $isExisit = $redis->set($key, 1, [&#39;nx&#39;, &#39;ex&#39;=>$time]);
    
    if (!$isExisit) {
        // 通过
        return true;
    } else {
        // 不通过
        return false;
    }
}

세션 저장

현재는 Redis를 사용하여 세션을 저장하는 것이 좋습니다. 만료 시 자동 엑스터시가 가능하다는 장점이 있습니다. (PHP 자체 세션 가비지 수집 메커니즘은 신뢰할 수 없으며 엑스터시가 만료될 가능성이 있습니다.)

이 방법은 매우 간단합니다. php.ini 파일만 수정하면 됩니다.

session.save_handler 라인을 찾아

session.save_handler = redis
로 변경하세요

session.save_path를

session.save_path = "tcp://localhost:6379"
로 변경하세요

redis용 비밀번호 설정 방법은

session.save_path = "tcp://localhost:6379?auth=password"
로 변경하시면 됩니다

독립형 애플리케이션이 아니고 분산형 세션을 중앙에서 관리하기 위해 Redis를 사용하는 방법은 무엇입니까?

역시 매우 간단합니다. php.ini 파일을 수정하면 됩니다. 세션이 192.168.1.220 머신에서 중앙 관리되는 경우 다른 머신의 php.ini 파일은 다음과 같이 수정됩니다.

session.save_handler = redis
session.save_path = "tcp://192.168.1.220:6379?auth=password"

위에서는 일부 Redis 문자열 유형 애플리케이션만 소개합니다. 개발자는 실용적인 프로젝트와 자신의 상상력을 결합할 수 있습니다. 더 많은 응용 프로그램

위 내용은 Redis 문자열 유형의 여러 응용 프로그램의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.