我看文档里面,那个predis 和 redis 有什么区别?
看文档有些不明白地方,predis 设置 aliases,不要与 redis重复
'Redis' => Illuminate\Support\Facades\Redis::class,
'RedisManager' => Illuminate\Support\Facades\Redis::class,
两者有什么区别吗?用法好像都一样的
phpredis
是用C写的原生扩展,需要通过pecl安装,或者自己手动编译源码,然后修改php.ini文件加载此扩展。predis
是用php写的composer软件包,直接composer安装。相同点就是都可以完成与
Redis
的通信和增删改查操作,并且两个都占用相同的\Redis
完全限定名称。不同点就是一个是C写的原生扩展,一个是php写的软件包。
不能重复的那个问题,就是上面提到的字体加粗部分。如果你的php环境安装了
phpredis
原生扩展和predis
软件包都安装了,那么在你的config/database.php
中redis.client
就需要改为phpredis
,这样在框架中调用\Redis
类的时使用的是原生扩展。此时若你改为predis
,那么框架在加载时,会加载predis
的相关的变量定义,这其中就包括定义\Redis
命名空间。但因为\Redis
命名空间早已被原生扩展占用,导致系统报错。如果在已安装
phpredis
原生扩展的环境中一定要用predis
的话,解决办法就是改config/app.php
中aliases
数组里的Redis
建名。或者自己 手动实例化一个predis
实例出来用: