PostgreSQLとRedisをredis_fdwで連携する

本サイトは広告収入およびアフィリエイト収益を受けております。

スポンサーリンク
スポンサーリンク

お疲れ様です。きざきまるおです。

今回は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を利用するために少し下準備が必要なので慣れていない方にとっては大変だったかと思います。

それではまた。

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