Redis 连接池的使用案例 | 学习笔记

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 快速学习 Redis 连接池的使用案例

开发者学堂课程【Go 语言核心编程 - 面向对象、文件、单元测试、反射、TCP 编程Redis 连接池的使用案例】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/626/detail/9796


Redis 连接池的使用案例

 

内容介绍:

一、核心代码

二、案例

 

一、核心代码

1.核心代码

var pool *redis.Pool

pool=&redis.Pool{

Maxidle: 8,

//表示最大空闲链接数

MaxActive: 0,

//表示和数据库的最大链接数,0 表示没有限制 ,但是不是实际情况中是无限大的,还要受系统的限制

IdleTimeout: 100,

//最大空闲时间,

Dial: func() (redis.Conn,error){

//代表初始化的链接池代码

return redis.Dial("tcp", "localhost:6379")

//代表具体链接的 ip 的 redis ,6379是端口号

},

},

c :=pool.Get()

//从链接池中取出一个链接

pool.Close()

//关闭链接池 ,一旦关闭了链接池以后,就不能从链接池中再取出链接

2.使用链接池满足要求

①初始化在 init 里进行

②使用 pool.Get

打开 redis 插件中的文件夹找到 pool,里面有详细的说明

pool 是一个结构体(struct)

方法:Dial  func()  (Conn , error)

MaxActive int

在给定时间内,最大的一个链接数,当数等于0时,会没有限制

标准配置:

MaxIdle :8

MaxActive:0

IdleTimeout:300

当性能不够时,可以将数字适当调大

 

二、案例

创建文件夹 redispool-main.go

Package main

import (

fmt

github.com/garyburd/redigo/redis

//引入redis包

//定义一个全局的 pool

var pool *redis.Pool

//当启动程序时,就初始化链接池

func  init() {

pool=&redis.Pool{

Maxidle: 8,

//表示最大空闲链接数

MaxActive: 0,

//表示和数据库的最大链接数,0 表示没有限制 ,但是不是实际情况中是无限大的,还要受系统的限制

IdleTimeout: 100,

//最大空闲时间,

Dial: func() (redis.Conn,error){

//代表初始化的链接池代码

return redis.Dial("tcp", "localhost:6379")

//代表具体链接的 ip 的 redis ,6379是端口号

},

}

}

func main() {

//先从 pool 取出一个链接

conn :=pool.Get()

defer conn.close()

//关闭链接池

_, err :=conn.Do(Set, name, 汤姆猫)

if err !=nil {

fmt.Println(conn.Do  err=,  err)

return

}

//取出

r, err := redis.string(conn.Do(Get,name))

if err !=nil {

fmt.Println(conn.Do  err=,  err)

return

}

fmt.Println(r=, r)

}

//如果要从 pool 里面取出链接,一定保证链接池是没有关闭的

go run main.go

汤姆猫

pool.Close

//表示链接池已经关闭,一旦关闭,就再也取不出内容

conn2 := pool.Get()

_, err :=conn2.Do(Set, name, 汤姆猫~~2)

if err !=nil {

fmt.Println(conn.Do  err=,  err)

return

}

//取出

r, err := redis.string(conn2.Do(Get,name2))

if err !=nil {

fmt.Println(conn.Do  err~~~~=,  err)

return

}

fmt.Println(r=, r2)

//fmt.Println(conn2=,conn2)

go run main.go

报错

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
3月前
|
缓存 弹性计算 NoSQL
【Azure Redis 缓存 Azure Cache For Redis】Redis连接池
【Azure Redis 缓存 Azure Cache For Redis】Redis连接池
|
29天前
|
NoSQL 数据可视化 Linux
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
本文介绍了Redis的两个可视化管理工具:付费的Redis Desktop Manager和免费的Another Redis DeskTop Manager,包括它们的下载、安装和使用方法,以及在使用Another Redis DeskTop Manager连接Redis时可能遇到的问题和解决方案。
93 1
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
|
5月前
|
存储 NoSQL Redis
Redis系列学习文章分享---第十六篇(Redis原理1篇--Redis数据结构-动态字符串,insert,Dict,ZipList,QuickList,SkipList,RedisObject)
Redis系列学习文章分享---第十六篇(Redis原理1篇--Redis数据结构-动态字符串,insert,Dict,ZipList,QuickList,SkipList,RedisObject)
82 1
|
26天前
|
NoSQL Linux Redis
Docker学习二(Centos):Docker安装并运行redis(成功运行)
这篇文章介绍了在CentOS系统上使用Docker安装并运行Redis数据库的详细步骤,包括拉取Redis镜像、创建挂载目录、下载配置文件、修改配置以及使用Docker命令运行Redis容器,并检查运行状态和使用Navicat连接Redis。
186 3
|
28天前
|
NoSQL Java Redis
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
这篇文章介绍了如何使用Spring Boot整合Apache Shiro框架进行后端开发,包括认证和授权流程,并使用Redis存储Token以及MD5加密用户密码。
22 0
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
|
1月前
|
存储 Prometheus NoSQL
大数据-44 Redis 慢查询日志 监视器 慢查询测试学习
大数据-44 Redis 慢查询日志 监视器 慢查询测试学习
22 3
|
5月前
|
NoSQL Java Redis
Redis系列学习文章分享---第十八篇(Redis原理篇--网络模型,通讯协议,内存回收)
Redis系列学习文章分享---第十八篇(Redis原理篇--网络模型,通讯协议,内存回收)
82 0
|
5月前
|
存储 消息中间件 缓存
Redis系列学习文章分享---第十七篇(Redis原理篇--数据结构,网络模型)
Redis系列学习文章分享---第十七篇(Redis原理篇--数据结构,网络模型)
96 0
|
1月前
|
NoSQL 关系型数据库 MySQL
Redis 事务特性、原理、具体命令操作全方位诠释 —— 零基础可学习
本文全面阐述了Redis事务的特性、原理、具体命令操作,指出Redis事务具有原子性但不保证一致性、持久性和隔离性,并解释了Redis事务的适用场景和WATCH命令的乐观锁机制。
171 0
Redis 事务特性、原理、具体命令操作全方位诠释 —— 零基础可学习
|
2月前
|
存储 JSON NoSQL
redis基本数据结构(String,Hash,Set,List,SortedSet)【学习笔记】
这篇文章是关于Redis基本数据结构的学习笔记,包括了String、Hash、Set、List和SortedSet的介绍和常用命令。文章解释了每种数据结构的特点和使用场景,并通过命令示例演示了如何在Redis中操作这些数据结构。此外,还提供了一些练习示例,帮助读者更好地理解和应用这些数据结构。
redis基本数据结构(String,Hash,Set,List,SortedSet)【学习笔记】