Драйвер сеанса Laravel Redis - несогласованности сеанса Redis

Я использую Laravel 5.7. Redis настроен как мой кеш и драйвер сеанса.

В моем контроллере, если я напишу в свой сеанс с помощью $ request-> session () -> put () ИЛИ Session :: put (), он появится, когда я распечатаю свой кеш для идентификатора сеанса:

print_r(unserialize(Cache::get(Session::getId())));

Обратите внимание: моя основная цель при выводе данных сеанса таким образом - получить доступ к сеансам, которые не являются моим активным сеансом.

Однако, если я напишу в свой сеанс, используя любой из этих методов в строке в моем домене, они НЕ будут отображаться в печати кеша, но будут отображаться (вместе со всем остальным, что отображается в печати кеша), если я использовать:

print_r(Session::all());

Я в недоумении относительно того, что происходит. Я подтвердил, что то, что я говорю, верно и при доступе к данным через redis cli. Судя по всему, если я пишу в сессию в домене, она как-то хранится где-то еще? Мысли?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
498
1

Ответы 1

Ваш кеш и ваш сеанс - это две совершенно разные сущности, даже если они могут использовать один и тот же драйвер.

Сеанс используется для поддержания отношений с пользователем. Подробнее см. Документация сеанса PHP.

Кеш - это место, где вы храните и ищите часто используемые данные, вместо того, чтобы обращаться к дорогостоящему коду или базе данных. Он недолговечен, и никогда не гарантируется, что он будет содержать какие-либо данные.

Почему бы вам просто не использовать Session::get('whatever')?


Увидев ваше редактирование:

Note, my primary goal in outputting session data this way is to access sessions that are not my active session.

Вы должны хранить эти данные через более надежный механизм хранения, чем ваш кеш. Как я упоминал ранее, кеш недолговечен. Вы можете использовать redis, поскольку это хранилище ключей и значений, а не настоящий кеш, как memcached. Просто используйте это напрямую как таковое:

Redis::get('user:profile:'.$id);

Все, что вы сказали, правда. Однако аргументация в моем случае связана с отслеживанием сеансов пользователя на нескольких устройствах и предоставлением мне возможности уничтожить их все сразу. Я планирую встроить это в кеш вместо базы данных.

Pete_1 10.10.2018 05:17

Что происходит, когда ваш кеш заполнен? Он начинает уничтожать данные. Лучше использовать подходящий инструмент для соответствующей работы.

Ben Harold 10.10.2018 05:19

Даже когда я рассматриваю ваши аргументы, меня все равно раздражает мой вопрос. Почему он будет вести себя по-другому в контроллере и в домене? Думаю, я все равно хотел бы знать в любом случае.

Pete_1 10.10.2018 05:20

Он не настолько по-разному ведет себя, как вы вызываете другой код. Если вы действительно хотите знать разные пути кода, вам следует использовать xdebug и выполнить пошаговое выполнение приложения.

Ben Harold 10.10.2018 05:23

Другие вопросы по теме