我在AWS Elastic Beanstalk PHP 7.3上运行一个应用程序,该应用程序在64位Amazon Linux/22.9.12上运行,最近我开始收到以下错误-
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');
我得到了上面的错误。
我使用的是通过.eextensions安装的phpredis
https://github.com/phpredis/phpredis/archive/develop.zip -O phpredis.zip
在做了一些研究后,我发现Redis.php中的删除功能是不推荐的,因为它很快就会被删除。当我更改第176行RedisEngine.php文件(这是一个CakePHP库文件,通过composer作为依赖项下载(中的函数调用时
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
是异步工作的,这不会阻止代码执行。
请注意,只有当您的redis版本等于或大于4.0.0 时,unlink
才可用