我正在研究PHP 5.3.10,Yii v1.1.14和Redis 2.2.12。我正在使用CRedisCache进行缓存(不是扩展)。
我在下面尝试了简单的代码
Yii::app()->cache->set($name, $data, 0);
此命令以 redis 格式存储数据,但指定值的键(在 redis 中)不等于 set() 函数的第一个参数。(实际上我可以使用相同的键来检索缓存Yii::app()->cache->get($name);
)
实际上我想要附加值的确切 redis 键,用于附加我使用以下代码。
Yii::app()->cache->executeCommand("APPEND",array("KEY" => $name, "DATA" => $data));
关于获取 redis 密钥的任何想法.
当我们使用 CRedisCache 时,它会扩展 Ccache.php
'class' => 'CRedisCache',
'hostname' => 'localhost',
'port' => 6379,
'database' => 0,
'hashKey' => false,
'keyPrefix' => '',
设置哈希键 false,以便您的密钥将在您设置时存储keyPrefix 是一个以每个缓存键为前缀的字符串,将其设置为空
使用 executeCommand() 解决了用户定义键的问题
Yii::app()->cache->executeCommand("GET",array("KEY" => $name));
Yii::app()->cache->executeCommand("SET",array("KEY" => $name, "VALUE" => json_encode($data)));
仍在寻找解决问题的更好方法。
更好的方法是覆盖generateUniqueKey方法并简单地返回$key而不是散列键
喜欢
class RedisCache extends CRedisCache
{
protected function generateUniqueKey($key)
{
return $key;
}
}
Yii 在缓存服务器上设置密钥 (md5) 之前对其进行哈希处理。这就是为什么 redis 上的键不等于你的$name参数。