2016-04-22 11 views
1

yii2ファイルキャッシュとredisキャッシュも使用しています。メインの設定ファイルでは、redisキャッシュ設定が定義されています。ファイルキャッシュ上のYii2 redisキャッシュ

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

また、ファイルキャッシュの設定でコンポーネントを追加しました。

私は $cache = Yii::$app->cache;を使用していキャッシングのキャッシュ Yii::$app->cache->set($id, $value, $time);を設定するので、
'cache' => [ 
     'class' => 'yii\caching\FileCache', 
    ], 

Yii::$app->cache->get($id);を使用して取得するので、これはファイルキャッシュから値を設定するか、ファイルキャッシュを無効にし、その上にRedisのを使用しているされています。

これは、私たちはRedisのとファイルキャッシュを無効にどのように我々はこのYii::$app->cache->get($id);でRedisのキャッシュを使用し.Canか、私たちはuse yii\redis\Cache;でRedisのを使用して、はい

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

答えて

1

を使用して設定することができますファイルキャッシュを使用している場合単にこれに$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); 

私はまた、一部のコンポーネントが既に生成済みのルールをredis DBに格納し始めたurlManagerのように使用していることに気付きました。 $キャッシュ内で使用する場合の利用可能なプロパティとメソッドの完全な一覧については、yii\redis\Cacheドキュメントを参照してください。

+0

あなたのクラスが定義されているキャッシュ設定では、redisですが、あなたは$ cache = Yii :: $ app-> cacheを使用しています。 $ redis = Yii :: $ app-> redisの代わりに。これは、redisまたはファイルキャッシュに格納されます。 –

+0

私は 'yii \ caching \ FileCache'の代わりに' yii \ redis \ Cache'を使うために 'cache'コンポーネントを作ったので、redisではyesです。これで、両方のコンポーネント** cache **と** redis **は同じredis DBを使用する必要があります。両方を使用することができます。唯一の違いは、 'Yii :: $ app-> cache'の中でaddやget(リンクされたドキュメントを見てください)のような単純なものを行うことができることです。 'hmset()'のようなより高度なredis関連のメソッドを使うためには、 '$ redis'コンポーネントの中でそれらを呼び出す必要があります。 –

+0

ファイルキャッシュを使用すると、キャッシュを保存するランタイム用のファイルが作成されます。これは、redisのプロパティクラスを定義した後、実行時にredis dbから使用するファイルを作成しません。 –

関連する問題