물론, Redis에는 매우 강력한 기능이 있습니다. 저는 Redis를 사용하여 비교적 간단한 방법으로 구현할 수 있는 세 가지 구현 방법을 연습했습니다. Redis는 전류 제한뿐만 아니라 데이터 통계, 주변 사람 및 기타 기능도 수행할 수 있습니다.
첫 번째: Redis 기반 Setnx 작업 ' ’ ’ ’ s s ’ s ’ s ’ CAS(비교 및 교체) 작업 중에 만료 시간(expire)이 설정됩니다. 전류 제한의 주요 목적은 단위 시간 내에 N개의 요청만 내 데이터에 액세스하도록 허용하는 것입니다. 따라서 setnx를 사용하면 이 기능을 쉽게 얻을 수 있습니다.
예를 들어10초 내에 20개의 요청을 제한해야 하며, setnx를 설정할 때 만료 시간을 10으로 설정할 수 있습니다. 요청된 setnx 수가 20에 도달하면 현재 제한 효과가 달성됩니다.
물론 이 접근 방식에는 많은 단점이 있습니다. 예를 들어 1~10초를 계산할 때 N초 내에 M개의 요청을 계산해야 한다면 Redis는 다음을 수행해야 합니다. N 키 등을 유지하세요.두 번째 유형: Redis 기반 데이터 구조 zset
실제로 전류 제한과 관련된 가장 중요한 것은 슬라이딩 윈도우입니다. 위에서도 1-10이 2-11이 되는 방식을 언급했습니다. . 실제로 시작 값과 끝 값은 모두 각각 +1입니다.그리고 Redis의 목록 데이터 구조를 사용하면 이 기능을 쉽게 구현할 수 있습니다
요청을 zset 배열로 작성할 수 있으며, 각 요청이 들어올 때 값은 고유하게 유지되며 UUID로 생성될 수 있습니다. 및 점수 점수를 사용하여 현재 타임스탬프 내의 요청 수를 계산할 수 있으므로 현재 타임스탬프로 나타낼 수 있습니다.
zset 데이터 구조는 2개의 타임스탬프 내에서 요청 수를 쉽게 얻을 수 있도록 범위 방법도 제공합니다.
토큰 버킷 알고리즘에서는 출력 속도가 입력 속도보다 클 때를 언급합니다. , 트래픽 제한이 초과되었습니다.
즉, 요청에 액세스할 때마다 Redis에서 토큰을 얻을 수 있다는 것은 한도를 초과하지 않았다는 뜻이고, 얻을 수 없다면 결과는 다음과 같습니다. 반대.
위의 아이디어를 바탕으로 Redis의 List 데이터 구조를 결합하여 이러한 코드를 쉽게 구현할 수 있습니다
// 输出令牌 public Response limitFlow2(Long id){ Object result = redisTemplate.opsForList().leftPop("limit_list"); if(result == null){ return Response.ok("当前令牌桶中无令牌"); } return Response.ok(articleDescription2); }그리고 Java의 예약된 작업을 사용하여 다음을 수행합니다. 정기적으로 목록으로 이동합니다. 오른쪽Push 토큰에서는 토큰도 고유해야 하므로 여전히 UUID를 사용하여 생성합니다
// 10S的速率往令牌桶中添加UUID,只为保证唯一性 @Scheduled(fixedDelay = 10_000,initialDelay = 0) public void setIntervalTimeTask(){ redisTemplate.opsForList().rightPush("limit_list",UUID.randomUUID().toString()); }요약하자면 이러한 현재의 경우 처음에 코드를 구현하는 것은 어렵지 않습니다. 제한 방법을 사용하면 AOP나 필터에 추가할 수 있습니다. 위 코드는 인터페이스의 흐름을 제한하고 궁극적으로 웹사이트를 보호하는 데 사용됩니다. Redis 관련 기술 기사를 더 보려면
Redis 데이터베이스 사용 튜토리얼 소개
칼럼을 방문하여 알아보세요!위 내용은 Redis 자체가 현재 흐름을 제한할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

redisisclassifiedasanoSqldatabaseBecauseItuseSakey-valuedatamodelinsteadofThraditionalRelationalDatabasemodel.Itoffersspeedandflexibility, makingIdealforreal-timeApplicationsandcaching, butitmaynotbesuitableforscenariosrequiringstrictaintetaintetaintetaintetaintetaintetaintegry

