我正在redis
用作缓存数据的驱动程序。Laravel的数据库配置可以定义Redis连接信息。
'redis' => array(
'cluster' => true,
'default' => array(
'host' => '127.0.0.1',
'port' => 6379,
'database' => 0,
),
),
但是,如果我想定义多个连接并使用特定connection
于缓存的连接,如何在Laravel 4上执行此操作。cache.php上没有连接配置,可以在其中指定redis连接名称。当前connection
,它具有一个配置,如果缓存驱动程序为,则将使用该配置database
。
编辑
我只是看过Laravel代码,并且在初始化Redis驱动程序时,Laravel似乎没有考虑连接。我的理解正确吗?
http://laravel.com/api/source-class-Illuminate.Cache.CacheManager.html#63-73
protected function createRedisDriver()
{
$redis = $this->app['redis'];
return $this->repository(new RedisStore($redis, $this->getPrefix()));
}
Laravel可以处理多个连接。请参阅有关添加/使用多个数据库连接的问题/答案。
为redis定义多个连接后,您需要做一些辅助工作才能访问代码中的某些位置。可能看起来像这样:
$redisCache = App::make('cache'); // Assumes "redis" set as your cache
$redisCache->setConnection('some-connection'); // Your redis cache connection
$redisCache->put($key, $value');
编辑
我将在此处添加一些内容,以使您了解如何执行此操作,因此您不需要到处都需要连接逻辑:
最简单的是,您可以将Redis缓存的实例绑定到应用程序中的某个位置(也许是start.php或其他app / start / *。php文件):
App::singleton('rediscache', function($app){
$redisCache = $app['cache'];
$redisCache->setConnection('some-connection'); // Your redis cache connection
return $redisCache;
});
然后,在您的代码中,您可以执行以下操作来缓存:
$cache = App::make('rediscache');
$cache->put($key, $value); // Or whatever you need to do
如果您有自己的代码应用程序库,则也可以创建服务提供者。您可以在其中注册“ rediscache”,然后在您的应用程序中以相同的方式使用它。
希望这可以作为一个开始-还有其他代码体系结构-使用依赖注入,也许还可以使用存储库来帮助进一步组织代码。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句