일반적으로 Java 웹 애플리케이션에는 Redis에 대한 두 가지 주요 시나리오가 있습니다. 하나는 일반적으로 사용되는 데이터를 캐시하는 것이고, 다른 하나는 고속 읽기/쓰기 시 이를 사용하여 빠르게 읽고 쓰는 것입니다. 는 필수입니다#🎜 🎜#, 급하게 물건을 사거나 빨간 봉투를 챙겨야 하는 경우 등이 있습니다.
높은 동시성에서 데이터를 고속으로 읽고 쓰는 시나리오로 인해 핵심 문제 중 하나는 데이터 일관성과 액세스 제어입니다. 에디토리얼 > 데이터베이스에서 읽기/쓰기 작업에서 실제로는 읽기 작업 수가 쓰기 작업 수를 훨씬 초과합니다. 1:9~3:7 비율로 쓰기 가능성보다 읽을 가능성이 훨씬 크다.
읽기 위해 SQL을 데이터베이스에 보낼 때 데이터베이스는 해당 데이터를 다시 인덱싱하기 위해 디스크로 이동하며, 디스크 인덱싱은 상대적으로 느린 프로세스입니다. 데이터가 메모리에서 실행되는 Redis 서버에 직접 배치되면 디스크를 읽고 쓸 필요가 없지만 메모리를 직접 읽을 수 있으므로 훨씬 더 빠르고 데이터베이스에 대한 부담이 크게 줄어듭니다.
데이터를 저장하기 위해 메모리를 사용하는 비용도 디스크가 TGB 수준이 될 수 있고 매우 저렴하기 때문에 상대적으로 크고, 메모리는 일반적으로 수백 GB에 달하는 매우 인상적입니다. 그래서 메모리는 효율적이지만 공간은 제한되어 있고 가격도 디스크에 비해 훨씬 높기 때문에 메모리를 사용하는 데 드는 비용이 더 높기 때문에 원하는 것을 저장할 수 없으므로 조건부 데이터 저장을 고려해야 합니다. . 일반적으로 사용자 로그인 정보와 같이 일반적으로 사용되는 일부 데이터가 저장됩니다. 예를 들어 은행은 일부 기본 고객 정보, 은행 카드 정보, 최근 거래 정보 등을 저장합니다. 일반적으로 Redis 스토리지를 사용할 때는 세 가지 측면을 고려해야 합니다. 비즈니스 데이터가 일반적으로 사용되나요? 적중률은 얼마나 되나요? 적중률이 낮으면 캐시에 쓸 필요가 없습니다. 비즈니스 데이터에 읽기 작업이 많은지, 쓰기 작업이 많은지 여부. 쓰기 작업이 많으면 데이터베이스에 자주 써야 하며 캐시를 사용할 필요가 없습니다. 비즈니스 데이터의 크기는 얼마나 됩니까? 수백 메가바이트의 파일을 저장하려면 캐시에 많은 부담이 가해져야 합니까?
이러한 문제를 고려한 후 캐싱을 사용해야 한다고 생각되면 캐싱을 사용하세요. Redis를 캐시로 사용하기 위한 읽기 논리는 그림 1에 나와 있습니다.
그림 1에서 다음 두 가지 사항을 알 수 있습니다.
처음으로 데이터를 읽을 때 Redis 데이터 읽기가 실패합니다. 이 때 데이터베이스를 읽고, 데이터를 읽고, Redis에 쓰도록 프로그램이 실행됩니다.
두번째 데이터를 읽은 이후에는 Redis가 직접 데이터를 읽은 후 프로세스가 종료되므로 속도가 크게 향상됩니다.
읽기 작업의 논리를 분석한 후 그림 2와 같이 쓰기 작업의 프로세스를 분석해 보겠습니다.
프로세스에서 볼 수 있듯이 업데이트 또는 쓰기 작업에는 여러 Redis 작업이 필요합니다. 비즈니스 데이터 쓰기 수가 읽기 수보다 훨씬 많으면 Redis를 사용할 필요가 없습니다.
읽기 횟수가 쓰기 횟수보다 훨씬 많으면 Redis를 사용하는 것이 가치가 있습니다. 왜냐하면 Redis에 쓰기에는 일정 금액의 비용이 들지만 성능이 좋고 거의 무시할 수 있기 때문입니다. 데이터베이스와 비교하지 마십시오.
고속 읽기/쓰기 상황
인터넷 애플리케이션에는 고속 읽기/쓰기가 필요한 경우가 종종 있습니다. 상품 깜짝 세일, 빨간 봉투 받기, Taobao 받기, JD.com의 Double Eleven 활동 또는 봄 축제 여행 티켓 받기 등.
위의 상황에서는 수천 개의 요청이 순식간에 서버에 도달하게 됩니다. 데이터베이스를 사용하면 데이터베이스가 즉시 수천 개의 SQL을 실행해야 하므로 데이터베이스가 쉽게 실패할 수 있습니다. 병목 현상은 데이터베이스 마비 및 Java 웹 시스템 서비스 충돌로 이어질 수 있습니다.
이러한 상황에 대한 대응은 데이터베이스에 대한 비동기 쓰기를 고려하는 경우가 많으며, 고속 읽기/쓰기 상황에서는 Redis만 사용하여 고속 읽기/쓰기가 필요한 데이터를 캐시합니다. Redis는 특정 조건이 충족되면 이러한 캐시된 데이터가 트리거되어 데이터베이스에 기록됩니다. 먼저 그림 3과 같이 요청 작업의 흐름도를 살펴보겠습니다.
위 내용은 Java 웹에서 Redis는 일반적으로 무엇에 사용됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!