Redis のはじめかた – メモリ内データ構造ストア (NoSQL データベース)

技術

 Redis とは、オープンソース(BSDライセンス)のメモリ上データ構造ストアプログラムです。NoSQLのデータベース、キャッシュ、メッセージブローカーとして使用することができます。

Redis では、文字列、ハッシュ、リスト、セット、レンジクエリ付き(範囲指定)ソートセット、ビットマップ、ハイパーログログ、地理空間インデックス、ストリームなどのデータ構造が提供されています。

また Redis には、レプリケーション、Luaスクリプト、LRUエビクション、トランザクションなど様々なレベルでのオンディスク永続性が組み込まれており、Redis Sentinelによる高可用性とRedis Clusterによる自動パーティショニングが提供されています。(公式ページより翻訳)

なお Redis の公式サイトは https://redis.io/ (英語)
GitHub は https://github.com/redis/redis です。
本稿執筆時点で、Redis の最新バージョンは 6.2.3 (2021年5月4日 リリース)となっています。

簡単に説明すると Redis で何が出来るのかと言うと、メモリ上でデータベースを構築できるので、ディスク上のデータベースよりも高速処理が可能になるという事です。

macOS へのインストール方法

まずは簡単に体験してみたい!百聞は一見に如かずです。
mac に Redis をインストールしてみましょう。Homebrew が既にあるならば、コマンド一発で簡単。

$ brew install redis

実行結果はこんな感じです

$ brew install redis
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 7 taps (shivammathur/php, homebrew/cask-versions, homebrew/core, homebrew/cask, homebrew/bundle, homebrew/services and dart-lang/dart).
==> New Formulae
clazy erlang@23 ipinfo-cli neovim-remote parquet-cli
ehco gitbackup julia nomino
elan-init gradle@6 mathlibtools opensearch
==> Updated Formulae
Updated 341 formulae.
==> Deleted Formulae
osquery
==> New Casks
arduino-ide-beta enclave mem
arduino-ide-nightly jamkazam privileges
beeper jgrennison-openttd vamiga
==> Updated Casks
Updated 267 casks.
==> Deleted Casks
arduino-beta

==> Downloading https://ghcr.io/v2/homebrew/core/redis/manifests/6.2.3
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/redis/blobs/sha256:3373d834552eef5f6c7188929912
==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:3373d834552
######################################################################## 100.0%
==> Pouring redis--6.2.3.mojave.bottle.tar.gz
==> Caveats
To have launchd start redis now and restart at login:
brew services start redis
Or, if you don't want/need a background service you can just run:
redis-server /usr/local/etc/redis.conf
==> Summary
🍺 /usr/local/Cellar/redis/6.2.3: 13 files, 1.9MB

早速、Redis サーバを起動しましょう。

$ brew services start redis

コマンドラインからサーバへアクセスしてみます。

$ redis-cli ping
PONG

PONG と出力されたのであれば、無事インストール完了です。

なお Homebrew を入れていない場合、ここからインストールしてください。
https://brew.sh/index_ja

Redis の設定ファイル

細かい設定をしたい場合、設定ファイルを編集します。

/usr/local/etc/redis.conf

PhpRedis の macOS へのインストール

次に PHP で Redis を使うために、PHP extention (拡張モジュール) をインストールします。

PECL を使うのが便利です。本稿執筆時点での PhpRedis のバージョンは 5.3.4 です。

$ pecl install redis-5.3.4

上のコマンドを実行すると、以下の質問が幾つかありますが、すべて no (エンター)で良いでしょう。

enable igbinary serializer support? [no] :

インストールが完了すると

Build process completed successfully
Installing '/usr/local/Cellar/php@7.4/7.4.19_1/pecl/20190902/redis.so'

ライブラリファイル redis.so を出力したディレクトリの表示があります。
php.ini を開き、次の1行を追加します。

extension="redis.so"

php.ini がどのディレクトリにあるかは、

$ php --ini
Configuration File (php.ini) Path: /usr/local/etc/php/7.4
Loaded Configuration File: /usr/local/etc/php/7.4/php.ini
Scan for additional .ini files in: /usr/local/etc/php/7.4/conf.d
Additional .ini files parsed: /usr/local/etc/php/7.4/conf.d/ext-imap.ini,
/usr/local/etc/php/7.4/conf.d/ext-opcache.ini,
/usr/local/etc/php/7.4/conf.d/ext-xdebug.ini

このように確認できます。
編集部のmac環境の場合、/usr/local/etc/php/7.4/php.ini ということが分かります。

php.ini を編集したら、php-fpm を再起動しましょう。

$ brew services restart php@7.4

再起動したらライブラリが反映されているか確認します。

$ php -i | grep Redis
573:Redis Support => enabled
574:Redis Version => 5.3.4
575:Redis Sentinel Version => 0.1

これで PHP から Redis を使う準備ができました。
index.php に下記コードを入れて実行し、1が表示されたら成功です。

<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
echo $redis->ping(); // 成功時は 1=TRUE

以上、Redisセットアップ手順でした。

使い方はまた後ほど!

Amazon AWS でも Amazon ElastiCache として用意されています。

https://aws.amazon.com/jp/elasticache/
この使い方も今後の記事でフォローアップ予定です。

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