异步Redis客户端

Swoole-1.8.0版本增加了对异步Redis客户端的支持,基于redis官方提供的hiredis库实现。Swoole提供了__call魔术方法,来映射绝大部分Redis指令。

编译安装hiredis

使用Redis客户端,需要安装hiredis库。下载hiredis源码后,执行

make -j
sudo make install
sudo ldconfig

也可以使用aptyum安装hiredis,请务必安装dev

  • Ubuntu:apt install libhiredis-dev
  • CentOS:yum install libhiredis-devel

启用异步Redis客户端

4.2.x 中 redis-client 即是 异步redis客户端开启, 并非无法开启, 以实际使用为准

编译swoole时,在configure指令中加入--enable-async-redis

./configure --enable-async-redis
make clean
make -j
sudo make install

可能遇到的问题

php-m 发现swoole消失或者是通过php --ri swoole没有显示async redis clientredis client

vi ~/.bash_profile
在最后一行添加 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
source ~/.bash_profile

重新编译安装swoole即可


  • farss

    Swoole\Redis::__call(): redis client is waiting for response

    不能同时执行redis方法

  • 小谢

    /download/php/swoole-1.8.6/swoole_redis.c(370) : Freeing 0x02EBD770 (23 bytes), script=/www-root/uarein_test/api/www/index.php === Total 1 memory leaks detected ===

    突然遇到这样的问题,好像是内存泄漏,怎么办。centos6.5 阿里云的。。。php是5.5的 gcc 4.4

  • cjj8110

    如果 libhiredis.so.0.13: cannot open shared object file: No such file or directory in Unknown on line 0 可指定 --enable-async-redis=/usr/local

  • 青

    PHP Fatal error: Uncaught Error: Class 'swoole_redis' not found

  • Enlife_Runner

    安装完 swoole 后出现 libhiredis.so.0.13: cannot open shared object file: No such file or directory in Unknown on line 0,缺少动态库,也可以这样 1. vim /etc/ld.so.conf 2. 添加 /usr/local/lib 3. sudo ldconfig

  • 队长

    hiredis 也安装, 编译swoole 的时候 也加了--enable-async-redis,php -m 也能看到 swoole ,但是就是报:PHP Fatal error: Uncaught Error: Class 'swoole_redis' not found

  •  HI

    libhiredis.so.0.13: cannot open shared object file: No such file or directory in Unknown on line 0 的解决方法 #在最后一行添加 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

  •  HI

    用vi打开当前用户的bash_profile

    vi ~/.bash_profile

    在最后一行添加

    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

  • 小牛

    Swoole-1.9.23 版本的,编译redis时都正常,但还是出现问题 PHP Fatal error: Class 'Swoole\Redis' not found in ......

  • sven

    Class 'swoole_redis' not found的解决办法是在/etc/ld.so.conf.d/ 目录下增加 libc.conf文件, 内容为"/usr/local/lib", 然后执行ldconfig,再执行教程中的swoole安装过程(--enable-async-redis后面不要加路径了)。我用本方法解决了这个问题。

  • hulk

    PHP Startup: Unable to load dynamic library '/usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/swoole.so' - libhiredis.so.0.13: cannot open shared object file: No such file or directory in Unknown on line 0

  • sz-jack

    mac 找不到ldconfig

  • ╰︶毛毛、

    mac 找不到ldconfig +1

  • 夜白

    找不到ldconfig +2

  • misswell

    mac 找不到ldconfig +3

  • 纪很懒

    不论我怎么安装都没出现async redis client 只有 redis client

  • liudaoping

    安装hiredis出错,4.04版本测试可以安装,安装4.2版本没有显示async redis client, 期间安装了4遍以上,得出的结论是4.2版本不能安装hiredis,希望帮到你们,也解答一下上面那个哥们的疑惑

  • haha

    @纪很懒 我也是,没看见async redis client

  • xinhaonaner

    sudo update_dyld_shared_cache

  • twosee

    redis client 就是 async client

  • Goer

    swoole版本4.2.1 安装完hiredis 0.13.3后只有async redis => enable 没有client字样。

  • 跪求安装好的快照!

  • 素丝莲芯

    我安装了hiredis,编译swoole的时候没有—enable-async-redis选项,这是怎么回事啊?换用pecl安装swoole也没有,pecl安装要怎么启用异步redis呢

  • 呸呸呸

    同问,安装了hiredis,编译swoole的时候没有—enable-async-redis选项,这是怎么回事啊?