>  기사  >  데이터 베이스  >  Redis는 일반적으로 어디에 사용됩니까?

Redis는 일반적으로 어디에 사용됩니까?

(*-*)浩
(*-*)浩원래의
2019-06-05 17:36:039818검색

Redis 애플리케이션 시나리오 요약 우리가 이해하는 애플리케이션 시나리오는 다음과 같습니다.

Redis는 일반적으로 어디에 사용됩니까?

1. 높은 액세스 속도와 지원으로 인해. of redis 데이터 유형이 상대적으로 풍부하므로 redis는 핫 데이터를 저장하는 데 매우 적합합니다. 또한 만료와 결합하여 만료 시간을 설정한 다음 캐시 업데이트 작업을 수행할 수 있으며 이 기능은 가장 일반적이며 거의 사용됩니다. 우리의 모든 프로젝트.

2. 기간 한정 비즈니스 적용

(추천 학습:

Redis 동영상 튜토리얼)redis에서 만료 명령을 사용하여 키의 생존 시간을 설정할 수 있으며, 시간이 지나면 Redis가 키를 삭제합니다. . 이 기능은 기간 한정 프로모션 정보, 휴대폰 인증 코드 등의 비즈니스 시나리오에서 사용할 수 있습니다.

3. 카운터 관련 문제

redis incrby 명령은 원자 증가를 달성할 수 있기 때문에 동시성이 높은 플래시 판매 활동, 분산 일련 번호 생성 및 특정 비즈니스에도 사용할 수 있습니다. 예를 들어 휴대폰 번호 발급 제한 문자 메시지 수, 인터페이스의 분당 요청 수, 인터페이스의 일일 통화 수 제한 등이 있습니다.

4. 순위 관련 문제

관계형 데이터베이스는 일반적으로 순위 쿼리가 느리므로 redis의 SortedSet을 사용하여 핫 데이터를 정렬할 수 있습니다.

밀크티 이벤트에서는 부서별 좋아요 순위 목록을 표시해야 해서 부서별로 SortedSet을 만든 다음 위의 사용자 이름으로 사용자의 openid를, 위의 점수로 사용자의 좋아요 수를 사용했습니다. 그런 다음 각 사용자에 대한 해시를 만들고 zrangebyscore를 사용하여 좋아요 수를 기준으로 순위 목록을 얻은 다음 사용자 이름을 기준으로 사용자의 해시 정보를 가져옵니다. 당시 실제 사용에서는 이 성능 경험이 꽤 좋았습니다.

5. 분산 잠금

이는 주로 redis의 setnx 명령을 사용합니다. "존재하지 않는 경우 설정"은 캐시가 존재하지 않으면 성공적으로 설정되고 1이 반환된다는 의미입니다. 그렇지 않으면 0이 반환됩니다. 이 기능은 Yuyouben에 있습니다. 우리 서버가 클러스터되어 있기 때문에 예약된 작업이 두 시스템 모두에서 실행될 수 있습니다. 따라서 설정이 성공하면 먼저 잠금을 설정하세요. , 실행됩니다. 성공적으로 설정되지 않으면 예약된 작업이 실행되었음을 나타냅니다. 물론 특정 업무에 따라 이 잠금에 만료 시간을 추가할 수 있습니다. 예를 들어 예약된 작업이 30분마다 실행되는 경우 만료 시간을 30분 미만의 시간으로 설정할 수 있습니다. 예약된 작업의 기간 및 예약된 작업의 실행과 관련된 시간입니다.

물론 만료 시간과 결합된 분산 잠금이 필요한 다른 시나리오에도 이 기능을 적용할 수 있습니다. 이는 주로 교착 상태를 방지하기 위한 것입니다.

6. 지연 작업

지금까지 관련 테스트를 수행했지만 실제 프로젝트에는 적용되지 않았습니다. 아래에서는 이 기능에 대한 적용 시나리오를 제공합니다. 예를 들어, 주문이 생성된 후 10분 후에 사용자가 실제로 구매했는지 확인합니다. 구매가 없으면 문서가 무효화됨과 동시에 재고가 복원됩니다. . Redis는 버전 2.8.0부터 Keyspace 알림 기능을 제공하므로 고객은 어떤 방식으로든 Redis 데이터 세트에 영향을 미치는 이벤트를 수신하기 위해 Pub/Sub 채널을 구독할 수 있습니다. 따라서 위의 요구 사항에 대해 다음 솔루션을 사용할 수 있습니다. 생산을 주문할 때 키를 설정하고 10분 후에 만료되도록 설정하여 키가 만료될 때 모니터링합니다. 우리는 후속 조치를 취할 것입니다. 물론 이 요구 사항을 충족하기 위해 Rabbitmq 및 activemq와 같은 메시지 미들웨어의 지연 대기열 서비스를 사용할 수도 있습니다.

7. 페이징, 퍼지 검색

redis의 집합 컬렉션은 zrangebylex 메서드를 제공하며 구문은 다음과 같습니다.

ZRANGEBYLEX key min max [LIMIT 오프셋 개수]

페이징은 ZRANGEBYLEX zset - + LIMIT를 통해 수행할 수 있습니다. 0 10 데이터 쿼리, 여기서 - +는 모든 데이터를 가져오는 것을 의미합니다.

zrangebylex key min max 이 기능은 퍼지 쿼리 기능을 수행하는 데 사용할 수 있습니다. 퍼지 쿼리의 특징을 지원하는 Redis.

며칠 전 학교 데이터를 대상으로 시뮬레이션 테스트를 할 때 이 기능을 사용했는데, 학교 데이터가 약 60만 개에 달하고, 응답 시간은 약 700ms로 MySQL 같은 쿼리보다 약간 빠르지만, 오류를 피할 수 있기 때문입니다. 데이터베이스 IO 작업 수가 많기 때문에 전반적으로 직접 mysql 쿼리보다 시스템 성능 보장에 더 도움이 됩니다.

8. 좋아요, 친구 등 상호관계 저장

Redis set에서 제공하는 외부 기능은 목록의 기능과 유사합니다. 특히 데이터 목록을 저장해야 하고 중복된 데이터가 표시되지 않도록 하려면 set을 선택하는 것이 좋습니다. 선택 및 집합은 목록이 제공할 수 없는 집합 컬렉션에 구성원이 있는지 여부를 결정하는 중요한 인터페이스를 제공합니다. 또는 웨이보 애플리케이션에서는 각 사용자가 팔로우하는 사람들이 컬렉션으로 존재하므로 두 사람의 공통 친구를 찾는 기능을 쉽게 구현할 수 있습니다.

이것은 set을 사용하여 사용자 간의 좋아요 관계를 저장하는 밀크티 활동에 사용됩니다. 또한 sismember 메서드는 좋아요를 주기 전에 좋아요를 받았는지 여부를 확인하는 데 사용됩니다. 이 인터페이스는 10밀리초 이내에 제어되므로 매우 효율적입니다.

9. Queue

redis에는 list push, list pop 등의 명령어가 있어서 쉽게 Queue 작업을 수행할 수 있습니다.

Redis 관련 기술 기사를 더 보려면 Redis 데이터베이스 사용 튜토리얼 소개 칼럼을 방문하여 알아보세요!

위 내용은 Redis는 일반적으로 어디에 사용됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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