ホームページ バックエンド開発 PHPチュートリアル Laravel Redis接続共有:選択方法が他の接続に影響するのはなぜですか?

Laravel Redis接続共有:選択方法が他の接続に影響するのはなぜですか?

Apr 01, 2025 am 07:45 AM
laravel redis cad access red

Laravel Redis接続共有:選択方法が他の接続に影響するのはなぜですか?

Laravelフレームワークの下でのRedis接続共有とselect方法の影響

LaravelフレームワークでRedisを使用する場合、開発者は問題に遭遇する可能性があります。構成ファイルを介して取得したRedis接続は、 select方法を使用してデータベースを切り替える前に取得した同じ接続に影響します。この記事では、この問題を分析し、解決策を提供します。

問題の説明:コードがRedis::connection('config1')を介して「config1」という名前のredis接続を取得し、その構成が次のとおりです。

 'config1' => [
    「ホスト」=> 'xx'、
    「パスワード」=> 'xx'、
    'port' => 'xx'、
    「データベース」=> 2
]
ログイン後にコピー

「config1」接続を2回取得し、データベース3に切り替えるために接続の1つでselect(3)を実行します。

 $ a = redis :: connection( 'config1');
$ b = redis :: connection( 'config1');
$ b-> select(3);
$ a-> set( 'test1'、1); // 'test1'はデータベース3に書き込み、予想されていないデータベース2
ログイン後にコピー

$a->set('test1', 1)の結果は驚くべきことです。これは、予想されるデータをデータベース2に書き込む必要があるためです。これは、laravelフレームワークのRedis接続管理メカニズムが$a$b実際に同じRedis接続オブジェクトを指すためです。

\Illuminate\Support\Facades\Redis facade of the laravel Frameworkは、 getFacadeAccessorメソッドを介してredisを返し、 redis \Illuminate\Redis\RedisManagerによって実装されます。 \Illuminate\Redis\RedisManagerconnection方法は、最初の解析後に接続をキャッシュし、後続の呼び出しは同じ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接続共有:選択方法が他の接続に影響するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Redisキャッシュソリューションを使用して、製品ランキングリストの要件を効率的に実現する方法は? Redisキャッシュソリューションを使用して、製品ランキングリストの要件を効率的に実現する方法は? Apr 19, 2025 pm 11:36 PM

Redisキャッシュソリューションは、製品ランキングリストの要件をどのように実現しますか?開発プロセス中に、多くの場合、ランキングの要件に対処する必要があります。

IPをブロックするWordPressのプラグインは何ですか IPをブロックするWordPressのプラグインは何ですか Apr 20, 2025 am 08:27 AM

WordPress IPブロックプラグインの選択が重要です。次のタイプを考慮することができます。.htaccessに基づいて:効率的ですが複雑な操作。データベース操作:柔軟性がありますが、効率が低いです。ファイアウォール:セキュリティの高いパフォーマンスですが、複雑な構成。自己執筆:最高のコントロールですが、より多くの技術レベルが必要です。

Redisの役割:データストレージと管理機能の調査 Redisの役割:データストレージと管理機能の調査 Apr 22, 2025 am 12:10 AM

Redisは、データストレージと管理において重要な役割を果たしており、複数のデータ構造と持続性メカニズムを通じて最新のアプリケーションの中核となっています。 1)Redisは、文字列、リスト、コレクション、注文されたコレクション、ハッシュテーブルなどのデータ構造をサポートし、キャッシュや複雑なビジネスロジックに適しています。 2)RDBとAOFの2つの持続方法を通じて、Redisは信頼できるストレージとデータの迅速な回復を保証します。

バッチクエリにRediStemplateを使用するときに、なぜ返品値が空になるのですか? バッチクエリにRediStemplateを使用するときに、なぜ返品値が空になるのですか? Apr 19, 2025 pm 10:15 PM

バッチクエリにRediStemplateを使用するときに、なぜ返品値が空になるのですか?バッチクエリ操作にRedistemplateを使用する場合、返された結果に遭遇する可能性があります...

次のAuthが生成したJWTトークンでJavaで解析し、情報を入手する方法は? 次のAuthが生成したJWTトークンでJavaで解析し、情報を入手する方法は? Apr 19, 2025 pm 08:21 PM

処理において、次のauthが生成したjwt ...

マルチノード環境では、Spring Bootの@Scheduledタイミングタスクが1つのノードでのみ実行されることを確認する方法は? マルチノード環境では、Spring Bootの@Scheduledタイミングタスクが1つのノードでのみ実行されることを確認する方法は? Apr 19, 2025 pm 10:57 PM

マルチノード環境でのスプリングブートタイミングタスクの最適化ソリューションは、春の開発です...

RedisキャッシュがSpring Bootで失敗した場合はどうすればよいですか? RedisキャッシュがSpring Bootで失敗した場合はどうすればよいですか? Apr 19, 2025 pm 08:03 PM

スプリングブートでは、Redisを使用してOAuth2Authorizationオブジェクトをキャッシュします。 Springbootアプリケーションでは、Springsecurityouth2authorizationserverを使用してください...

See all articles