首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在保存会话数据的同时清除redis缓存: Laravel 5

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

Stack Overflow用户
提问于 2016-01-31 07:30:28
回答 5查看 32.1K关注 0票数 12

我使用redis作为会话驱动程序,我希望在保存会话数据的同时清除缓存,这样用户基本上可以继续登录。对结构调整或处理现状有何建议?

注意事项:我不想对会话和其他缓存数据使用单独的redis实例。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-07-30 10:52:41

简介

默认情况下,redis会为您提供16个单独的数据库,但laravel将尝试在会话和缓存中使用数据库0。

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

1.设置会话Redis连接

修改config/database.php,将session键添加到redis选项中:

代码语言:javascript
复制
'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,更改以下内容:

代码语言:javascript
复制
'connection' => null,

至:

代码语言:javascript
复制
'connection' => 'session',

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

修改.env,更改SESSION_DRIVER

代码语言:javascript
复制
SESSION_DRIVER=redis

4.试验

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

代码语言:javascript
复制
php artisan cache:clear

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

票数 32
EN

Stack Overflow用户

发布于 2016-01-31 07:50:53

我不知道拉拉维尔,但一般来说最好的两种选择是:

  1. 更改缓存键的格式。您应该使用版本化的缓存键,以便将来可以这样做,即“cache.1”。因此,您可以增加,然后它使您的所有键在一次无关。
  2. 将缓存移动到同一个redis实例中的不同db号。这样,以后还可以对该db号执行FLUSHDB以清除缓存。

在这两个选项中,如果缓存键未到期,则在第一次执行此操作后,应创建一个使用SCAN删除旧键的脚本。请参阅http://redis.io/commands/scan

顺便提一句,将缓存和其他东西保存在同一个redis实例中通常是个坏主意,就像缓存中通常使用基于LRU的驱逐,而且您不希望将其与较少的易失性键混合使用。

票数 3
EN

Stack Overflow用户

发布于 2016-02-01 22:45:41

https://laravel.com/docs/5.2/redis#configuration

代码语言:javascript
复制
'redis' => [
    'cluster' => false,
    'default' => [
        'host'     => '127.0.0.1',
        'port'     => 6379,
        'database' => 0,
    ],
],

在redis连接选项中有“数据库”,只需为会话和缓存选择不同的数据库。我只是希望redis缓存驱动程序使用flushdb而不是flushall来刷新:)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35111416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档