>  기사  >  백엔드 개발  >  Redis는 11가지 웹 애플리케이션 시나리오를 완벽하게 활용합니다.

Redis는 11가지 웹 애플리케이션 시나리오를 완벽하게 활용합니다.

黄舟
黄舟원래의
2017-10-25 09:20:201593검색

다음은 11가지 웹 애플리케이션 시나리오 목록입니다. 이러한 시나리오에서는 Redis의 기능을 최대한 활용하고 효율성을 크게 향상시킬 수 있습니다.

1. 홈 페이지에 최신 프로젝트 목록을 표시합니다.

Redis는 매우 빠른 상주 메모리 캐시를 사용합니다. LPUSH는 목록의 선두에 키로 저장되는 콘텐츠 ID를 삽입하는 데 사용됩니다. LTRIM은 목록의 항목 수를 최대 5000개로 제한하는 데 사용됩니다. 사용자가 검색해야 하는 데이터의 양이 이 캐시 용량을 초과하는 경우 요청을 데이터베이스로 보내야 합니다.

2. 삭제하고 필터링하세요.

기사가 삭제된 경우 LREM을 사용하여 캐시에서 기사를 완전히 지울 수 있습니다.

3. 순위 및 관련 문제.

리더보드는 점수별로 정렬됩니다. ZADD 명령을 사용하면 이 기능을 직접 구현할 수 있으며, ZREVRANGE 명령을 사용하면 점수에 따라 상위 100명의 사용자를 얻을 수 있으며, ZRANK를 사용하면 매우 직접적이고 조작하기 쉬운 사용자 순위를 얻을 수 있습니다.

4. 사용자 투표 및 시간별로 정렬됩니다.

이것은 Reddit 리더보드와 같으며 시간이 지남에 따라 점수가 변경됩니다. 목록에 기사를 추가하려면 LPUSH 및 LTRIM 명령을 함께 사용하십시오. 백그라운드 작업은 목록을 가져오고 목록의 순서를 다시 계산하는 데 사용되며, ZADD 명령은 생성된 목록을 새 순서로 채우는 데 사용됩니다. 목록을 사용하면 로드가 많은 사이트에서도 매우 빠른 검색이 가능합니다.

5. 만료된 품목 처리.

목록을 시간별로 정렬하려면 Unix 시간을 핵심으로 사용하세요. 만료된 항목을 찾는 어려운 작업을 완료하려면 current_time 및 time_to_live를 검색하세요. 또 다른 백그라운드 작업은 ZRANGE...WITHSCORES를 사용하여 만료된 항목을 쿼리하고 삭제합니다.

6. 세다.

IP 주소가 언제 차단되는지 알고 싶은 등 다양한 데이터 통계의 사용 범위가 매우 넓습니다. INCRBY 명령을 사용하면 원자 단위 증가로 개수를 유지하는 데 사용되며 만료 속성은 키워드를 삭제해야 하는 시기를 결정하는 데 사용됩니다.

7. 특정 시간 내의 특정 프로젝트.

이것은 방문자별 문제이며 각 페이지 보기에 대해 SADD 명령을 사용하여 해결할 수 있습니다. SADD는 기존 구성원을 컬렉션에 추가하지 않습니다.

8. 무슨 일이 일어나고 있는지 실시간 분석하여 데이터 통계, 스팸 방지 등에 활용됩니다.

Redis 기본 명령을 사용하면 스팸 필터링 시스템이나 기타 실시간 추적 시스템을 구현하는 것이 더 쉽습니다.

9. 게시/구독.

업데이트 전반에 걸쳐 사용자의 데이터 매핑을 유지하는 것은 시스템의 일반적인 작업입니다. Redis의 pub/sub 기능을 사용하면 SUBSCRIBE, UNSUBSCRIBE 및 PUBLISH 명령을 사용하여 이 작업을 더 쉽게 수행할 수 있습니다.

10. 대기줄.

대기열은 현재 프로그래밍의 모든 곳에서 볼 수 있습니다. Push 및 Pop 유형 명령 외에도 Redis에는 실행 중에 다른 프로그램에 의해 프로그램이 대기열에 추가될 수 있도록 하는 차단 대기열 명령도 있습니다. 업데이트된 RSS 피드의 순환 대기열과 같이 더 흥미로운 작업을 수행할 수도 있습니다.

11. 은닉처.

Redis 캐시는 Memcache와 동일한 방식으로 사용됩니다.

네트워크 애플리케이션은 끝없는 모델 전쟁에 참여할 수 없습니다. 이러한 Redis 기본 명령을 살펴보세요. 단순하지만 강력하지만 이를 결합하여 달성할 수 있는 작업은 더욱 상상하기 어렵습니다. 물론 이러한 모든 작업을 수행하기 위해 특수 코드를 작성할 수 있지만 Redis는 확실히 구현하기가 더 쉽습니다.