Redis는 데이터를 캐싱하여 분산 잠금 및 데이터 지속성을 구현하여 응용 프로그램 성능 및 확장 성을 향상시킵니다. 1) 캐시 데이터 : Redis를 사용하여 데이터 액세스 속도를 향상시키기 위해 자주 액세스하는 데이터를 캐시합니다. 2) 분산 잠금 : Redis를 사용하여 분산 된 잠금 장치를 구현하여 분산 환경에서 작동의 보안을 보장합니다. 3) 데이터 지속성 : 데이터 손실을 방지하기위한 RDB 및 AOF 메커니즘을 통한 데이터 보안을 보장합니다.

Redis의 데이터 모델 및 구조에는 5 가지 주요 유형이 포함됩니다. 1. 문자열 : 텍스트 또는 이진 데이터를 저장하는 데 사용되며 원자 연산을 지원합니다. 2. 목록 : 정렬 된 요소 컬렉션, 대기열 및 스택에 적합합니다. 세트 : 세트 작동을 지원하는 비 순차 고유 요소 세트. 4. 순서 세트 (SortedSet) : 순위에 적합한 점수가있는 고유 한 요소 세트. 5. 해시 테이블 (HASH) : 객체를 저장하는 데 적합한 키 값 쌍 모음.

Redis의 데이터베이스 방법에는 메모리 인 데이터베이스 및 키 값 저장소가 포함됩니다. 1) Redis는 메모리에 데이터를 저장하고 빠르게 읽고 쓰고 있습니다. 2) 키 값 쌍을 사용하여 데이터를 저장하고 캐시 및 NOSQL 데이터베이스에 적합한 목록, 컬렉션, 해시 테이블 및 주문 컬렉션과 같은 복잡한 데이터 구조를 지원합니다.

Redis는 빠른 성능, 풍부한 데이터 구조, 고 가용성 및 확장 성, 지속성 기능 및 광범위한 생태계 지원을 제공하기 때문에 강력한 데이터베이스 솔루션입니다. 1) 매우 빠른 성능 : Redis의 데이터는 메모리에 저장되며 동시성이 높고 대기 시간이 낮은 응용 프로그램에 적합한 빠른 읽기 및 쓰기 속도를 가지고 있습니다. 2) 풍부한 데이터 구조 : 다양한 시나리오에 적합한 목록, 컬렉션 등과 같은 여러 데이터 유형을 지원합니다. 3) 고 가용성 및 확장 성 : 마스터 슬레이브 복제 및 클러스터 모드를 지원하여 고 가용성 및 수평 확장 성을 달성합니다. 4) 지속성 및 데이터 보안 : 데이터 지속성은 RDB 및 AOF를 통해 달성되어 데이터 무결성 및 신뢰성을 보장합니다. 5) 광범위한 생태계 및 지역 사회 지원 : 거대한 생태계와 활동적인 커뮤니티,

Redis의 주요 기능에는 속도, 유연성 및 풍부한 데이터 구조 지원이 포함됩니다. 1) 속도 : Redis는 메모리 내 데이터베이스이며, 읽기 및 쓰기 작업은 거의 순간적이며 캐시 및 세션 관리에 적합합니다. 2) 유연성 : 복잡한 데이터 처리에 적합한 문자열, 목록, 컬렉션 등과 같은 여러 데이터 구조를 지원합니다. 3) 데이터 구조 지원 : 다양한 비즈니스 요구에 적합한 문자열, 목록, 컬렉션, 해시 테이블 등을 제공합니다.

Redis의 핵심 기능은 고성능 인 메모리 데이터 저장 및 처리 시스템입니다. 1) 고속 데이터 액세스 : Redis는 메모리에 데이터를 저장하고 마이크로 초 수준 읽기 및 쓰기 속도를 제공합니다. 2) 풍부한 데이터 구조 : 문자열, 목록, 컬렉션 등을 지원하며 다양한 응용 프로그램 시나리오에 적응합니다. 3) 지속성 : RDB 및 AOF를 통해 디스크에 데이터를 지속하십시오. 4) 구독 게시 : 메시지 대기열 또는 실시간 통신 시스템에서 사용할 수 있습니다.

Redis는 다음을 포함하여 다양한 데이터 구조를 지원합니다. 1. String, 단일 값 데이터 저장에 적합합니다. 2. 큐 및 스택에 적합한 목록; 3. 비면성 데이터 저장에 사용되는 세트; 4. 순서, 순위 목록 및 우선 순위 대기열에 적합한 순서 세트; 5. 해시 테이블, 객체 또는 구조화 된 데이터를 저장하는 데 적합합니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

드림위버 CS6
시각적 웹 개발 도구

WebStorm Mac 버전
유용한 JavaScript 개발 도구

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기
