首页 > 解决方案 > Yii2 使用 memcache 设置和获取缓存值

问题描述

我正在尝试按键获取缓存值,在这种情况下,该值为“count”。但有时我得到了价值,有时没有。钥匙的长度是一样的。问题出在哪里?

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

    $q=  Yii::$app->getSecurity()->generateRandomString(24) . time() ;
    $key = 'captcha_value_' . $q;

    $cache->set($key, 'count');

    echo "<br/>$key: ".$cache->get($key)."";

这就是输出

     captcha_value_DgytIGlX-tagsEFzoDjcK5ao1574253702:count 
     captcha_value_6qNykCcw91KCSD2lJ0Trl_cY1574254788:

标签: phpcachingyii2memcached

解决方案


我找到了解决方案。

问题是由于某种原因我有两个 Memcache 服务器。一个主机是localhost,另一个主机是memcache。他们互相替换。

要解决此问题,您需要在缓存帮助器方法 ReplaceArrayValue 中的文件 common/config/main-local.php 中指定

'cache' =>  [
        'class' => 'yii\caching\MemCache',
        'servers' => new \yii\helpers\ReplaceArrayValue([
            [
                'host' => 'memcache',
                'port' => 11211,
            ],
        ]),
        'useMemcached' => true,
    ],

推荐阅读