Redis가 데이터 저장의 새로운 방식을 창조했다는 것은 의심의 여지가 없습니다. Redis를 사용하면 단조로운 기능을 가진 데이터베이스를 직면할 때 어떻게 냉장고에 넣어야 할지 고민할 필요가 없습니다. 다양한 코끼리를 위한 다양한 냉장고를 구축하기 위한 유연한 데이터 구조 및 데이터 작업. 이 비유가 마음에 드셨으면 좋겠습니다.

다음은 Redis의 저자인 @antirez가 작성한 새로운 기사입니다. 그는 Redis가 더 적합한 몇 가지

애플리케이션 시나리오를 모든 사람이 볼 수 있도록 여기에 나열합니다.

1. 최신 N 데이터 작업

예를 들어, 일반적인 예는 웹 사이트의 최신 기사를 가져오는 것입니다. 다음 방법을 통해 Redis 목록 컬렉션에 최신 5000개의 댓글 ID를 입력하고 초과 부분을 가져올 수 있습니다.

  • LPUSH 최신.commentseddfa97ffc1dc71769e3f42e462dfe8e 명령을 사용하여

    list collection

  • 삽입이 완료된 후 LTRIM 최신.comments 0 5000 명령을 사용하여 항상 최신 항목만 저장합니다. ID 5000개

  • 그러면 클라이언트는 특정 페이지에 대한 댓글을 받을 때 다음 논리(의사 코드)를 사용할 수 있습니다

  • FUNCTION get_latest_comments(start,num_items):
        id_list = redis.lrange("latest.comments",start,start+num_items-1)
        IF id_list.length < num_items
            id_list = SQL_DB("SELECT ... ORDER BY time LIMIT ...")
        END
        RETURN id_list
    END
특정 카테고리의 최신 N개 항목과 같은 필터링 차원이 다른 경우 이 카테고리를 기반으로 다른 목록을 생성할 수 있습니다. ID만 저장되어 있다면 Redis는 매우 효율적입니다.

2.랭킹 적용, TOP N 연산을 취하세요

이 요구 사항과 위 요구 사항의 차이점은 이전 작업은 시간을 가중치로 사용하는 반면, 이번 작업은 숫자순 정렬과 같은 특정 조건을 가중치로 사용한다는 것입니다. 이때, 정렬하려는 값을 정렬된 세트의 점수로 설정하고 해당 값에 특정 데이터를 설정하면 됩니다. 각각 하나의 ZADD 명령만 실행하면 됩니다. 시간.

3. 만료 시간을 정확하게 설정해야 하는 애플리케이션

예를 들어 위에서 언급한 정렬된 세트의 점수 값을 만료 시간의 타임스탬프로 설정한 다음 간단히 만료 시간을 기준으로 정렬하고 만료된 항목을 정기적으로 삭제합니다. Redis에서 만료된 데이터를 삭제할 뿐만 아니라 Redis의 만료 시간을 데이터베이스의 데이터 인덱스로 완전히 간주하고 Redis를 사용하여 만료해야 할 데이터를 찾은 다음 정확하게 삭제할 수 있습니다. 데이터베이스 기록의 해당 데이터.

4.

카운터 애플리케이션

Redis 명령은 모두 원자적입니다. INCR 및 DECR 명령을 사용하여 카운터 시스템을 쉽게 구축할 수 있습니다.

5. 특정 기간 동안 모든 데이터의 중복 제거 값을 얻는 Uniq 작업

이것은 Redis의 집합 데이터 구조를 사용하는 데 가장 적합합니다. 집합은 집합을 의미합니다. , 자동으로 무게를 대체합니다.

6. 실시간 시스템,

스팸 방지 시스템

위에서 언급한 설정 기능을 통해 최종 사용자가 특정 작업을 수행했는지 여부를 알 수 있으며, 일련의 작업을 찾아 분석 및 통계를 수행할 수 있습니다. 비교. 불가능한 것은 없고 상상할 수 없을 뿐입니다.

7.Pub/Sub는 실시간 메시징 시스템을 구축합니다

Redis의 Pub/Sub 시스템은 Pub/Sub로 구축된 실시간 채팅 시스템의 많은 예와 같은 실시간 메시징 시스템을 구축할 수 있습니다.

8.

대기열 시스템 구축

목록을 사용하여 대기열 시스템을 구축하고, 정렬된 집합을 사용하여

우선 순위가 있는 대기열 시스템을 구축하세요.

위 내용은 Redis는 11가지 웹 애플리케이션 시나리오를 완벽하게 활용합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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