在 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 的文档中写成注释:

注意:deletedel 的别名,将在未来的 phpredis 版本中删除。

考虑使用 unlink 而不是 deletedel 方法,因为 unlink 是异步工作的,这不会阻止您的代码执行。

请注意,unlink 仅在您的 redis 版本等于或大于 4.0.0 时可用

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...