PostgreSQL+REDIS_FDW详细记录踩坑过程之远程操作redis(三)

准备:

 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

http://www.postgres.cn/docs/9.4/ (pg官方文档)

猜你喜欢

转载自blog.csdn.net/qq_36934544/article/details/82865225
今日推荐