[笔记]使用Go语言Redigo包在Docker容器内连接Redis容器的方法
Docker容器之间的连接可以带来不少方便,下面记录下如何在自己容器内通过环境变量连接与之连接的Redis容器的方法。
先起一个Redis的Docker容器,命名为 redis,再起一个自己的Docker容器,使用"--link redis:redis"方式与redis容器连接。
在自己的容器内部,会有对应的环境变量,其中这里用的就是 REDIS_PORT = tcp://172.17.0.89:6379。
将其分拆为 tcp 和 172.17.0.89:6379,作为参数传入redigo的Dial函数即可,如此可不必显式的写IP和端口地址。
顺便说一句,redigo是Go语言的Redis客户端实现。
参考代码如下:
package main import (
"fmt"
"github.com/garyburd/redigo/redis"
"os"
"strings"
"time"
) func testRedis() bool {
// e.g. REDIS_PORT = tcp://172.17.0.89:6379
fmt.Println("REDIS_PORT", os.Getenv("REDIS_PORT"))
addr := strings.Split(os.Getenv("REDIS_PORT"), "://")
conn, err := redis.DialTimeout(addr[], addr[], , *time.Second, *time.Second)
if err != nil {
fmt.Println(err)
return false
}
defer conn.Close() size, err := conn.Do("DBSIZE")
if err != nil {
fmt.Println(err)
return false
}
fmt.Printf("DB size is %d \n", size) _, err = conn.Do("SET", "user:user0", )
_, err = conn.Do("SET", "user:user1", )
_, err = conn.Do("APPEND", "user:user0", ) user0, err := redis.Int(conn.Do("GET", "user:user0"))
user1, err := redis.Int(conn.Do("GET", "user:user1")) fmt.Printf("user0 is %d , user1 is %d \n", user0, user1)
return true
} func main() {
fmt.Println(time.Now(), "[Redis test start]") if testRedis() {
fmt.Println("[Redis test ok]")
} else {
fmt.Println("[Redis test failed]")
}
}
如果连接成功,结果如下:
-- ::44.796537101 + UTC [Redis test start]
REDIS_PORT tcp://172.17.0.89:6379
DB size is
user0 is , user1 is
[Redis test ok]
[笔记]使用Go语言Redigo包在Docker容器内连接Redis容器的方法的更多相关文章
- Docker学习笔记 - Docker容器内部署redis
Docker学习笔记(2-4)Docker应用实验-redist server 和client的安装使用 一.获取redis容器(含客户端和服务端) 二.创建服务端容器 1.在终端A中运行redis- ...
- Docker学习笔记之--.Net Core应用容器通过网桥连接Redis容器(环境:centos7)
上节演示通过应用容器连接sql server容器,连接:Docker学习笔记之--.Net Core项目容器连接mssql容器(环境:centos7) 本节演示安装 redis容器,通过网桥连接 先决 ...
- Docker最全教程——Redis容器化以及排行榜实战(十三)
前言 容器教程的路还很长,笔者尽量根据实践来不断地完善.由于在编写的过程中还会有完善和补充,后续可能会以番外来补充. 接下来会分享TeamCity.树莓派等内容,节奏可能会有点跳脱. 另外,长沙.NE ...
- docker 创建.netcore2.2 api容器 以及连接mysql容器
1]环境说明 操作系统:Window 10 专业版 开发工具 Vs2019专业版 Docker: Docker for Windows docker在windows上安装完毕之后可以看到 2]拉取 ...
- 将.Net Core发布至Docker,并连接 Redis、上传文件到本机、连接sqlserver数据库
此片文章目标是将 .Net Core 发布到 Docker 上,并且连接到在 Docker上的 Redis .上传文件到本机文件夹和连接 sqlserver 数据库. 创建项目 创建项目就不用说了,我 ...
- Docker容器内连接宿主机即CentOS的Mysql服务器
docker的宿主机是虚拟机下的CentOS 博主最近遇到一种情况,从服务器拷贝了一份数据库在宿主机Mysql服务器上,想要用本地的数据库测试自己的代码正确性,但是项目程序都是靠docker一键部署的 ...
- docker frps 内网穿透容器化服务
准备 域名解析 将frp.xx.com解析到服务器ip,将泛域名 *.frp.xx.com解析到frp.xx.com即可 https证书申请 泛域名证书现在可以用acme.sh申请Let's Encr ...
- Docker运行MongoDB及Redis及ssh端口映射远程连接
Docker运行MongoDB及Redis及ssh端口映射远程连接 本节内容简介 在本实验里我们将通过完成 MongoDB 和 Redis 两个容器来学习Dockerfile及Docker的运行机制. ...
- docker部署多个mysql容器,并使用java连接
测试springboot多个数据源配置时,需要安装多个mysql容器,由于资源限制,当前只有一台虚拟机,如果在一台机器上安装多个mysql实例,是可以的,但步骤比较繁琐,使用docker来安装MySQ ...
随机推荐
- Iptables规则执行顺序详解
1.The first is the mangle table which is responsible for the alteration of quality of service bits ...
- java程序调用kettle
(1).将相应的kettle的jar包导入的java项目,主要的jar包有一下几个. (2).java程序. package cn.com.taiji.oosweb.test.web; import ...
- PAT006 Tree Traversals Again
题目: An inorder binary tree traversal can be implemented in a non-recursive way with a stack. For exa ...
- WebAPI发布IIS报错问题
1.看IIS中处理程序映射中有没有注册:ExtensionlessUrlHandler-Integrated-4.0 没有的话需要在[运行]中注册:aspnet_regiis.exe 2.配置文件中要 ...
- wordpress简单搭建个人博客
一.环境要求 centos6.5 x64mysql5.6.19php5.5lighttpd1.4.28 二.安装步骤 install mysql5.6.19 from source:0. prepar ...
- js 自定义类
将近20年前,Javascript诞生的时候,只是一种简单的网页脚本语言.如果你忘了填写用户名,它就跳出一个警告. 如今,它变得几乎无所不能,从前端到后端,有着各种匪夷所思的用途.程序员用它完成越来越 ...
- 鱼眼镜头的distortion校正【matlab】
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 作者:WWC %%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%% ...
- Google I/O 2013 – Volley: Easy, Fast Networking for Android
1.什么是volley Volley是Ficus Kirpatrick在Gooogle I/O 2013发布的一个处理和缓存网络请求的库,能使网络通信更快,更简单,更健壮.Volle ...
- ural1297. Palindrome
1297. Palindrome Time limit: 1.0 secondMemory limit: 64 MB The “U.S. Robots” HQ has just received a ...
- ios 时间解析 差8个小时
啥问题也有:小程序中web开发工具里显示时间正常,ios上显示的查8小时 原因: 使用 NSDate *date = [NSDate date]; 获取的时间是标注的UTC时间,和北京时间相差8小时. ...