Рубрики
Uncategorized

Асинхронное повторное обучение swool (8)

Автор оригинала: David Wong.

1、 Асинхронная установка службы redis

Руководство по вводу официальных документов Swool – > быстрый запуск – > асинхронный клиент redis

1. Swool использует асинхронное предварительное условие redis

  • Услуги Redis
  • Библиотека Hiredis( X )
  • Для компиляции swoole вам необходимо добавить --enable-async-redis ( X )

Будьте осторожны : если ваша версия swool выше 4.3, вам нужно только установить службу redis. Ни библиотека hiredis, ни перекомпиляция swool не требуется, поскольку была встроена версия выше 4.3.

2. Установка исходного кода redis

Загрузите последнюю версию с официального сайта redis на локальный, а затем извлеките ее.

Загружайте, извлекайте и компилируйте Redis с помощью:

$ wget http://download.redis.io/releases/redis-5.0.5.tar.gz
$ tar xzf redis-5.0.5.tar.gz
$ cd redis-5.0.5
$ make

Скомпилированные двоичные файлы доступны в каталоге src. Запустите Redis с: Каталог извлечения Redis: ./redis-5.0.5/src/redis-сервер

$ src/redis-server

Вы можете взаимодействовать с Redis с помощью встроенного клиента:

$ src/redis-cli
redis> set foo bar
OK
redis> get foo
"bar"

3. Установка Hired (нет необходимости устанавливать выше swoole4.3)

Библиотека hiredis в конечном итоге компилируется в файл so и использует его.

Адрес для загрузки: https://github.com/redis/hire

Используйте команду для загрузки на локальный сервер, а затем извлеките:

$ wget https://github.com/redis/hiredis/archive/v0.14.0.tar.gz
$ mv v0.14.0.tar.gz hiredis-v0.14.0.tar.gz
$ tar xzf hiredis-v0.14.0.tar.gz
$ cd hiredis-0.14.0

Сборка и установка:

$ make -j
$ sudo make install
$ sudo ldconfig

4. Перекомпилируйте swool (выше swool 4.3 перекомпиляция не требуется)

Войдите в каталог установочного пакета swool:

$ cd /work/study/softpackage/swoole

Чтобы просмотреть команду параметра настройки:

$ ./configure --help

Покажите:

...

Optional Features and Packages:
  --disable-option-checking  ignore unrecognized --enable/--with options
  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
  --with-libdir=NAME      Look for libraries in .../NAME rather than .../lib
  --with-php-config=PATH  Path to php-config php-config
  --enable-debug-log        Enable swoole debug log
  --enable-trace-log        Enable swoole trace log
  --enable-sockets          Do you have sockets extension?
  --enable-openssl          Use openssl?
  --enable-http2            Use http2.0?
  --enable-swoole           Enable swoole support
  --enable-mysqlnd          Do you have mysqlnd?
  --with-openssl-dir=DIR    Include OpenSSL support (requires OpenSSL >= 0.9.6)
  --with-jemalloc-dir=DIR   Include jemalloc support
  --enable-asan             Enable asan
  --enable-gcov             Enable gcov
  --enable-debug,         compile with debug symbols
  --enable-shared=PKGS    Build shared libraries default=yes
  --enable-static=PKGS    Build static libraries default=yes
  --enable-fast-install=PKGS
                          Optimize for fast installation default=yes
  --with-gnu-ld           Assume the C compiler uses GNU ld default=no
  --disable-libtool-lock  Avoid locking (might break parallel builds)
  --with-pic              Try to use only PIC/non-PIC objects default=use both
  --with-tags=TAGS        Include additional configurations automatic

Почему мы не можем найти его здесь –включить-асинхронный-redis Как насчет этого параметра? После проверки официальных документов swool выясняется, что использование hiredis из swool версии 4.3 больше не требует перекомпиляции. Swool был встроен и может использоваться напрямую. – – -!

Официальный сайт: https://wiki.swoole.com/wiki/

2, Реализация кода

Откройте службу redis:

$  src/redis-server

Откройте службу redis:

connect(REDIS_SERVER_HOST, REDIS_SERVER_PORT);
    $redis->setDefer();
    $redis->set('key1', 'value');

    $redis2 = new Swoole\Coroutine\Redis();
    $redis2->connect(REDIS_SERVER_HOST, REDIS_SERVER_PORT);
    $redis2->setDefer();
    $redis2->get('key1');

    $result1 = $redis->recv();
    $result2 = $redis2->recv();

    var_dump($result1, $result2);
});

Для печати:

$ php redis.php
bool(true)
string(5) "value"