PHPからRedisの操作をする場合、phpredis一択でしょう。
Redis公式がphpredisを推奨しています。
本記事の内容
- phpredisとは?
- phpredisのシステム要件
- phpredisのインストール
- php.iniへの追記
- phpredisの動作確認
それでは、上記に沿って解説します。
phpredisとは?
phpredisは、PHP Extension(拡張モジュール)のことです。
phpredisの機能は、PHPからRedisへのアクセスを可能にします。
PHP Extensionは、C言語で開発されています。
PHP Extensionの利用により、PHPだけでは実行不可能な処理や速度を実現できます。
また、phpredisはRedis公式サイトにおいて推奨されています。
Redis公式
https://redis.io/clients#php
phpredisは、比較的頻繁に更新されています。
Redisもphpredisも最新版を利用しておけば、問題はないでしょう。
以上、phpredisに関しての説明でした。
次は、phpredisのシステム要件を確認します。
phpredisのシステム要件
現時点(2021年6月)でのphpredisの最新バージョンは、5.3.4となります。
この最新バージョンは、2021年3月24日にリリースされています。
phpredisのシステム要件でのポイントは、次の4つです。
- サポートOS
- PHPバージョン
- PECLコマンド
- phpizeコマンド
それぞれを以下で確認していきます。
サポートOS
サポートOSに関しては、以下を含むクロスプラットフォーム対応となります。
- Windows
- macOS
- Linux
phpredisのソースは、公開されています。
最悪、ビルドさえできればどこでも動くはずです。
ただ、Windowsだけは注意が必要です。
Windos以外は、PECLコマンド(後述)でインストールができます。
(Windowsでも頑張ればできるのかもしれませんが、コスパが悪いので頑張りません)
Windowsに関しては、DLLが配布されています。
https://pecl.php.net/package/redis
PHPバージョン
PHPのバージョンは7以上ということです。
現在では、PHP 8.0もリリースされています。
その意味では、古いバージョンを切り捨てるのは賛成です。
Ubuntuの場合なら、OS標準のPHPバージョンは以下。
OS | PHP |
Ubuntu 14.04 | 5.5 |
Ubuntu 16.04 | 7.0 |
Ubuntu 18.04 | 7.2 |
Ubuntu 20.04 | 7.4 |
Ubuntu 14.04は、サポート期限も切れている状況です。
そのことからも、PHP 7.0以降というのは妥当と言えますね。
PECLコマンド
PECL(ピクル)コマンドを使って、phpredisのインストールを行います。
PEARをインストールすると、PECLも同時にインストールされます。
そして、PEARは次のコマンドでインストールします。
$ sudo apt-get update $ sudo apt-get install php-pear
インストールが完了したら、確認しましょう。
$ pecl version PEAR Version: 1.10.12 PHP Version: 8.0.5 Zend Engine Version: 4.0.5 Running on: Linux ubuntu-focal 5.4.0-54-generic #60-Ubuntu SMP Fri Nov 6 10:37:59 UTC 2020 x86_64
これでPECLコマンドが、とりあえずは利用可能です。
なお、Windowsの場合はPECLコマンドが不要となります。
phpizeコマンド
PECLコマンドとphpizeコマンドは、二つで一つです。
PECLコマンドだけ動くようになっても、phpizeコマンドが動かないと意味がありません。
実際にPECLコマンドだけ実行したら、次のエラーが出ます。
running: phpize sh: 1: phpize: not found ERROR: `phpize' failed
このエラーを出さないためには、phpizeコマンドが動くようにする必要があります。
phpizeコマンドを動かすには、次のコマンドを実行します。
$ sudo apt-get install php-dev
では、phpizeコマンドの確認です。
$ phpize -v Configuring for: PHP Api Version: 20200930 Zend Module Api No: 20200930 Zend Extension Api No: 420200930
これで正式にPECLコマンドが利用可能になりました。
まとめ
PHP 7.0以降というのが、若干気になるところです。
実際、まだまだPHP 5系が動いているシステムは存在します。
サポートが切れたから、PHP 7にバージョンアップするとは限りません。
大手企業やセキュリティ意識の高い組織なら、頑張ってバージョンアップはするでしょう。
しかし、そうではない組織ではPHP 5系のまま放置ということがあり得ます。
そのような場合には、phpredisを利用できないでしょう。
そんなときは、Redisの利用よりはPHPのバージョンアップをおススメします。
以上、phpredisのシステム要件について説明しました。
次は、phpredisをインストールしていきます。
phpredisのインストール
phpredisをインストールしていきます。
今回は、以下OSでのインストールをもとに説明します。
$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=20.04 DISTRIB_CODENAME=focal DISTRIB_DESCRIPTION="Ubuntu 20.04.1 LTS"
PHPに関しては、PHP 8.0をインストールしています。
PHP 8.0のインストールに関しては、次の記事で解説しています。
まずは、現状のインストール済みの拡張モジュールを確認しておきます。
$ sudo pecl list (no packages installed from channel pecl.php.net)
では、phpredisのインストールです。
phpredisのインストールは、以下のコマンドとなります。
pecl install redis
上記を実行すると、途中でサポートの有無の確認が行われます。
$ sudo pecl install redis ~ enable igbinary serializer support? [no] : enable lzf compression support? [no] : enable zstd compression support? [no] :
よくわからない場合は、全部そのまま「Enter」を押してください。
処理が続いて、最後に以下の表示で終わります。
Build process completed successfully Installing '/usr/lib/php/20200930/redis.so' install ok: channel://pecl.php.net/redis-5.3.4 configuration option "php_ini" is not set to php.ini location You should add "extension=redis.so" to php.ini
phpredisのインストールは、上手くいったようです。
表示を見ると、php.iniでの作業が必要とのこと。
以上、phpredisのインストールについて説明しました。
次は、表示に従ってphp.iniへの追記を行います。
php.iniへの追記
PHPにphpredisの存在を教えましょう。
そのために、php.iniにredis.soを追記します。
php.iniの場所がわからない場合は、phpinfo()で出力した画面を確認しましょう。
この方法が、最も確実です。
php.iniに「extension=redis.so」を追記します。
この変更を反映させましょう。
そのために、Apacheの再起動が必要です。
Apacheの再起動は、次のように実行します。
$ sudo service apache2 restart
確認は、phpinfo()の画面で行います。
「redis」で検索して、次のような表示があればOKです。
以上、php.iniへの追記に関して説明しました。
最後は、phpredisの動作確認を行います。
phpredisの動作確認
動作確認の大前提として、Redisが起動していることは絶対です。
Redisのインストールに関しては、次の記事で解説しています。
また、Redisがどこにインストールされているかで動作確認用のコードが異なります。
- 同じマシン上のRedisにPHPからアクセスする
- 別のマシン上のRedisにPHPからアクセスする
それぞれを下記で説明します。
同じマシン上のRedisにPHPからアクセスする
SETのサンプルコード(set.php)
<?php $redis = new Redis(); $redis->connect('127.0.0.1', 6379); // SET $redis->set('key', 'PHP'); $redis->close(); ?>
GETのサンプルコード(get.php)
<?php $redis = new Redis(); $redis->connect('127.0.0.1', 6379); // GET $value = $redis->get('key'); print($value); $redis->close(); ?>
http://192.168.33.60/set.php
http://192.168.33.60/get.php
192.168.33.60の部分は、各自の環境に合わせて変更します。
set.php、get.phpの順番でアクセスします。
get.phpにアクセスして、「PHP」と表示されればOK。
別のマシン上のRedisにPHPからアクセスする
別のマシン上にインストールされたRedisにアクセスします。
この場合、Redis側で外部接続を許可していることが前提条件となります。
Redisの外部接続許可については、次の記事でまとめています。
SETのサンプルコード(set.php)
<?php $redis = new Redis(); $redis->connect('192.168.33.110', 6379); $redis->auth(['pass' => 'my_password']); // GET $value = $redis->get('key'); print($value); $redis->close(); ?>
GETのサンプルコード(get.php)
<?php $redis = new Redis(); $redis->connect('192.168.33.110', 6379); $redis->auth(['pass' => 'my_password']); // SET $redis->set('key', 'PHP'); $redis->close(); ?>
「192.168.33.110」は、RedisがインストールされているサーバーのIPアドレスです。
「my_password」は、設定したパスワードになります。
動作確認方法は、set.phpからget.phpへのアクセスで行います。
get.phpにアクセスして、「PHP」と表示されればOK。
以上、phpredisの動作確認について説明しました。