我想把会话和缓存数据放到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连接吗?或者我必须把它们混在一起?
发布于 2016-07-30 18:59:46
引言
这是我的笔记,对于遇到这个问题的其他人,我认为这应该在文档中出现。
默认情况下,redis为您提供了16个独立的数据库,但laravel将尝试为会话和缓存使用数据库0。
我们的解决方案是让Redis缓存使用数据库0,数据库1用于会话,在那里通过运行php artisan cache:clear问题来解决会话。
注释:在Laravel 5.1上测试
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如果登录状态仍然存在,就是这样!
发布于 2018-02-16 01:01:06
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”
'connection' => 'session',发布于 2015-01-15 12:23:51
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'https://stackoverflow.com/questions/27835300
复制相似问题