go使用redis连接池技术操作redis数据库实例

news/2024/9/22 12:25:01/

我们都知道,在程序开发中,网络链接的开销是比较大的, 当我们在链接redis 时,如果是操作一次就执行一次DIal拨号,那性能是很低的,redis的效率瞬间就被你降低了50%, 提速redis使用性能的第一步就是使用连接池技术,废话不多说,直接上代码:

package mainimport ("fmt""github.com/gomodule/redigo/redis"
)// 定义全局变量
var pool *redis.Pool// 当程序启动时就初始化这个函数,在main之前执行
func init() {pool = &redis.Pool{MaxIdle:     8,   //最大空闲链接数MaxActive:   0,   // 表示和数据库的最大链接数,0表示没有限制IdleTimeout: 100, //最大空闲时间Dial: func() (redis.Conn, error) { //从连接池中取出一个链接return redis.Dial("tcp", "localhost:6378")},}
}func RedisDo(commandName string, args ...interface{}) (reply interface{}, err error) {// 普通方式链接redis,这个效率太低,因为每次都要取拨号链接 网络开销太大// conn, err := redis.Dial("tcp", "localhost:6378")// if err != nil {// 	fmt.Printf("Redis Connect Error: %v", err)// }conn := pool.Get() // 从连接池中获取一个redis链接defer conn.Close() // 用完关闭,// 这里的参数可变参数 args 在再次调用的时候需要使用...进行解构,否则这个参数的类型就改变了reply, err = conn.Do(commandName, args...)if err != nil {fmt.Printf("Redis命令 set失败: %v", err)}return
}
func main() {RedisDo("set", "name2", "Tekin from golang")if rep, err := RedisDo("get", "name2"); err == nil {str, _ := redis.String(rep, err)fmt.Printf("str=%v", str)} else {fmt.Println(err)}
}


http://www.ppmy.cn/news/1459972.html

相关文章

three.js 中 meshbasic.glsl 文件中的片源着色器的主函数解析

1. three.js 中 meshbasic.glsl 文件中的片源着色器的主函数解析 他的具体代码如下 void main() {#include <uv_vertex>#include <color_vertex>#include <morphcolor_vertex>#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )#include <beginno…

K8s源码分析(二)-K8s调度队列介绍

本文首发在个人博客上&#xff0c;欢迎来踩&#xff01; 本次分析参考的K8s版本是 文章目录 调度队列简介调度队列源代码分析队列初始化QueuedPodInfo元素介绍ActiveQ源代码介绍UnschedulableQ源代码介绍**BackoffQ**源代码介绍队列弹出待调度的Pod队列增加新的待调度的Podpod调…

自然资源-城镇开发边界内详细规划编制技术指南解读

自然资源-城镇开发边界内详细规划编制技术指南解读

Day45 初识HTML

Day45 初识HTML 文章目录 Day45 初识HTML一、HTML简介二、HTML运行环境三、前端开发工作模式四、HTML基本结构五、常用的标签六、锚链接七、HBuilder下载 一、HTML简介 HTML&#xff08;英文Hyper Text Markup Language的缩写&#xff09;中文译为“超文本标记语言”&#xff…

Python实现txt转Excel(坐标)

import pandas as pddef txt_to_excel(txt_file, excel_file):# 读取 txt 文件with open(txt_file, r) as f:lines f.readlines()# 将每行数据分割成多个单元格data []for line in lines:row line.strip().split( )data.append(row)# 将数据保存到 Excel 文件df pd.DataFra…

linux系统(ubuntu)调用科大讯飞SDK实现语音识别

1. 科大讯飞官网 登录注册实名制 2. 点击控制台&#xff0c;创建应用 点击左侧的语音听写&#xff0c;右边下滑选择Linux&#xff0c;点击下载 选择Linux平台&#xff0c;普通版本&#xff0c;语音听写&#xff0c;SDK下载 此时将得到一个压缩包&#xff0c;选择的功能不…

C++之QT文本处理QDir、QFileDialog、QStringList、QFile

一、相应的头文件 #include <QFileDialog> #include <QDir> #include <QStringList> 二、简介 1.QFileDialog 实际效果如下&#xff1a;比如需要选择打开的文件夹或者文件名&#xff0c;通过调用资源管理器的方式进行可视化操作。 代码示例为&#xff1a…

【gpedit.msc】组策略编辑器的安装,针对windows家庭版,没有此功能

创建一个记事本文件然后放入以下内容 echo offpushd "%~dp0"dir /b %systemroot%\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum >gp.txtdir /b %systemroot%\servicing\Packages\Microsoft-Windows-GroupPolicy-…