【キャッシュ利用】phpredisを使ってPHPからRedisにアクセス

【キャッシュ利用】phpredisを使ってPHPからRedisにアクセス プログラミング

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バージョンは以下。

OSPHP
Ubuntu 14.045.5
Ubuntu 16.047.0
Ubuntu 18.047.2
Ubuntu 20.047.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の動作確認について説明しました。

タイトルとURLをコピーしました