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\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接続共有:選択方法が他の接続に影響するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホット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
ビジュアル Web 開発ツール

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

ホットトピック











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

JDBC ...

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

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

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

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

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