【问题标题】:Yii caching share caching between console app and web app?Yii 缓存控制台应用程序和 Web 应用程序之间的共享缓存?
【发布时间】:2016-04-15 21:09:48
【问题描述】:

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

【问题讨论】:

    标签: caching yii redis


    【解决方案1】:

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

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

    设置keyPrefix为空,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 的组合为每个请求的服务器创建唯一键。

    【讨论】:

    • FWIW,您实际上不需要将 hashKey 设置为 false(实际上您不应该)。只需确保控制台和 Web 应用程序上的 keyPrefix 相同就足够了。
    【解决方案2】:

    前端配置文件:

    '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

    【讨论】:

      猜你喜欢
      • 2020-06-06
      • 2015-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-25
      • 2011-11-27
      • 2012-10-26
      • 1970-01-01
      相关资源
      最近更新 更多