PostgreSQL+REDIS_FDW詳細記錄踩坑過程之遠端操作redis(三)
阿新 • • 發佈:2018-11-19
準備:
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官方文件)