


Der Einfluss der Redisverbindungsfreigabe und select
im Rahmen des Laravel -Frameworks
Bei Verwendung von Redis im Laravel -Framework können Entwickler auf ein Problem stoßen: Die über die Konfigurationsdatei erhaltene Redis -Verbindung beeinflusst dieselbe Verbindung, die vor dem Umschalten der Datenbank mit select
erhalten wird. Dieser Artikel analysiert dieses Problem und bietet Lösungen.
Problembeschreibung: Angenommen, der Code erhält eine Redis -Verbindung mit dem Namen 'config1' über Redis::connection('config1')
, und seine Konfiguration lautet wie folgt:
'config1' => [ 'Host' => 'xx', 'Passwort' => 'xx', 'Port' => 'xx', 'Datenbank' => 2 ]
Nutzen Sie die Verbindung von 'config1' zweimal und führen Sie select(3)
in einer der Verbindungen aus, um in die Datenbank 3 zu wechseln:
$ a = redis :: connection ('config1'); $ B = Redis :: Connection ('config1'); $ B-> SELECT (3); $ a-> set ('test1', 1); // 'test1' schriftlich in die Datenbank 3, nicht erwartete Datenbank 2
Das Ergebnis von $a->set('test1', 1)
ist überraschend, da die erwarteten Daten in die Datenbank 2 geschrieben werden sollten. Dies liegt daran, dass der REDIS-Verbindungsmanagement-Mechanismus des Laravel-Frameworks dazu führt, dass $a
und $b
tatsächlich auf dasselbe REDIS-Verbindungsobjekt verweisen.
\Illuminate\Support\Facades\Redis
des Laravel -Frameworks gibt redis
über getFacadeAccessor
-Methode zurück, und redis
wird von \Illuminate\Redis\RedisManager
implementiert. Die connection
von \Illuminate\Redis\RedisManager
wird die Verbindung nach der ersten Parsen zwischenspeichert, und nachfolgende Anrufe geben direkt die gleiche Redis -Instanz zurück.
Um dieses Problem zu vermeiden, können Sie Redis::connection()
nicht mehrmals aufrufen, um eine eigenständige Verbindung zu erhalten. Die Lösung besteht darin, eine neue Verbindungsinstanz mithilfe der Laravel resolve
zu erstellen:
$ a = app ('redis')-> connection ('config1'); $ b = app ('redis')-> connection ('config1'); $ B-> SELECT (3); $ a-> set ('test1', 1); // 'test1' schreibt nun in die Datenbank 2
Verwenden Sie app('redis')->connection('config1')
um jedes Mal eine neue Verbindungsinstanz zu erstellen, um das Problem der gemeinsamen Teile derselben REDIS-Verbindung zu vermeiden und sicherzustellen, dass jede Verbindung eine unabhängige Datenbankauswahl hat. Dies löst das Problem, dass select
andere Verbindungen beeinflusst.
Das obige ist der detaillierte Inhalt vonLaravel Redis -Verbindungsfreigabe: Warum wirkt sich die Auswahlmethode auf andere Verbindungen aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

本篇文章给大家带来了关于laravel的相关知识,其中主要介绍了关于单点登录的相关问题,单点登录是指在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于laravel的相关知识,其中主要介绍了关于Laravel的生命周期相关问题,Laravel 的生命周期从public\index.php开始,从public\index.php结束,希望对大家有帮助。

在laravel中,guard是一个用于用户认证的插件;guard的作用就是处理认证判断每一个请求,从数据库中读取数据和用户输入的对比,调用是否登录过或者允许通过的,并且Guard能非常灵活的构建一套自己的认证体系。

laravel中asset()方法的用法:1、用于引入静态文件,语法为“src="{{asset(‘需要引入的文件路径’)}}"”;2、用于给当前请求的scheme前端资源生成一个url,语法为“$url = asset('前端资源')”。

本篇文章给大家带来了关于laravel的相关知识,其中主要介绍了关于使用中间件记录用户请求日志的相关问题,包括了创建中间件、注册中间件、记录用户访问等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于laravel的相关知识,其中主要介绍了关于中间件的相关问题,包括了什么是中间件、自定义中间件等等,中间件为过滤进入应用的 HTTP 请求提供了一套便利的机制,下面一起来看一下,希望对大家有帮助。

laravel路由文件在“routes”目录里。Laravel中所有的路由文件定义在routes目录下,它里面的内容会自动被框架加载;该目录下默认有四个路由文件用于给不同的入口使用:web.php、api.php、console.php等。

在laravel中,scope用于处理模型中的数据,在模型中可以定义scope开头方法,这类方法可以通过模型直接调用,被称为查询作用域,语法为“public function scope首字母大写单词($query){...}”。


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Herunterladen der Mac-Version des Atom-Editors
Der beliebteste Open-Source-Editor

Dreamweaver CS6
Visuelle Webentwicklungstools

Dreamweaver Mac
Visuelle Webentwicklungstools

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

MinGW – Minimalistisches GNU für Windows
Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.