ISUCONでredis使おうと思った時にPHPからredis触ったこと無いなということに気がついたので、
触れる用にphpredisを試してみた備忘録です。
利用したPHPのversionは 7.1.10
です。
php -v PHP 7.1.10 (cli) (built: Oct 10 2017 01:16:36) ( NTS ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
phpredisはCで書かれたPHP Extensionなのでbuildしてphp.iniに設定を追加する必要があります。
やることは、phpredisのレポジトリをcloneしてビルドし、php.iniに設定を追加するだけです。
https://github.com/phpredis/phpredis#installation
検証に利用したコードはここに置きました。
検証に利用したコードではDockerfile内で行いました。
設定が反映されているかは php -i
で確認できます。
# 反映されている場合 $php -i |grep -e redis -e Redis Additional .ini files parsed => /usr/local/etc/php/conf.d/redis.ini redis Redis Support => enabled Redis Version => develop Registered save handlers => files user redis rediscluster This program is free software; you can redistribute it and/or modify # 反映されていない場合 $php -i |grep -e redis -e Redis This program is free software; you can redistribute it and/or modify
雑に値をsetするphpコードを書いてみました。
<?php function connect($server, $port = 6379, $db = 0): \Redis { $redis = new \Redis(); $success = $redis->connect($server, $port); if ($success !== true) { throw new \Exception(spritnf('failed to connect to %s. port: %s', $server, $port)); } $success = $redis->select($db); if ($success !== true) { throw new \Exception(spritnf('failed to select database %s. server: %s. port: %s', $db, $server, $port)); } return $redis; } function main() { // docker-composeのlinksで追加しているのでredisとなっています。 // アドレス入れる場合は下記のような形になります。 // $redis = connect('127.0.0.1'); $redis = connect('redis'); $redis->set('xxx', 'aaa'); $redis->set('yyy', 'bbb'); $saved = $redis->get('yyy'); var_dump($saved); } main();
実行すると var_dump
の結果が出るだけですね。
$php main.php string(3) "bbb"
redis-cliで確認すると xxx
, yyy
というkeyに書き込まれているのがわかります。
$redis-cli 127.0.0.1:6379> keys * 1) "yyy" 2) "xxx"
もっと色々やりたい場合はUsageが充実していたのでそっちが参考になりそうです。
https://github.com/phpredis/phpredis#usage
そんなに難しくないので使う際には使っていこうと思いました。