Redisとは...
Redisは、ネットワーク接続された永続化可能なインメモリデータベース。連想配列(キー・バリュー)、リスト、セットなどのデータ構造を扱える。いわゆるNoSQLデータベースの一つ。オープンソースソフトウェアプロジェクトであり、Redis Labs(英語版)がスポンサーとなって開発されている[4]。(以下略)
簡単にいうと高速に読み書きできるKVSです。
MysqlのようなRDBMSとは違い、とてもシンプルな構造でデータを保管します。
Redisについての情報は少なく、インストールにもかなり苦労したので、自分の躓いたポイントを含め、手順を解説していきます。
おそらく、ダブっている(必要のない)手順もあると思いますので、気づいた方はこそっと教えてください笑
私の環境について
PHP 5.5.18
CentOS 7.6.1810
インストール手順
epelリポジトリをインストール
sudo yum -y install epel-release
remiリポジトリをインストール
sudo rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
epelとremiを無効化
sudo sed -i 's/enabled=1/enabled=0/g' /etc/yum.repos.d/epel*
sudo sed -i 's/enabled=1/enabled=0/g' /etc/yum.repos.d/remi*
Redisをyumでインストール
sudo yum install --enablerepo=epel,remi redis
バージョン表示(インストールの確認)
redis-cli -v
Redisの起動
sudo systemctl start redis.service
自動起動設定
sudo systemctl enable redis.service
起動の確認
systemctl status redis
→ active (running)ならおっけい
Redisを実行し、入力待機状態に
redis-cli --raw
→ rawオプションを付けることで、日本語対応になる
動作確認
127.0.0.1:6379> set key value
OK
127.0.0.1:6379> keys *
1) "key"
127.0.0.1:6379> get key
"value"
127.0.0.1:6379> del key
(integer) 1
127.0.0.1:6379> keys *
(empty list or set)
phpredis インストール
sudo yum install -y php-pecl-redis
githubからphpredisのソースを取得
cd /usr/local/src
sudo git clone https://github.com/nicolasff/phpredis.git
cd phpredis
→もし(git fatal: unable to access Peer reports incompatible or unsupported protocol version.)エラーが出た場合には、
sudo yum updateを実施してください。
PHPのバージョンを確認する
php -v
PHP7.xの方は、そのまま飛ばしてください
私の場合は、PHP5.x系なので、自分に合ったリビジョンを取得します
sudo git checkout c588f0308a4d49368a436e660b4a29a0579f802d
インストール
sudo phpize
sudo ./configure
sudo make
sudo make install
php.iniをrootから検索
find / -name php.ini 2>/dev/null
php.iniに、extension=redis.soを追記
vi /etc/php.ini
extension=redis.soを書き込み
:w !sudo tee %(強制保存)
:q!
apacheを再起動して反映
sudo service httpd restart
phpredis読み込み確認
php -m | grep redis
→ redisという表示が返ればok
念のため、php -iでも確認し
php -i | grep redis
→もし、
PHP Warning: Module 'redis' already loaded in Unknown on line 0
のような表記が出たのなら、それはmoduleの読み込みが重複しています。
(動作に影響はないですが、warningを消したい場合は、重複しているextension=redis.soを削除すると良いでしょう)
結果
redis
redis.arrays.algorithm => no value => no value
redis.arrays.auth => no value => no value
redis.arrays.autorehash => 0 => 0
redis.arrays.connecttimeout => 0 => 0
redis.arrays.consistent => 0 => 0
redis.arrays.distributor => no value => no value
redis.arrays.functions => no value => no value
redis.arrays.hosts => no value => no value
redis.arrays.index => 0 => 0
redis.arrays.lazyconnect => 0 => 0
redis.arrays.names => no value => no value
redis.arrays.pconnect => 0 => 0
redis.arrays.previous => no value => no value
redis.arrays.readtimeout => 0 => 0
redis.arrays.retryinterval => 0 => 0
redis.clusters.auth => no value => no value
redis.clusters.persistent => 0 => 0
redis.clusters.read_timeout => 0 => 0
redis.clusters.seeds => no value => no value
redis.clusters.timeout => 0 => 0
redis.pconnect.connection_limit => 0 => 0
redis.pconnect.pooling_enabled => 0 => 0
redis.session.lock_expire => 0 => 0
redis.session.lock_retries => 10 => 10
redis.session.lock_wait_time => 2000 => 2000
redis.session.locking_enabled => 0 => 0
Registered save handlers => files user redis rediscluster
This program is free software; you can redistribute it and/or modify
これでインストール完了です。
PHPとの接続を確認
<?php
$host = '127.0.0.1';
$port = 6379;
$r = new Redis();
$r->connect($host, $port);
$r->set("foo","bar");
var_dump($r->get("foo"));
?>
上記を記述し、実行してみてください。
その後、サーバよりredis-cliを実行し、登録されているか確認を行います。
-bash-4.2$ redis-cli
127.0.0.1:6379> keys *
1) "foo"
127.0.0.1:6379> get foo
"bar"
このようになっていれば、PHPからRedisを使用できる状態です。