从安装redis_fdw到简单操作的步骤
在已经安装了PostgreSQL9.5和Redis的环境中,我们将引入redis_fdw并尝试对Redis上的外部表进行简单操作。
安装Hiredis
要安装redis_fdw,需要首先安装Redis的C客户端库Hiredis。
$ git clone https://github.com/redis/hiredis.git
$ cd hiredis/
$ make
$ su
# make install
# echo "/usr/local/lib" > /etc/ld.so.conf.d/hiredis.conf
# ldconfig
# ldconfig -p | grep hiredis
# exit
安装redis_fdw
如果使用的是PostgreSQL的版本9.5,那么需要安装9.5用的redis_fdw分支(REL9_5_STABLE)。
$ git clone https://github.com/pg-redis-fdw/redis_fdw.git
$ cd redis_fdw
$ git checkout -b REL9_5_STABLE origin/REL9_5_STABLE
$ make USE_PGXS=1 PG_CONFIG=~/pgsql/9.5/pgsql-9.5.2/bin/pg_config
$ make USE_PGXS=1 PG_CONFIG=~/pgsql/9.5/pgsql-9.5.2/bin/pg_config install
-
- PostgreSQLのbinディレクトリにPATHが通っている場合は、PG_CONFIGの指定は不要です。
- PG_CONFIGを指定する場合、~/pgsql/9.5/pgsql-9.5.2の部分はPostgreSQLインストール先のパスで置き換えます。
注册redis_fdw并创建外部表
启动PostgreSQL和Redis后,使用psql登录到PostgreSQL,并创建一个简单的外部表来存储键和值。
-- redis_fdwをPostgreSQLに登録
CREATE EXTENSION redis_fdw;
-- Redisの外部サーバを定義 (Redisのアドレスとポート番号をオプションで指定)
CREATE SERVER redis_server
FOREIGN DATA WRAPPER redis_fdw
OPTIONS (address '127.0.0.1', port '6379');
-- Redis上の外部テーブルを作成
CREATE FOREIGN TABLE redis_db0 (key text, val text)
SERVER redis_server
OPTIONS (database '0');
-- Redisの外部サーバのユーザマップを定義
CREATE USER MAPPING FOR PUBLIC
SERVER redis_server
OPTIONS (password 'secret');
对Redis中外部表的操作
确认简单的SQL语句在Redis上针对外部表按预期进行操作。
-- PostgreSQL9.3以降では、外部テーブルに対してINSERTなどの更新系SQLが実行可能
-- 10件のデータを挿入
INSERT INTO redis_db0
SELECT 'key' || num::TEXT, 'val' || num::TEXT
FROM generate_series(1, 10) num;
-- 検索条件どおりに1件検索できることを確認
SELECT * FROM redis_db0 WHERE key = 'key3';
key | val
------+------
key3 | val3
(1 row)
-- 1件のデータを更新
UPDATE redis_db0 SET val = 'val99' WHERE key = 'key9';
SELECT * FROM redis_db0 WHERE key = 'key9';
key | val
------+-------
key9 | val99
(1 row)
-- 9件のデータを削除
DELETE FROM redis_db0 WHERE key <> 'key7';
DELETE 9
SELECT * FROM redis_db0 WHERE key = 'key9';
key | val
-----+-----
(0 rows)
而且,在与Redis直接连接之后,我们要确认通过上述操作能够看到外部表中剩下的一条数据。
$ redis-cli KEYS "key*"
1) "key7"