1. 程式人生 > >PostgreSQL+REDIS_FDW詳細記錄踩坑過程之遠端操作redis(三)

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官方文件)