Redis数据库与GO完结篇:redis操作总结与GO使用redis
一、redis操作总结
由于写redis命令的时候有提示符,所以下表只给出命令名称
| 数据类型 | 操作 | 简介 |
|---|---|---|
| 字符串 | GET, SET, MGET, MSET, SETEX,DEL | 最基本的数据类型,存储任意二进制数据,支持简单操作和原子计数。适合存储重复数据。 |
| 哈希 | HSET, HGET, HDEL, HMSET, HMGET, HEXISTS,HGETALL,HLEN | 键值对集合,适合存储对象,支持字段操作。可存储重复字段。 |
| 列表 | LPUSH, RPUSH, LPOP, RPOP, LRANGE, LSET, LREM | 有序字符串集合,支持双向操作,适合实现消息队列,允许重复元素。 |
| 集合 | SADD, SREM, SMEMBERS, SISMEMBER | 无序唯一元素集合,不允许重复,支持集合运算,适合实现标签和用户兴趣。 |
| 有序集合 | ZADD, ZREM, ZRANGE | 带分数的有序集合,不允许重复,支持范围查询和排序,适合实现排行榜等。 |
二、GO连接redis
go-redis 支持 2 个最新的 go 版本且依赖Go modules,如果你还没有 go mod,你需要首先初始化:
go mod init github.com/my/repo
安装 go-redis/v9 (支持所有的 redis 版本):
go get github.com/redis/go-redis/v9
参考链接:GO REDIS快速入门
然后导包即可使用redis:import "github.com/redis/go-redis/v9"
GO链接redis分为以下几步:
1.配置链接信息
opts := redis.Options{Addr: "localhost:6379", // Redis 服务器地址和端口Password: "", // Redis 密码,默认为空DB: 0, // Redis 数据库编号,默认为 0
}
2.创建客户端
rdb := redis.NewClient(&opts)
3.创建上下文
ctx := context.Background()
4.测试连接
_, err := rdb.Ping(ctx).Result()
if err != nil {fmt.Println("连接 Redis 失败!")return
}
fmt.Println("连接 Redis 成功!")
操作2-4都已被本人封装在一个函数中:
// 创建 Redis 客户端并返回客户端和上下文
func ConnectRedis(opts *redis.Options) (*redis.Client, context.Context, error) {// 创建 Redis 客户端rdb := redis.NewClient(opts)// 创建上下文ctx := context.Background()// 测试连接_, err := rdb.Ping(ctx).Result()if err != nil {fmt.Println("连接 Redis 失败!")return nil, nil, err}fmt.Println("连接 Redis 成功!")return rdb, ctx, nil
}
本人已在自定义包中定义此函数,这样,用户无需每次手动测试链接。自定义包已部署在gitee上,读者可通过go get+本人的项目地址获取,项目地址:my_gopkg。使用前建议阅读README。
三、GO操作redis
go-redis封装的函数名和redis语句是一样的,传参除了传入上下文变量也是一样的,只是调用函数时多了Err()和Result()。Result()用于获取 Redis 命令的返回值。Err()用于获取命令执行的错误信息。
数据类型以哈希表为例,GO链接,操作redis的完整代码如下:
package mainimport ("context""fmt""time""github.com/redis/go-redis/v9"
)// ConnectRedis 创建 Redis 客户端并返回客户端和上下文
func ConnectRedis(opts *redis.Options) (*redis.Client, context.Context, error) {// 创建 Redis 客户端rdb := redis.NewClient(opts)// 创建上下文ctx := context.Background()// 测试连接_, err := rdb.Ping(ctx).Result()if err != nil {fmt.Println("连接 Redis 失败!")return nil, nil, err}fmt.Println("连接 Redis 成功!")return rdb, ctx, nil
}
func main() {// 配置链接信息opts := redis.Options{Addr: "localhost:6379", // Redis 服务器地址和端口Password: "", // Redis 密码,默认为空DB: 0, // Redis 数据库编号,默认为 0}rdb, ctx, err := ConnectRedis(&opts)if err != nil {return}// 创建用户err = rdb.HSet(ctx, "myhash", "name", "张三", "age", 30).Err()if err != nil {fmt.Println("创建用户失败:", err)return}fmt.Println("用户创建成功")// 获取用户信息userInfo, err := rdb.HGetAll(ctx, "myhash").Result()if err != nil {fmt.Println("获取用户信息失败:", err)return}fmt.Println("用户信息:", userInfo)// 更新用户信息err = rdb.HSet(ctx, "myhash", "name", "李四", "age", 25).Err()if err != nil {fmt.Println("更新用户信息失败:", err)return}fmt.Println("用户信息更新成功")// 再次获取用户信息以查看更新效果updatedInfo, err := rdb.HGetAll(ctx, "myhash").Result()if err != nil {fmt.Println("获取更新后的用户信息失败:", err)return}fmt.Println("更新后的用户信息:", updatedInfo)// 设置键的过期时间为5秒err = rdb.Expire(ctx, "myhash", 5*time.Second).Err()if err != nil {fmt.Println("设置过期时间失败:", err)return}fmt.Println("设置过期时间成功")// 等待6秒time.Sleep(6 * time.Second)// 再次尝试获取哈希值(预期为空,因为键已过期)result, err := rdb.HGetAll(ctx, "myhash").Result()if err != nil {fmt.Println("获取用户信息失败:", err)return}if len(result) == 0 {fmt.Println("键已过期,无法获取用户信息")} else {fmt.Println("用户信息:", result)}// 删除用户信息err = rdb.Del(ctx, "myhash").Err()if err != nil {fmt.Println("删除用户信息失败:", err)return}fmt.Println("用户信息删除成功")
}相关文章:
Redis数据库与GO完结篇:redis操作总结与GO使用redis
一、redis操作总结 由于写redis命令的时候有提示符,所以下表只给出命令名称 数据类型操作简介字符串GET, SET, MGET, MSET, SETEX,DEL最基本的数据类型,存储任意二进制数据,支持简单操作和原子计数。适合存储重复数据。哈希HSET, HGET, HDE…...
《重生到现代之从零开始的C语言生活》—— 动态内存管理
动态内存分配 我们在开辟内存的时候就是 int a 3;这样 但是这样开的空间大小是固定的,且大小不能调整 但是如果我们用动态内存开辟的话,就可以自己申请和释放空间、 malloc 是C语言提供的一个开辟动态空间的函数 void* malloc (size_t size);//si…...
四、Spring Boot集成Spring Security之登录登出业务逻辑
Spring Boot集成Spring Security之登录登出业务逻辑 一、概要说明二、基于内存的用户名密码1、默认用户名密码2、自定义用户名密码3、为方便测试添加测试接口TestController 三、登录登出重要概念介绍四、登录业务逻辑1、登录业务相关过滤器2、访问业务请求处理流程①、访问业务…...
pipe和pipefd
Linux 中 pipe 的详细介绍 在 Linux 中,pipe 是一个系统调用,用于创建一个管道,这是一种用于进程间通信(IPC)的机制。管道允许两个进程之间进行单向数据传输,通常是一个进程向管道写入数据,而另…...
无人机之飞控仿真技术篇
一、无人机飞控仿真技术的定义 无人机飞控仿真技术主要是指飞行控制系统仿真,它是以无人机的运动情况为研究对象,面向对象的复杂系统仿真。通过该技术,可以模拟无人机的飞行过程,评估飞行控制系统的性能,优化飞行参数&…...
Tetra Pak利乐触摸屏维修beijer北尔触摸屏维修E1151
TetraPak利乐包装机触摸显示屏维修,北尔全系列型号触摸屏修理 维修注意事项: 上电前,应检查负载是否接上或是否正确; 测量电压时,确认档位是否在电压档。要确认仪器仪表的量程应大于测试点的电压; 更换电…...
Python_网络编程(IP 端口 协议)
网络编程: 互联网时代,现在基本上所有的程序都是网络程序,很少有单机版的程序了。网络编程就是如何在程序中实现两台计算机的通信。Python语言中,提供了大量的内置模块和第三方模块用于支持各种网络访问,而且Python语言…...
Adobe Acrobat提示“3D数据解析错误”
原因:在使用Adobe Acrobat打开3D PDF时,因当前Adobe Acrobat的配置存在错误,所以无法打开 解决方法:重新生成配置 首先到达下面的路径C:\Users\你的用户名\AppData\Local\Adobe\Acrobat 下面为我的路径内容 若该路径下存在文件…...
红帽7—Mysql路由部署
MySQL Router 是一个对应用程序透明的InnoDB Cluster连接路由服务,提供负载均衡、应用连接故障转移和客户端路 由。 利用路由器的连接路由特性,用户可以编写应用程序来连接到路由器,并令路由器使用相应的路由策略 来处理连接,使其…...
LLM4Rec最新工作: 字节发布用于序列推荐的分层大模型HLLM
前几个月 Meta HSTU 点燃各大厂商对 LLM4Rec 的热情,一时间,探索推荐领域的 Scaling Law、实现推荐的 ChatGPT 时刻、取代传统推荐模型等一系列话题让人兴奋,然而理想有多丰满,现实就有多骨感,尚未有业界公开真正复刻 …...
怎么高效对接SaaS平台数据?
SaaS平台数据对接是指将一个或多个SaaS平台中的数据集成到其他应用或平台中的过程。在当前的数字化时代,企业越来越倾向于使用SaaS平台来管理他们的业务和数据。然而,这些数据通常散布在不同的SaaS平台中,这对于企业数据的整合和分析来说可能…...
Spark算子使用-Map,FlatMap,Filter,diatinct,groupBy,sortBy
目录 Map算子使用 FlatMap算子使用 Filter算子使用-数据过滤 Distinct算子使用-数据去重 groupBy算子使用-数据分组 sortBy算子使用-数据排序 Map算子使用 # map算子主要使用长场景,一个转化rdd中每个元素的数据类型,拼接rdd中的元素数据…...
CSS响应式布局
CSS 响应式布局也称自适应布局,是 Ethan Marcotte 在 2010 年 5 月份提出的一个概念,简单来讲就是一个网站能够兼容多个不同的终端(设备),而不是为每个终端做一个特定的版本。这个概念是为解决移动端浏览网页而诞生的。…...
AI大模型书籍丨掌握 LLM 和 RAG 技术,这本大模型小鸟书值得一看!
本指南旨在帮助数据科学家、机器学习工程师和机器学习/AI 架构师探索信息检索与 LLMs 的集成及其相互增强。特别聚焦于 LLM 和检索增强生成(RAG)技术在信息检索中的应用,通过引入外部数据库与 LLMs 的结合,提高检索系统的性能。 …...
Mysql和Oracle使用差异和主观感受
这两种常用的关系型数据库有何差异? 支持和社区 MySQL:有一个活跃的开源社区,用户可以获取大量的文档和支持。 Oracle:提供了专业的技术支持,但通常需要额外的费用。 易用性 MySQL:通常被认为是更易于学…...
【Java】—— File类与IO流:File类的实例化与常用方法
目录 1. java.io.File类的使用 1.1 概述 1.2 构造器 1.3 常用方法 1、获取文件和目录基本信息 2、列出目录的下一级 3、File类的重命名功能 4、判断功能的方法 5、创建、删除功能 1.4 练习 练习1: 练习2: 练习3: 1. java.io.Fil…...
C++设计模式——装饰器模式
欢迎来到 破晓的历程的 博客 ⛺️不负时光,不负己✈️ 什么是装饰器模式? 装饰器模式(Decorator Pattern)是一种结构型设计模式,允许你向一个现有的对象添加新的功能,同时又不改变其结构。这种模式通过创…...
C#使用ITextSharp生成PDF文件实例详解
许多项目开发中需要生成PDF, 常规办法使用官方提供的Microsoft.Office.Interop.Worddll插件,但是这种方法需要完全安装OFFICE,另外版本不一致还会出现很多错误。一般不推荐使用。 下面介绍这种巧妙的用法,定能事半功倍。 本文使用ITextSharp完成功能。 首先,通过NuGet…...
10.9QT对话框以及QT的事件机制处理
MouseMoveEvent(鼠标移动事件) widget.cpp #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);// 设置窗口为无边框,去掉标题栏等装饰this->setWi…...
SiLM266x系列SiLM2661高压电池组前端充/放电高边NFET驱动器 为电池系统保护提供可靠性和设计灵活性
SiLM2661产品概述: SiLM2661能够灵活的应对不同应用场景对锂电池进行监控和保护的需求,为电池系统保护提供可靠性和设计灵活性。是用于电池充电/放电系统控制的低功耗、高边 N 沟道 FET 驱动器,高边保护功能可避免系统的接地引脚断开连接&am…...
C#上位机与三菱PLC通信实战:从零构建GX Works3仿真平台
1. 为什么需要搭建GX Works3仿真平台 第一次接触三菱PLC开发的朋友们,可能都有这样的困惑:手头没有实体PLC设备,怎么测试自己写的控制程序?买一台FX5U PLC动辄几千元,对个人开发者来说成本太高。这时候仿真平台就成了最…...
从零部署openclaw:Docker Compose实战与避坑指南
1. 项目概述与核心价值最近在部署一个名为“openclaw”的开源项目时,我遇到了不少坑。这个项目在GitHub上的仓库是xujfcn/openclaw-deploy,从名字就能看出来,它是一个专注于部署的仓库,而不是主项目本身。我花了不少时间才搞清楚&…...
基于rsync的嵌入式Ubuntu系统镜像定制与批量部署实战
1. 项目概述:为什么我们需要在开发板上“冻结”Ubuntu文件系统?在基于ARM架构的嵌入式开发中,尤其是使用像飞凌OK3399-C这样搭载RK3399处理器的开发板时,我们常常会面临一个看似简单却非常实际的痛点:环境部署的效率问…...
MobaXterm实战:一站式打通串口调试与远程SSH管理
1. 为什么选择MobaXterm作为全能终端工具 第一次接触嵌入式开发时,我被各种终端工具搞得晕头转向——串口调试要用SecureCRT,SSH连接得开PuTTY,文件传输还得额外装WinSCP。直到同事推荐了MobaXterm,这个法国开发者打造的免费工具彻…...
面试题详解:GraphRAG 全面解析——知识图谱增强 RAG、Local Search、Global Search、社区摘要、工程落地与评估指标一次讲透
一、什么是 GraphRAG?1.1 先用一句话讲清楚GraphRAG 可以理解为:在传统 RAG 的基础上,把文档里的实体、关系、事件和主题组织成一张图,再利用这张图来增强检索和生成。普通 RAG 更像“在文档块里找相似内容”,GraphRAG…...
CefFlashBrowser完全指南:2025年畅玩Flash游戏与存档管理终极方案
CefFlashBrowser完全指南:2025年畅玩Flash游戏与存档管理终极方案 【免费下载链接】CefFlashBrowser Flash浏览器 / Flash Browser 项目地址: https://gitcode.com/gh_mirrors/ce/CefFlashBrowser 在Adobe Flash正式退出历史舞台后,无数经典网页游…...
零基础转行网安:3个月学习路线+就业方向(2026最新)
零基础转行网安:3 个月学习路线 就业方向(2026 最新) 最近刷到很多小白在问: “2026 年零基础还能转行网安吗?”“没有学历、没有基础、不会代码,多久能找到工作?”“网上教程杂乱,…...
靠谱的openai claudecode AI中转站
各位大神开发都用那些模型?最近用Trae的模型一下就降智,切换到apikeyfun.com 用了ops4.7和gpt5.5简直是降维打击,速度快,还不错!...
使用taotoken cli工具一键配置团队github仓库的开发环境
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 使用taotoken cli工具一键配置团队github仓库的开发环境 在团队协作开发中,确保每个成员使用统一的大模型API接入配置是…...
保利商旅诺雅品牌首作,长沙保利橘洲诺雅酒店开业
美通社消息:5月15日,由保利发展湖南公司投资兴建、保利商旅产业发展有限公司运营管理的豪华城市度假品牌——诺雅(ORYARD)首店:长沙保利橘洲诺雅酒店,于湘江之畔正式盛大开业。该项目自2026年2月试营业以来,历经数月的…...
