如何在保留会话数据的同时清除redis缓存:Laravel 5

raj*_*pta 8 php session redis laravel-5

我使用redis作为会话驱动程序,我想在保留会话数据的同时清除缓存,所以基本上用户可以保持登录状态.有关重组或处理当前情况的任何建议吗?

注意:我不想为会话和其他缓存数据使用单独的redis实例.

Cha*_*ade 25

介绍

默认情况下,redis为您提供了16个单独的数据库,但是开箱即用的laravel将尝试将数据库0用于会话和缓存.

我们的解决方案是让Redis使用数据库0进行缓存,将数据库1缓存为Session,通过运行php artisan cache:clear问题解决会话问题.

1.设置Session Redis连接

修改config/database.php,添加选项的sessionredis:

'redis' => [

   'cluster' => false,

   'default' => [
       'host'     => env('REDIS_HOST', 'localhost'),
       'password' => env('REDIS_PASSWORD', null),
       'port'     => env('REDIS_PORT', 6379),
       'database' => 0,
   ],

   'session' => [
         'host'     => env('REDIS_HOST', 'localhost'),
         'password' => env('REDIS_PASSWORD', null),
         'port'     => env('REDIS_PORT', 6379),
         'database' => 1,
   ],
],
Run Code Online (Sandbox Code Playgroud)

2.利用session连接

修改config/session.php,更改以下内容:

'connection' => null,
Run Code Online (Sandbox Code Playgroud)

至:

'connection' => 'session',
Run Code Online (Sandbox Code Playgroud)

3.使用Redis作为会话驱动程序

修改.env,更改SESSION_DRIVER:

SESSION_DRIVER=redis
Run Code Online (Sandbox Code Playgroud)

4.测试出来

执行以下artisan命令,然后检查您的登录状态:

php artisan cache:clear
Run Code Online (Sandbox Code Playgroud)

如果登录状态仍然存在,瞧!