准备:
redis 以及pg都开启并都能远程访问
1.redis 开启远程访问
修改Redis配置文件/etc/redis/redis.conf,找到bind那行配置:
# bind 127.0.0.1
2.去掉#注释并改为:
bind 0.0.0.0
3.指定配置文件然后重启Redis服务即可。
PG远程访问开启 :https://mp.csdn.net/postedit/82854762
本地连接:
假设连接拒绝,看看是否修改了远程文件以及是否关闭了防火墙,可以使用ping命令查看是否连接能访问
都必须要连接成功 才能继续
sql 要一行一行运行
--创建扩展
CREATE EXTENSION redis_fdw;
--定义新的外部服务器 https://www.postgresql.org/docs/9.4/static/sql-createserver.html
CREATE SERVER redis_server
FOREIGN DATA WRAPPER redis_fdw
OPTIONS (address '192.168.31.28', port '6379');
--address 是指redis的外部地址 port是指redis的端口号 并且 服务器名字也必须是唯一的。具体的请查看pg官方文档https://www.postgresql.org/docs/9.4/static/sql-createserver.html
--定义一个新的外表 https://www.postgresql.org/docs/9.4/static/sql-createforeigntable.html
CREATE FOREIGN TABLE redis_db0 (key text, val text)
SERVER redis_server
OPTIONS (database '0');
--定义一个新的用户到外部服务器的映射 http://www.postgres.cn/docs/9.4/sql-createusermapping.html
CREATE USER MAPPING FOR PUBLIC
SERVER redis_server
OPTIONS (password 'secret');
--定义一个外部表
CREATE FOREIGN TABLE myredishash (key text, val text[])
SERVER redis_server
OPTIONS (database '0', tabletype 'hash', tablekeyprefix 'mytable:');
运行到这 我们打开redis可视化工具 查看 发现是没有的 ,继续运行
--向外部表插入数据
INSERT INTO myredishash (key, val)
VALUES ('mytable:r1','{prop1,val1,prop2,val2}');
--修改
UPDATE myredishash
SET val = '{prop3,val3,prop4,val4}'
WHERE key = 'mytable:r1';
--删除
DELETE from myredishash
WHERE key = 'mytable:r1';
CREATE FOREIGN TABLE myredis_s_hash (key text, val text)
SERVER redis_server
OPTIONS (database '0', tabletype 'hash', singleton_key 'mytable');
INSERT INTO myredis_s_hash (key, val)
VALUES ('prop1','val1'),('prop2','val2');
UPDATE myredis_s_hash
SET val = 'val23'
WHERE key = 'prop1';
DELETE from myredis_s_hash
WHERE key = 'prop2';
至此 pg的redis插件就ok了
参考:https://github.com/pg-redis-fdw/redis_fdw/tree/REL_10_STABLE