찾다

 >  Q&A  >  본문

php - Redis를 사용하여 동시성으로 인해 MySQL에 반복적으로 데이터가 삽입되는 문제를 해결하는 방법은 무엇입니까?

비즈니스 시나리오

쿼리 시스템이 있습니다. 사용자가 쿼리할 때 데이터베이스에 데이터가 없으면 타사 쿼리 인터페이스를 호출하여 데이터를 얻은 다음 데이터를 데이터베이스에 삽입한 다음 검색해야 합니다. 데이터베이스에서 데이터를 가져와 사용자에게 반환합니다. [시스템은 PHP를 기반으로 개발되었습니다.]

문제 설명

여러 사용자가 쿼리하는 경우 동시에 타사 인터페이스에 여러 쿼리 요청이 발생하며 반복되는 데이터 삽입 문제가 발생합니다.

이 문제를 해결하는 방법은 무엇입니까?
타사 인터페이스를 호출할 때 Redis를 사용하여 하나의 요청만 타사로 전달되도록 함으로써 반복적인 쿼리 및 데이터 삽입을 방지할 수 있습니다. 방법? ? 구체적으로 어떻게 달성할 수 있나요?
감사합니다!

淡淡烟草味淡淡烟草味2776일 전715

모든 응답(4)나는 대답할 것이다

  • 伊谢尔伦

    伊谢尔伦2017-05-16 13:03:48

    잠금 메커니즘. 코드가 작업에 들어가기 전에 작업이 잠겨 있는지 확인하십시오. 잠겨 있으면 작업을 중단하십시오. 그렇지 않으면 다음 작업으로 진행합니다. 첫 번째 단계는 작업을 잠근 다음 코드를 실행하는 것입니다. 작업 잠금을 해제하는 것을 잊지 마세요. 그렇지 않으면 실행을 수행할 수 없습니다.

    잠금 코드는 여러 가지가 있는데, 위에 제시된 코드가 그 중 하나입니다. Redismemcachecache 파일을 사용할 수 있으며, 작업 동시성이 상대적으로 높을 경우 위와 같은 redis를 사용하는 것이 좋습니다. (실제로는 문자열 데이터 형식을 사용하여 잠금 키 {lock}에 값을 할당하는 것이며, 잠금 해제 시 키 값이 지워지거나 0의 값이 할당됩니다)

    으아악

    회신하다
    0
  • 为情所困

    为情所困2017-05-16 13:03:48

    으아악

    회신하다
    0
  • 高洛峰

    高洛峰2017-05-16 13:03:48

    으아아아

    회신하다
    0
  • 迷茫

    迷茫2017-05-16 13:03:48

    포스터에서 언급한 redis "잠금"은 당연히 가능합니다
    그리고 쿼리된 데이터에 고유 ID를 설정할 수 있나요? 이것은 이중 검증입니다

    회신하다
    0
  • 취소회신하다