Yii2 redis缓存在文件缓存上

时间:2016-04-22 07:04:03

标签: php caching redis yii2

我正在使用带文件缓存和redis缓存的yii2。在我的主配置文件中定义了redis缓存设置。

'redis' => [
        'class' => 'yii\redis\Connection',
        'hostname' => 'MY_IP',
        'port' => MY_PORT,
        'database' => 0,
    ],

我还在文件缓存设置下添加了一个组件。

'cache' => [
        'class' => 'yii\caching\FileCache',
    ],

所以对于缓存,我使用$cache = Yii::$app->cache;并设置缓存Yii::$app->cache->set($id, $value, $time);并使用Yii::$app->cache->get($id);,这是设置来自文件缓存的值,或者它是覆盖文件缓存并在其上使用redis。

如果这是使用文件缓存,那么我们如何使用redis覆盖文件缓存。可以使用带有此Yii::$app->cache->get($id);的redis缓存,或者我们可以将redis与use yii\redis\Cache;一起使用并使用

$redis->hmset('test_collection', 'key1', 'val1', 'key2', 'val2');

1 个答案:

答案 0 :(得分:2)

是的,您只需将$cache属性设置为:

即可
'cache' => [
    'class' => 'yii\redis\Cache',
    'redis' => 'redis' // id of the connection component as it is already defined
];

在我的代码中,我这样使用它:

 $cache = Yii::$app->cache;

 $cache->add($access_token, ['id' => Yii::$app->user->id], $expire);

 $user = $cache->get($access_token);

我还注意到一些组件已经在使用它,就像urlManager一样,它开始将生成的规则存储在redis DB中。在 $ cache 中使用时,请参阅yii\redis\Cache文档以获取可用属性和方法的完整列表。