Драйвер сеанса Redis Laravel - несоответствия сеанса Redis - PullRequest
0 голосов
/ 10 октября 2018

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

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

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

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

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

print_r(Session::all());

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

1 Ответ

0 голосов
/ 10 октября 2018

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

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

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

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


После просмотра вашего редактирования:

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

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

Redis::get('user:profile:'.$id);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...