お疲れ様です。きざきまるおです。
今回はPostgreSQLとRedisを連けする方法についてまとめていこうと思います。
基本的にはこちらのサイトを参考に進めていきます。
https://www.sraoss.co.jp/tech-blog/pgsql/redis_fdw/
2つのDBを相互に管理したい場合におすすめの手段ですので是非みてみてください。
それではどうぞ。
PostgreSQLインストール
まずは最新版PostgreSQLをインストールするためのリポジトリをインストールしましょう。
dnf -qy install https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %rhel-%_arch)/pgdg-redhat-repo-latest.noarch.rpm
次にデフォルトで入っている可能性のあるPostgreSQLを無効にします。
dnf -qy module disable postgresql
以下コマンドがインストールコマンドになります。
バージョンは適宜置き換えてください。
dnf -qy install postgresql14-server
インストール時に付属するスクリプトを用いてデータベースクラスタを作成します。
PGSETUP_INITDB_OPTIONS="-E UTF8 --no-locale" sudo -E /usr/pgsql-14/bin/postgresql-14-setup initdb
以下コマンドでPostgreSQLを起動しましょう。
systemctl start postgresql-14
Redisインストール
Redisインストールはとてもシンプルな手順になります。
以下コマンドの実行でOKです。
dnf -qy install redis
redis_fdwインストール
ここからがPostgreSQLとRedis連携の本題です。
こちらのライブラリを用いることで簡単に連携することが出来ます。
まずは必要なライブラリをインストールする前準備としてEPELリポジトリをインストールします。
dnf -qy install epel-release
redis_fdwをインストールするために必要なライブラリをインストールします。
dnf -qy install make redhat-rpm-config postgresql14-devel hiredis-devel
次にソースファイルをgithubからダウンロードしましょう。
curl -LOs https://github.com/pg-redis-fdw/redis_fdw/archive/refs/heads/REL_14_STABLE.tar.gz
展開コマンドは以下になります
tar -xzf REL_14_STABLE.tar.gz
makeコマンドでビルドしましょう。
make -C redis_fdw-REL_14_STABLE USE_PGXS=1 PG_CONFIG=/usr/pgsql-14/bin/pg_config
そしてインストールです。
make -C redis_fdw-REL_14_STABLE install USE_PGXS=1 PG_CONFIG=/usr/pgsql-14/bin/pg_config
動作確認
まずはpostgresユーザーにログインし、redisと連携するためのデータベースを以下コマンドで作成します。
createdb redis-check
次に接続しましょう。
psql redis_db
redis_fdwをPostgreSQLで有効化する必要があるので、以下SQL文で有効化します。
CREATE EXTENSION redis_fdw;
PostgreSQLのお作法で以下コマンドで外部サーバーとの接続ができるようになります。
詳細は公式サイトを参照ください。
https://www.postgresql.jp/document/14/html/sql-createserver.html
CREATE SERVER redis_server
FOREIGN DATA WRAPPER redis_fdw
OPTIONS (address '127.0.0.1', port '6379');
次に外部サーバーに接続するためのユーザーをPostgreSQLで作成します。
この時のステータスはredisに接続できるパスワードを入力しましょう。
CREATE USER MAPPING FOR PUBLIC
SERVER redis_server
OPTIONS (password 'redis');
次にredisに連携されるテーブルを作成します。
複数の接続をしたい場合はOPTIONSの’0’の数値を変更することでコントロールできます。
CREATE FOREIGN TABLE string_table (key text, val text)
SERVER redis_server
OPTIONS (database '0');
実際にデータを挿入してみます。
INSERT INTO string_table
VALUES ('key1', 'value1'), ('key2', 'value2');
そしてredis側でデータを確認してみましょう。
redis-cli -h 127.0.0.1
keys *
こちらで連携は完了です。
redis_fdwを利用するために少し下準備が必要なので慣れていない方にとっては大変だったかと思います。
それではまた。