本文主要是介绍redis_fdw使用简介,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
转载地址:http://coolcodes.tech/tech/d0c2d2254836b3ebb92c769e576028a
建议大家去原始地址查看,原始地址还有很多作者的原创博文,值得推荐
Redis FDW(Foreign Data Wrapper)为Dave&Andrew实现的Postgresql的FDW扩展插件,可以直接在postgresql里访问redis数据库,支持Posgreql9.1~9.6。
1、安装
系统环境:Fedora25 / postgresql9.5.5 / redis3.0.6 (postgresql&redis均通过dnf安装)
1) 根据个人postgresql版本的clone对应的分支代码:git clone -b REL9_5_STABLE git@github.com:pg-redis-fdw/redis_fdw.git
2) 编译安装:
cd redis_fdw/
make USE_PGXS=1
make USE_PGXS=1 install
如果提示报错:/usr/lib/rpm/redhat/redhat-hardened-cc1 No that file and directory
,运行dnf install redhat-rpm-config -y
即可。
OK,安装完成。
2、实验
假设一个应用场景:在postgresql里有个表categories
记录不同分类下条目的数量:
CREATE TABLE categories
(
catid character varying(32) NOT NULL, --主键
cname character varying(64), --分类名称
nums integer, --条目数量
CONSTRAINT categories_pkey PRIMARY KEY (catid)
)
当这个表里的数据变化时,通过触发器自动更新redis里的catid--->nums
映射。
准备工作:
postgres=# CREATE EXTENSION redis_fdw; --创建redis_fdw扩展
postgres=# \dx
List of installed extensions
Name | Version | Schema | Description
-----------+---------+------------+--------------------------------------------------
redis_fdw | 1.0 | public | Foreign data wrapper for querying a Redis server
-- 创建需要关联的redis服务器
postgres=# CREATE SERVER redis_server
FOREIGN DATA WRAPPER redis_fdw
OPTIONS (address '127.0.0.1', port '6379');
postgres=# \des
List of foreign servers
Name | Owner | Foreign-data wrapper
--------------+----------+----------------------
redis_server | postgres | redis_fdw
--创建redis中存储catid/nums映射的虚拟表
postgres=# CREATE FOREIGN TABLE rd_categories (key text, val text)
SERVER redis_server
OPTIONS (database '0');
postgres=# \d
List of relations
Schema | Name | Type | Owner
--------+---------------+---------------+----------
public | categories | table | postgres
public | rd_categories | foreign table | postgres
创建触发器:
CREATE OR REPLACE FUNCTION public.insert_new_item()
RETURNS trigger AS
$BODY$
begin
insert into rd_categories values(NEW.catid, 0);
return NEW;
end
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION public.insert_new_item()
OWNER TO postgres;
CREATE TRIGGER new_category
AFTER INSERT
ON public.categories
FOR EACH ROW
EXECUTE PROCEDURE public.insert_new_item();
测试:
insert into categories values('123', 'ces', 0); --插入一条数据
在redis里查看:
[root@w1 redis_fdw]# redis-cli
127.0.0.1:6379> keys *
1) "123"
127.0.0.1:6379> get 123
"0"
参考
【1】github:pg-redis-fdw/redis_fdw
【2】PostgreSQL的postgres_fdw跨库使用
这篇关于redis_fdw使用简介的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!