我今天在尝试设置 CakePHP 以使用 Redis 作为缓存引擎时遇到了同样的问题。
巧合的是,我还从您链接到的两个博客中阅读了相同的设置说明。
原因是我从Another cake-redis config setup 博客文章中复制粘贴了Configure::write(...) 代码块,并将其粘贴到文件中,而没有先注释掉已经在核心中的Configure::write(...) 代码块。 php 文件。
我假设您已经成功设置 Redis on Windows 并安装了 PHPRedis extension 没有任何问题。
我在这里使用Another cake-redis config setup 的说明。
在您的 app/Config/core.php 文件中,注释掉以下块:(这从我的 core.php 中的第 218 行开始)
Configure::write('Session', array(
'defaults' => 'php'
));
相反,您可以将其放入:(您可以更改值以满足您的特定需求)
Configure::write('Session', array(
'defaults' => 'cache',
'timeout' => 100,
'start' => true,
'checkAgent' => false,
'handler' => array(
'config' => 'session'
)
));
之后,将$engine的值改为'Redis',这样就变成了:
$engine = 'Redis';
然后,把这段代码放进去,我把它放在文件的最后:(同样,你的值可能会根据你的设置而有所不同)
Cache::config ('session', array (
'Engine' => $engine,
'Prefix' => $prefix . 'cake_session_',
'Duration' => $duration
));
就是这样。你完成了!无需更改任何其他内容。
为了确保 Redis 与 CakePHP 一起正常工作,我运行了 CakePHP 附带的 RedisEngine 测试套件。您需要安装 PHPUnit 才能使其正常工作。
可以通过http://your-cakephp-project/test.php访问
点击 Core 下的“Tests”,然后点击“Cache/Engine/RedisEngine”
如果一切顺利,您应该会看到所有测试都通过了。
或者,您可以在命令提示符下使用 redis-cli 来确认 Redis 是否正确存储了密钥。
输入 redis-cli 登录后,输入 KEYS *
这应该会为您提供与 CakePHP 设置相关的键列表。
例如“myapp_cake_core_object_map”键。
希望这会有所帮助。