如何解决在 CakePHP 2.10.24 上调用未定义的方法 Redis::delete()
我在 64 位 Amazon Linux/2.9.12 上运行的 AWS Elastic Beanstalk PHP 7.3 上运行应用程序,最近我开始收到以下错误 -
Call to undefined method Redis::delete()
我有一个可以写入和读取的 Redis 缓存配置。但是当我尝试删除相同的内容时,出现上述错误。这在以前是不会发生的。我已经正确配置了缓存,如下所示
Cache::config('1min',[
'engine' => CACHE_ENGINE,'server' => CACHE_HOST,'port' => CACHE_PORT,'prefix' => CACHE_PREFIX,'duration'=>'+1 minute'
]);
我可以执行以下操作
Cache::write('cache1','value','1min');
Cache::read('cache1','1min');
没有任何错误。仅当我尝试使用以下命令删除密钥时
Cache::delete('cache1','1min');
我收到上述错误。
我正在使用通过 .ebextensions 安装的 phpredis。我正在通过此链接下载软件包 -
https://github.com/phpredis/phpredis/archive/develop.zip -O phpredis.zip
经过一番研究,我发现Redis.php中的删除功能已被弃用,因为即将被删除。当我更改 RedisEngine.php 文件(这是一个 CakePHP 库文件,通过 Composer 作为依赖项下载)中的函数调用时,来自
的第 176 行public function delete($key) {
return $this->_Redis->delete($key) > 0;
}
到
public function delete($key) {
return $this->_Redis->del($key) > 0;
}
缓存删除工作正常。这在以前是不会发生的。如果我能尽早得到这方面的帮助,我将不胜感激。
谢谢!
解决方法
在 phpredis 的文档中写成注释:
注意:delete
是 del
的别名,将在未来的 phpredis 版本中删除。
考虑使用 unlink
而不是 delete
和 del
方法,因为 unlink
是异步工作的,这不会阻止您的代码执行。
请注意,unlink
仅在您的 redis 版本等于或大于 4.0.0 时可用
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。