我使用redis作为会话驱动程序,我希望在保存会话数据的同时清除缓存,这样用户基本上可以继续登录。对结构调整或处理现状有何建议?
注意事项:我不想对会话和其他缓存数据使用单独的redis实例。
发布于 2016-07-30 10:52:41
简介
默认情况下,redis会为您提供16个单独的数据库,但laravel将尝试在会话和缓存中使用数据库0。
我们的解决方案是让Redis使用数据库0缓存,让数据库1用于会话,通过运行php artisan cache:clear问题解决会话问题。
1.设置会话Redis连接
修改config/database.php,将session键添加到redis选项中:
'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,
],
],2.利用session连接
修改config/session.php,更改以下内容:
'connection' => null,至:
'connection' => 'session',3.使用Redis作为会话驱动程序
修改.env,更改SESSION_DRIVER
SESSION_DRIVER=redis4.试验
执行以下artisan命令,然后检查您的登录状态:
php artisan cache:clear如果登录状态仍然存在,哇!
发布于 2016-01-31 07:50:53
我不知道拉拉维尔,但一般来说最好的两种选择是:
FLUSHDB以清除缓存。在这两个选项中,如果缓存键未到期,则在第一次执行此操作后,应创建一个使用SCAN删除旧键的脚本。请参阅http://redis.io/commands/scan
顺便提一句,将缓存和其他东西保存在同一个redis实例中通常是个坏主意,就像缓存中通常使用基于LRU的驱逐,而且您不希望将其与较少的易失性键混合使用。
发布于 2016-02-01 22:45:41
https://laravel.com/docs/5.2/redis#configuration
'redis' => [
'cluster' => false,
'default' => [
'host' => '127.0.0.1',
'port' => 6379,
'database' => 0,
],
],在redis连接选项中有“数据库”,只需为会话和缓存选择不同的数据库。我只是希望redis缓存驱动程序使用flushdb而不是flushall来刷新:)。
https://stackoverflow.com/questions/35111416
复制相似问题