![](/img/trans.png)
[英]How to clear redis cache while keeping session data : Laravel 5
[英]Laravel: how to separate cache and session into different redis database?
我想將會話和緩存數據放入redis。 這是我在database.php中的配置:
'redis' => array(
'cluster' => false,
'default' => array(
'host' => '192.168.56.101',
'port' => 6379,
'database' => 0,
),
'session' => array(
'host' => '192.168.56.101',
'port' => 6379,
'database' => 1,
),
),
session.php文件:
return array(
'driver' => 'redis',
'connection' => 'session',
);
cache.php:
'driver' => 'redis',
但是,我寫這樣的代碼:
Cache::remember('aa',1,function(){
return 'bb';
});
緩存驅動程序使用與會話驅動程序相同的redis數據庫,這會導致:
127.0.0.1:6379[1]> keys *
1) "aa"
2) "e0606244bec40b0352fb2b7b65d98049e49f6189"
任何人都知道如何強制緩存使用特定的redis連接? 或者我必須將它們混合在一起?
這是我的注釋,對於其他一些遇到這個問題的人,我認為這應該是在文檔中。
默認情況下,redis為您提供了16個單獨的數據庫,但是開箱即用的laravel將嘗試將數據庫0用於會話和緩存。
我們的解決方案是讓Redis使用數據庫0進行緩存,使用數據庫1進行Session,通過運行php artisan cache:clear
解決會話問題php artisan cache:clear
問題。
注意:在Laravel 5.1上測試過
修改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,
],
],
session
連接 修改config/session.php
,更改以下內容:
'connection' => null,
至:
'connection' => 'session',
修改.env
,更改SESSION_DRIVER
:
SESSION_DRIVER=redis
執行以下artisan命令,然后檢查您的登錄狀態:
php artisan cache:clear
如果登錄狀態仍然存在,瞧!
Laravel 5現在支持這一點。
https://github.com/laravel/framework/commit/d10a840514d122fa638eb5baa24c8eae4818da3e
您可以通過修改config/cache.php
來選擇redis連接
'stores' => [
'redis' => [
'driver' => 'redis',
'connection' => 'your-connection-name',
],
],
Laravel 4 CacheManager
不支持選擇redis連接。
您需要做的是修改/擴展CacheManager
並覆蓋createRedisDriver()
方法。
修改此行
return $this->repository(new RedisStore($redis, $this->getPrefix()));
至
return $this->repository(
new RedisStore($redis, $this->getPrefix(),
$this->app['config']['cache.redis'])
);
現在,您可以在cache.php中定義配置
'redis' => 'your-connection-name'
Laravel 5.5:
database.php應如下所示:
'redis' => [
'client' => 'predis',
'default' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => 0,
],
'session' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => 1,
],
],
在session.php中,您還必須更新右鍵的“連接”鍵。 在這種情況下'會話'
'connection' => 'session',
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.