Laravel Redis Connection 공유 : 선택 메소드가 다른 연결에 영향을 미치는 이유는 무엇입니까?
Laravel Framework에서 Redis 연결 공유 및 select
메소드의 영향
Laravel Framework에서 Redis를 사용할 때 개발자는 문제가 발생할 수 있습니다. 구성 파일을 통해 얻은 Redis 연결은 select
메소드를 사용하여 데이터베이스를 전환하기 전에 얻은 동일한 연결에 영향을 미칩니다. 이 기사는이 문제를 분석하고 솔루션을 제공합니다.
문제 설명 : 코드가 Redis::connection('config1')
통해 'config1'이라는 Redis 연결을 얻고 다음과 같습니다.
'config1'=> [ '호스트'=> 'xx', '암호'=> 'xx', '포트'=> 'xx', '데이터베이스'=> 2 ]]
'config1'연결을 두 번 가져 와서 연결 중 하나에서 select(3)
수행하여 데이터베이스 3으로 전환하십시오.
$ a = redis :: connection ( 'config1'); $ b = redis :: connection ( 'config1'); $ b-> select (3); $ a-> set ( 'test1', 1); // 'test1'은 데이터베이스 3, 예상되지 않음 데이터베이스 2에 씁니다.
예상 데이터가 데이터베이스 2에 기록되어야하기 때문에 $a->set('test1', 1)
의 결과는 놀랍습니다. 이는 Laravel 프레임 워크의 Redis 연결 관리 메커니즘으로 인해 $a
와 $b
실제로 동일한 Redis 연결 객체를 참조하기 때문입니다.
Laravel 프레임 워크의 \Illuminate\Support\Facades\Redis
facade는 getFacadeAccessor
메소드를 통해 redis
반환하며 redis
\Illuminate\Redis\RedisManager
에 의해 구현됩니다. \Illuminate\Redis\RedisManager
의 connection
방법은 첫 번째 구문 분석 후 연결을 캐시하며 후속 통화는 동일한 Redis 인스턴스를 직접 반환합니다.
따라서이 문제를 피하기 위해 독립형 연결을 얻으려면 Redis::connection()
여러 번 호출 할 수 없습니다. 솔루션은 Laravel의 resolve
메소드를 사용하여 새 연결 인스턴스를 작성하는 것입니다.
$ a = app ( 'redis')-> connection ( 'config1'); $ b = app ( 'redis')-> connection ( 'config1'); $ b-> select (3); $ a-> set ( 'test1', 1); // 'test1'은 이제 데이터베이스 2에 씁니다
app('redis')->connection('config1')
사용하여 매번 새 연결 인스턴스를 생성하여 동일한 기본 Redis 연결을 공유하는 문제를 피하고 각 연결에 독립적 인 데이터베이스 선택이 있는지 확인하십시오. 이것은 select
메소드가 다른 연결에 영향을 미친다는 문제를 해결합니다.
위 내용은 Laravel Redis Connection 공유 : 선택 메소드가 다른 연결에 영향을 미치는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

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

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

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

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

Ouyi Exchange 앱은 Apple 휴대 전화 다운로드를 지원하고, 공식 웹 사이트를 방문하고, "Apple Mobile"옵션을 클릭하고, App Store에 입력하고 설치하고, Cryptocurrency 거래를 수행하려면 등록 또는 로그인합니다.

C의 DMA는 직접 메모리 액세스 기술인 DirectMemoryAccess를 말하며 하드웨어 장치는 CPU 개입없이 데이터를 메모리로 직접 전송할 수 있습니다. 1) DMA 운영은 하드웨어 장치 및 드라이버에 크게 의존하며 구현 방법은 시스템마다 다릅니다. 2) 메모리에 직접 액세스하면 보안 위험이 발생할 수 있으며 코드의 정확성과 보안이 보장되어야합니다. 3) DMA는 성능을 향상시킬 수 있지만 부적절하게 사용하면 시스템 성능이 저하 될 수 있습니다. 실습과 학습을 통해 우리는 DMA 사용 기술을 습득하고 고속 데이터 전송 및 실시간 신호 처리와 같은 시나리오에서 효과를 극대화 할 수 있습니다.

전 세계의 상위 10 개 암호 화폐 거래 플랫폼에는 Binance, OKX, Gate.io, Coinbase, Kraken, Huobi Global, Bitfinex, Bittrex, Kucoin 및 Poloniex가 포함되며 다양한 거래 방법과 강력한 보안 조치가 제공됩니다.

Binance 공식 웹 사이트를 방문하여 HTTPS 및 Green Lock 로고를 확인하여 피싱 웹 사이트를 피하면 공식 응용 프로그램에도 안전하게 액세스 할 수 있습니다.

오늘날 Bitcoin의 가격 변동은 거시 경제학, 정책 및 시장 감정과 같은 많은 요인의 영향을받습니다. 투자자는 정보에 입각 한 결정을 내리려면 기술 및 기본 분석에주의를 기울여야합니다.

Laravel과 YII의 주요 차이점은 설계 개념, 기능적 특성 및 사용 시나리오입니다. 1. Laravel은 개발의 단순성과 즐거움에 중점을두고 Eloquentorm 및 Artisan 도구와 같은 풍부한 기능을 제공하며 빠른 개발 및 초보자에게 적합합니다. 2.YII는 성능과 효율성을 강조하고, 고 부하 애플리케이션에 적합하며, 효율적인 Activerecord 및 캐시 시스템을 제공하지만 가파른 학습 곡선이 있습니다.

2024 년의 필수 Laravel 확장 패키지는 다음과 같습니다. 1. Laraveldebugbar, 코드를 모니터링하고 디버그하는 데 사용됩니다. 2. 자세한 응용 프로그램 모니터링을 제공하는 Laraveltelescope; 3. Laravelhorizon, Redis 대기열 작업 관리. 이러한 확장 팩은 개발 효율성 및 응용 프로그램 성능을 향상시킬 수 있습니다.

Laravel에 Sentry와 Bugsnag를 통합하면 응용 프로그램 안정성과 성능이 향상 될 수 있습니다. 1. Composer.json에 Sentrysdk를 추가하십시오. 2. config/app.php에 센트리 서비스 제공 업체를 추가하십시오. 3. .env 파일에서 sentrydsn을 구성하십시오. 4. app \ exceptions \ handler.php에서 센트리 오류 보고서를 추가하십시오. 5. 센트리를 사용하여 예외를 잡고보고하고 추가 컨텍스트 정보를 추가하십시오. 6. app \ exceptions \ handler.php의 ugsnag 오류 보고서를 추가하십시오. 7. Bugsnag 모니터링을 사용하십시오
