[笔记]使用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 ...
随机推荐
- SQL宝典
SQL Server 数据库的高级操作 (1) 批处理 (2) 变量 (3) 逻辑控制 (4) 函数 (5) 高级查询 */ (1)批处理 将多条SQL语句作为一个整体去编译,生成一个执行计划,然后, ...
- oracle的dual表
1.DUAL表的用途Dual 是 Oracle中的一个实际存在的表,任何用户均可读取,常用在没有目标表的Select语句块中 --查看当前连接用户Connected to Oracle Databas ...
- 拉格朗日乘子法(Lagrange multiplier)和KKT条件
拉格朗日乘子法: KKT条件:
- CentOS 7如何设置Linux开机自动获取IP地址
centos7 minimal版默认安装好后没有获取ip地址,需要手动配置.方法如下: 1.输入“ip addr”并按回车键确定,发现无法获取IP(CentOS 7默认没有ifconfig命令),记录 ...
- (转)java中Executor、ExecutorService、ThreadPoolExecutor介绍
转自: http://blog.csdn.net/linghu_java/article/details/17123057 ScheduledThreadPoolExecutor介绍: http:// ...
- elasticsearch.net search入门使用指南中文版
原文:http://edu.dmeiyang.com/book/nestusing.html elasticsearch.net为什么会有两个客户端? Elasticsearch.Net是一个非常底层 ...
- JZOJ.3777【NOI2015模拟8.17】最短路(shortest)
Description 小Y最近学得了最短路算法,一直想找个机会好好练习一下.话虽这么说,OJ上最短路的题目都被他刷光了.正巧他的好朋友小A正在研究一类奇怪的图,他也想凑上去求下它的最短 ...
- iOS tableview滑动到底部自动加载,向上拽加载
- (void)scrollViewDidScroll:(UIScrollView *)aScrollView { CGPoint offset = aScrollView.contentOffset ...
- getComputedStyle获取css属性与IE下的currentStyle获取到的值不同
<!doctype html><html lang="en"> <head> <meta charset="UTF-8&quo ...
- nodejs 循环中操作需要同步执行解决方案
最近用nodejs做了个针对某网站的小爬虫.干坏事得低调对吧,不能同时开太多的网络访问,结果各种回调/循环虐的心力交瘁. 经过了n次的百度\哥哥后终于拼出了自己要的功能.不敢独享分享出来以供大家参考. ...