确保使用 \yii\redis\Cache 类的 Yii2 不会散列键名非常重要。
// prefix:keyname1 -> 0e46d28d5fb7676bffd12253c26aec56
Yii::$app->cache->set( 'prefix:keyname1', 'key-value-1, 60 * 60 * 24 );
// keyname2 -> keyname2
Yii::$app->cache->set( 'keyname2', 'key-value-2, 60 * 60 * 24 );
问题的本质在于,如果key的名称中有‘:’、‘@’等符号。- \yii\redis\Cache 类将使用 md5 算法散列这些键名...我如何强制 \yii\redis\Cache 不这样做?
您需要重载
buildKey类方法Cache。例如,像这样(对于基本模板)。
在文件夹中创建一个
components类CustomRedisCache:在配置文件中,使用此类代替
\yii\redis\Cache: