Go 语言访问 Redis 笔记

文章目录

  • Mac 下载 Redis
  • Mac Redix 数据库打开
    • 服务端
    • 客户端
  • 导包
  • 连接数据库
  • 操作字符串
  • 操作 Hash
  • 设置过期时间
  • 队列操作
  • 连接池
  • 并发操作
  • 管道化操作
  • 事务操作

Mac 下载 Redis

Mac安装Redis,原来就是这么简单

Mac Redix 数据库打开

  • brew services start redis

服务端

  • redis-server

客户端

  • redis-cli

导包

package mainimport ("fmt""github.com/gomodule/redigo/redis"
)

连接数据库

func main() {c, err := redis.Dial("tcp", "localhost:6379")if err != nil {fmt.Println("conn redis failed,err:%v", err)return}defer c.Close()
}

操作字符串

// 获取字符串
func getString(c redis.Conn) {res, err := redis.String(c.Do("Get", "username"))if err != nil {fmt.Println(err)return}fmt.Println(res)
}// 设置字符串
func setString(c redis.Conn) {_, err := c.Do("Set", "username", "jack")if err != nil {fmt.Println(err)return}
}// 批量设置字符串
func setStrings(c redis.Conn) {_, err := c.Do("MSet", "username", "jack", "phone", "188888888")if err != nil {fmt.Println("MSet error:", err)return}
}// 批量获取字符串
func getStrings(c redis.Conn) {res2, err := redis.Strings(c.Do("MGet", "username", "phone"))if err != nil {fmt.Println("MGet error:", err)return}fmt.Println(res2)
}

操作 Hash

// redis Hash 操作 设置
func setHash(c redis.Conn) {_, err := c.Do("HSet", "names", "jim", "barry")if err != nil {fmt.Println("hset error: ", err)return}
}// redis Hash 操作 获取
func getHash(c redis.Conn) {res3, err := redis.String(c.Do("HGet", "names", "jim"))if err != nil {fmt.Println("hget error: ", err)return}fmt.Println(res3)
}

设置过期时间

// redis 设置过期时间
func setExpire(c redis.Conn) {_, err := c.Do("expire", "names", "10")if err != nil {fmt.Println("expire err: ", err)}
}

队列操作

// redis 队列
func queueOpr(c redis.Conn) {//入队列_, err := c.Do("lpush", "Queue", "jim", "barry", 9)if err != nil {fmt.Println("lpush error:", err)return}//出队列for true {r, err := redis.String(c.Do("lpop", "Queue"))if err != nil {fmt.Println("lpop error: ", err)return}fmt.Println(r)}//获取队列长度res4, err := redis.Int(c.Do("llen", "Queue"))if err != nil {fmt.Println("llen error: ", err)return}fmt.Println(res4)
}

连接池

// 使用 Pool 初始化连接池
var pool *redis.Poolfunc init() {pool = &redis.Pool{MaxActive:   1024,MaxIdle:     16,IdleTimeout: 300,Dial: func() (redis.Conn, error) {return redis.Dial("tcp", "localhost:6379")},}
}func main() {c := pool.Get()defer c.Close()_, err := c.Do("Set", "username", "jack")if err != nil {fmt.Println(err)return}r, err := redis.String(c.Do("Get", "username"))if err != nil {fmt.Println(err)return}fmt.Println(r)
}

并发操作

//redis并发实例
func main() {conn, err := redis.Dial("tcp", "localhost:6379")if err != nil {fmt.Println("connect redis error:", err)return}defer conn.Close()conn.Send("HSET", "students", "name", "jim", "age", "19")conn.Send("HSET", "students", "score", "100")conn.Send("HSET", "students", "age")conn.Flush()res1, err := conn.Receive()fmt.Printf("Receive res1:%v \n", res1)res2, err := conn.Receive()fmt.Printf("Receive res2:%v \n", res2)res3, err := conn.Receive()fmt.Printf("Receive res3:%v \n", res3)
}

管道化操作

//redis管道化操作
func main() {c, err := redis.Dial("tcp", "localhost:6379")if err != nil {fmt.Println("conn redis failed,err:", err)return}defer c.Close()c.Send("SET", "username1", "jim")c.Send("SET", "username2", "jack")c.Flush()v, err := c.Receive()fmt.Printf("v:%v,err:%v\n", v, err)v, err = c.Receive()fmt.Printf("v:%v,err:%v\n", v, err)v, err = c.Receive()fmt.Printf("v:%v,err:%v\n", v, err)
}

事务操作

// redis事务操作
func main() {conn, err := redis.Dial("tcp", "localhost:6379")if err != nil {fmt.Println("connect redis error:", err)return}defer conn.Close()conn.Send("MULTI")conn.Send("INCR", "Foo")conn.Send("INCR", "bar")r, err := conn.Do("EXEC")fmt.Println(r)
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/118867.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SiteGround主机最新购买使用指南及外贸建站教程

SiteGround是一家知名的虚拟主机服务提供商,它在过去几年中在WordPress和WooCommerce建站领域取得了显著的发展和改进。SiteGround致力于为用户提供专门针对WordPress优化的虚拟主机,并将WordPress深度集成到其主机服务中,使外贸建站过程变得…

司徒理财:10.26周四黄金走势分析,黄金操作策略,谨慎追多

黄金走势分析:      黄金依旧是震荡走势不变,昨日给的文章策略可谓神准!亚欧盘现价1970提示做多,美盘1987提示做空,一来一回,又是大肉!震荡走势,高抛低吸,最忌追涨杀…

gstreamer插件开发-What are states?

## What are states?状态描述元素实例是否初始化、是否准备好传输数据以及当前是否正在处理数据。在GStreamer中定义了四种状态: > - GST_STATE_NULL> - GST_STATE_READY> - GST_STATE_PAUSED> - GST_STATE_PLAYING 从现在开始,它们将被简单地称为“NU…

GPT的前世今生:从gpt1到chatgpt的能力提升

从2017年google brain提出transformer模型,到2018年基于transformer模型open ai推出了gpt1模型以及google推出了bert模型,到2019-2021年open ai陆续推出gpt2和gpt3,再到2022-2023年推出chat-gpt和gpt4,大语言模型已经发展成了一个…

遥感语义分割、变化检测论文小trick合集(持续更新)

目录 💗💗1.影像融合机制 💗💗2.上下文聚合模块 💗💗3.adapter即插即用模块 💗💗1.影像融合机制 参考【多源特征自适应融合网络的高分遥感影像语义分割】文章中的“多源特征自适应…

【软考】数据库篇:并发控制-数据不一致问题

简介 本文介绍软考数据库篇,关于事务的考核内容。软考在数据库事务篇的考察,几乎都是出选择题类题目,不过在数据库系统工程师的内容里,会在下午提以一个小题出现,可见还是比较重要的知识点。 考纲内容 考核并发控制…

快速排序(c语言代码实现)

交换排序:快速排序(不稳定的排序) 快速排序(Quick Sort)是一种常见的排序算法,它采用分治法的思想,对待排序序列进行划分,使得划分出的子序列可以分别进行排序,最终使整…

买卖股票的最佳时机 II

给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有一股 股票。你也可以先购买,然后在 同一天 出售。返回 你能获得的 最大 利润 。 示例 1&#…

淘宝商品链接获取淘宝商品评论数据(用 Python实现淘宝商品评论信息抓取)

在网页抓取方面,可以使用 Python、Java 等编程语言编写程序,通过模拟 HTTP 请求,获取淘宝多网站上的商品详情页面评论内容。在数据提取方面,可以使用正则表达式、XPath 等方式从 HTML 代码中提取出有用的信息。值得注意的是&#…

Docker 镜像常用命令总结

目录 1. Docker镜像相关命令(重点掌握) 1.1 docker pull 镜像名称 [:tag] 拉取镜像 1.2 docker search 镜向名称 (查询某个镜像) 1.3 docker images 列出当前主机上所有镜像 1.4 docker rmi 镜像ID 删除镜像 1.5 docker system df 查看所有镜像容器所占空间 2. Docker …

JMeter + Ant + Jenkins持续集成-接口自动化测试

需要安装的工具: jdk1.8jmeter3.2ant1.9jenkins2.1 1、Jdkwin7系统如何安装jdk及环境变量的配置-百度经验 安装包安装设置环境变量验证是否安装正确 Java -version检查,如下就代表安装成功了,环境变量设置就去搜索了,网上很多…

RabbitMQ中方法channel.basicAck的使用说明

方法channel.basicAck的作用 在RabbitMQ中,channel.basicAck方法用于确认已经接收并处理了消息。 方法的参数说明 public void basicAck(long deliveryTag,boolean multiple) 参数: long deliveryTag 消息的唯一标识。每条消息都有自己的ID号&#x…

牛客网刷题-(4)

🌈write in front🌈 🧸大家好,我是Aileen🧸.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流. 🆔本文由Aileen_0v0🧸 原创 CSDN首发🐒 如…

prosemirror 学习记录(四)decoration

使用 decorations 使用 props - decorations() 添加 decorations 写一个简单的插件:高亮所有 apple 节点 export const MyHighlightApplesPlugin new Plugin({props: {// view 每次变化都会执行 decorations 方法decorations(state) {let arrs [];state.doc.de…

QT项目如何打包成可执行文件

QT项目打包成可执行文件 一 建立一个文件夹二. 编译2.1 打开QT MSVC编译工具2.2 进入publish文件夹 一 建立一个文件夹 例如:publish 二. 编译 2.1 打开QT MSVC编译工具 2.2 进入publish文件夹 cd 路径 执行命令 windeployqt 项目名 例:windeployq…

C/C++实现的MD5哈希校验

C/C实现的MD5哈希校验 网上找到的不知道哪位博主的代码,搜集使用,侵权删。 #ifndef MD5_H #define MD5_H#ifdef __cplusplus extern "C" { #endiftypedef struct {unsigned int count[2];unsigned int state[4];unsigned char buffer[64]; } …

vue3学习心得

1、组件v-model 与其说 组件v-model&#xff0c;倒不如说&#xff0c;父子组件通讯的双向邦定&#xff0c;我倒喜欢这样子去理解。就好比&#xff0c;我在子组件内有一个input框&#xff0c;然后&#xff0c;这个框的值会跟父组件定的属性一起变化。 <!--子组件 AttCompone…

美海军用于情报、监视和侦察的中大型无人系统概述

源自&#xff1a;中国指挥与控制学会 “人工智能技术与咨询” 发布 简 介 1 引 言 2 超大型无人潜航器 图1 波音“回声航行者”无人潜航器 图2 “虎鲸”超大型无人潜航器 3 中型无人水面舰艇 图3 “海鹰”无人水面舰艇 图4 “海上猎人”无人水面舰艇 4 …

SpringMVC 资源状态转移RESTful

文章目录 1、RESTful简介a>资源b>资源的表述c>状态转移 2、RESTful的实现HiddenHttpMethodFilterRESTful案例 1、RESTful简介 REST&#xff1a;Representational State Transfer&#xff0c;表现层资源状态转移。 a>资源 资源是一种看待服务器的方式&#xff0c…

GO语言代码示例

首先&#xff0c;我们需要安装 rod 库&#xff0c;这是一个用于构建网络爬虫的 Go 语言库。 使用 go get 命令安装 rod 库&#xff1a;go get -u github.com/gofiber/rod 创建一个新的 Go 程序文件&#xff0c;例如&#xff1a;main.go 在 main.go 文件中&#xff0c;导入 r…