热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

pgspiderredisfdw试用

目前redis的fdw有好几个,github上有一个start比较高的,但是对于新版本pg支持不好,目前使用了https:github.comnahannirw_redis_fdw

目前redis 的fdw有好几个,github 上有一个start 比较高的,但是对于新版本pg 支持不好,目前使用了

https://github.com/nahanni/rw_redis_fdw,以下是docker 镜像的构建以及试用


dockerfile

老样子基于base 镜像构建









 


FROM dalongrong/pgspider:base as build


WORKDIR /app


RUN apt-get update && apt-get install -y libhiredis-dev


RUN wget https://github.com/nahanni/rw_redis_fdw/archive/v1.0.tar.gz && tar zxf v1.0.tar.gz && mv rw_redis_fdw-1.0 redis_fdw && cp -rf redis_fdw /app/postgresql-11.6/contrib/redis_fdw


RUN cd /app/postgresql-11.6/contrib/redis_fdw && make && make install


?


FROM debian:stretch-slim


ENV GOSU_VERSION 1.11


RUN apt-get update && apt-get install -y wget libhiredis-dev libreadline-dev


# explicitly set user/group IDs


RUN set -eux; \


groupadd -r postgres --gid=999; \


# https://salsa.debian.org/postgresql/postgresql-common/blob/997d842ee744687d99a2b2d95c1083a2615c79e8/debian/postgresql-common.postinst#L32-35


useradd -r -g postgres --uid=999 --home-dir=/var/lib/postgresql --shell=/bin/bash postgres; \


# also create the postgres user‘s home directory with appropriate permissions


# see https://github.com/docker-library/postgres/issues/274


mkdir -p /var/lib/postgresql; \


chown -R postgres:postgres /var/lib/postgresql


?


RUN wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture)" \


  && chmod +x /usr/local/bin/gosu \


  && gosu nobody true


# make the "en_US.UTF-8" locale so postgres will be utf-8 enabled by default


RUN set -eux; \


  if [ -f /etc/dpkg/dpkg.cfg.d/docker ]; then \


  # if this file exists, we‘re likely in "debian:xxx-slim", and locales are thus being excluded so we need to remove that exclusion (since we need locales)


  grep -q ‘/usr/share/locale‘ /etc/dpkg/dpkg.cfg.d/docker; \


  sed -ri ‘/\/usr\/share\/locale/d‘ /etc/dpkg/dpkg.cfg.d/docker; \


  ! grep -q ‘/usr/share/locale‘ /etc/dpkg/dpkg.cfg.d/docker; \


  fi; \


  apt-get update; apt-get install -y locales; rm -rf /var/lib/apt/lists/*; \


  localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8


ENV LANG en_US.utf8


?


# install "nss_wrapper" in case we need to fake "/etc/passwd" and "/etc/group" (especially for OpenShift)


# https://github.com/docker-library/postgres/issues/359


# https://cwrap.org/nss_wrapper.html


RUN set -eux; \


  apt-get update; \


  apt-get install -y --no-install-recommends libnss-wrapper; \


  rm -rf /var/lib/apt/lists/*


?


RUN mkdir /docker-entrypoint-initdb.d


COPY --from=build /usr/local/pgspider /usr/local/pgspider


RUN sed -ri "s!^#?(listen_addresses)\s*=\s*\S+.*!\1 = ‘*‘!" /usr/local/pgspider/share/postgresql/postgresql.conf.sample; \


  grep -F "listen_addresses = ‘*‘" /usr/local/pgspider/share/postgresql/postgresql.conf.sample


RUN mkdir -p /var/run/postgresql && chown -R postgres:postgres /var/run/postgresql && chmod 2777 /var/run/postgresql


ENV PATH $PATH:/usr/local/pgspider/bin


ENV PGDATA /var/lib/postgresql/data


RUN mkdir -p "$PGDATA" && chown -R postgres:postgres "$PGDATA" && chmod 777 "$PGDATA"


VOLUME /var/lib/postgresql/data


COPY docker-entrypoint.sh /usr/local/bin/


RUN ln -s usr/local/bin/docker-entrypoint.sh / # backwards compat


ENTRYPOINT ["docker-entrypoint.sh"]


?


EXPOSE 5432


CMD ["postgres"]










参考使用



  • 环境准备










version: "3"


services:


 redis:


   image: redis


   ports:


   - "6379:6379"


 pg-redis:


   image: dalongrong/pgspider:redis


   ports:


   - "5432:5432"


   environment:


   - "POSTGRES_PASSWORD:dalong"











  • 启动










docker-compose up -d











  • 使用










// 创建扩展


CREATE EXTENSION redis_fdw;


// 创建server


CREATE SERVER redis_server


    FOREIGN DATA WRAPPER redis_fdw


    OPTIONS (host ‘redis‘, port ‘6379‘);


// 创建用户映射,此demo 填写随意的就可以


CREATE USER MAPPING FOR postgres


    SERVER redis_server


    OPTIONS (password ‘demo‘);


// 创建外部表映射,一个可写的string 类型


CREATE FOREIGN TABLE rft_str(


     key TEXT,


     value TEXT,


     expiry INT


) SERVER redis_server


   OPTIONS (tabletype ‘string‘);


// insert 数据


   insert into rft_str values(‘user_id‘,‘dalong‘,2000);











  • 查询效果

技术分享图片

 

 


说明

此redis fdw 扩展功能还是比较强的,支持的方法也比较多,当前还没有ga,但是很不错


参考资料

https://github.com/nahanni/rw_redis_fdw

https://github.com/redis/hiredis

https://hub.docker.com/repository/docker/dalongrong/pgspider

https://github.com/rongfengliang/pgspider-docker


推荐阅读
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 本文内容为asp.net微信公众平台开发的目录汇总,包括数据库设计、多层架构框架搭建和入口实现、微信消息封装及反射赋值、关注事件、用户记录、回复文本消息、图文消息、服务搭建(接入)、自定义菜单等。同时提供了示例代码和相关的后台管理功能。内容涵盖了多个方面,适合综合运用。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
author-avatar
荒野中得生存
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有