Yii缓存控制台应用程序和Web应用程序之间的共享缓存?

时间:2013-09-26 10:14:21

标签: caching yii redis

我正在使用控制台应用为我的应用创建缓存。 但我无法为我的网络应用程序共享该缓存。 (在我的redis数据库中显示从控制台创建) 任何想法如何将从控制台创建的缓存共享到我的网络应用程序?

2 个答案:

答案 0 :(得分:3)

我遇到了同样的问题,通过为后端和前端两个应用保持相同的设置来解决。

'cache'=> array(
    'class' => 'CRedisCache',
    'hostname' => 'localhost',
    'port' => 6379,
    'database' => 0,
    'hashKey' => false,
    'keyPrefix' => '',
);

将keyPrefix设置为empty,将hashKey设置为false,

如果使用keyPrefix和hashKey的默认设置,CRedisCache将为set命令提供的相同值创建不同的密钥 例如

 Yii::app()->cache->set('foo', 'bar'); frontend server 
will create key in redis something like "0327f5f7378e9056c775ab69aa206322"

  Yii::app()->cache->set('foo', 'bar'); backend server 
ll create key in redis something like "d2c81df2db2285435c1975b5cb5c5b66"      

CRedisCache通过对每个请求的服务器使用hashKey和keyPrefix的组合来创建唯一键。

答案 1 :(得分:0)

前端配置文件:

'cache' => array(
    'class'     => 'system.caching.' . (!MW_DEBUG ? 'CFileCache' : 'CDummyCache'),
    'keyPrefix' => md5('frontend.' . MW_VERSION . Yii::getPathOfAlias('frontend')),
),

控制台配置文件:

'cache' => array(
  'class'     => 'system.caching.' . (!MW_DEBUG ? 'CFileCache' : 'CDummyCache'),
  'keyPrefix' => md5('console.' . MW_VERSION . Yii::getPathOfAlias('backend')),
),

reference answer