Redis各类数据结构详细介绍及其在Go语言Gin框架下实践应用

news/2025/11/2 14:05:49/文章来源:https://www.cnblogs.com/gwerwr811111/p/19184909

Redis是一个开源的高性能键值数据库,支持多种类型的数据结构。以下是Redis支持的主要数据结构及其应用:

  1. 字符串(Strings) : 这是最基本的类型,一个键对应一个值,可以包含任何数据。例如可以用来缓存用户信息或者进行计数。
  2. 哈希(Hashes) : 哈希是键值对集合,适合存储对象。例如用户对象可以有id, name, email等字段。
  3. 列表(Lists) : Redis列表是简单的字符串链表,适合实现队列等功能。比如任务队列,在社交网络中保存用户动态等场景。
  4. 集合(Sets) : 集合中不允许重复成员出现,并且提供了强大操作如交集、并集、差集等操作。适用于无序且唯一性场景如标签系统、好友关系处理。
  5. 有序集合(Sorted Sets) :与Sets类似但每个成员关联了一个评分(score),根据评分自动排序,在排行榜系统中非常实用。
  6. 位图(Bitmaps)和超日志(HyperLogLogs):位图不常见但可进行高效率空间利用相关操作;超日志则提供基数统计功能,并能在保持较低空间复杂度下处理大量数据统计问题。
  7. 以及新版本引入流(Streams):流类似于日志文件这种追加型数据结构,并且每个记录都会被赋予唯一ID,在消息队列和事件传输方面非常有价值。

在Go语言Gin框架下使用Redis通常需要使用到第三方库比如 go-redis/redis或者 Redigo来与Redis服务器进行通信:

import ("github.com/go-redis/redis/v8""github.com/gin-gonic/gin"
)func main() {r := gin.Default()// 初始化 Redis 客户端redisClient := redis.NewClient(&redis.Options{Addr:     "localhost:6379", // Redis地址Password: "",               // 密码 (无密码则为空)DB:       0,                // 使用默认DB})r.GET("/cache/:key", func(c *gin.Context) {key := c.Param("key")val, err := redisClient.Get(ctx, key).Result()if err != nil {c.JSON(404, gin.H{"error": "Key not found"})return}c.JSON(200, gin.H{"value": val})})r.POST("/cache", func(c *gin.Context){var json struct{Key string `json:"key"`Value string `json:"value"`}if err:=c.BindJSON(&json);err!=nil{c.JSON(400,err.Error())return }if err:= redisClient.Set(ctx,json.Key,json.Value,time.Hour).Err();err!=nil{c.JSON(500,err.Error())return }c.Status(http.StatusOK)})r.Run(":8080")
}
​
 
 

上述代码展示了在Gin框架下创建简单缓存服务示例:

1)初始化Gin路由器;
2)创建并配置连接到本地运行Redis服务器;
3)定义GET路由以从缓存获取信息;
4)定义POST路由以将信息保存到缓存;

这只是利用Go语言和Gin框架与Redis交互最基础部分展示;根据具体业务需求可能需要更复杂查询、事务处理或订阅发布功能实现更多高级特性应用场景。

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

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

相关文章

2025 年 11 月弹簧片厂家推荐排行榜,304弹簧片,301弹簧片,不锈铁,430不锈钢板材公司推荐

2025年11月弹簧片厂家推荐排行榜:304弹簧片、301弹簧片、不锈铁、430不锈钢板材公司深度解析 行业背景与发展现状 弹簧片作为工业制造领域的关键基础材料,其性能和质量直接影响着终端产品的可靠性和使用寿命。随着制…

2025 年 11 月办公家具厂家推荐排行榜,办公桌,办公椅,文件柜,会议桌,办公沙发公司推荐,品质与设计双重保障!

2025年11月办公家具厂家推荐排行榜:品质与设计双重保障 在当今商业环境中,办公家具已不仅仅是功能性的工作工具,更是企业文化、空间美学和员工福祉的重要载体。随着企业对办公环境重视程度的提升,办公家具行业正经…

2025 年 11 月伸缩门厂家最新推荐,产能、专利、环保三维数据透视

为精准筛选具备可持续供应能力与技术竞争力的伸缩门厂家,本次联合行业绿色发展协会,以 “产能、专利、环保” 为核心构建三维测评体系。产能维度,核查厂家年产能规模、生产线数量及紧急订单响应效率,确保可满足不同…

[2025.11.2 雨集] 你这一生都不会忘记我

青春伤痛文学?[2025.11.2 雨集] 你这一生都不会忘记我 用有些生锈的钥匙扭开老旧的门锁,轻轻关上门 垫着脚从易拉罐中走过,还是没有习惯酒精的味道 酒真的好喝吗,也不是没有喝过,曾经品尝过一点,感觉含酒精的饮…

【C语言】进程间通信

以下内容通过pipe、fifo、mmap来进行进程间通信 管道pipe()管道pipe也称为匿名管道,只有在有血缘关系的进程间进行通信。管道的本质就是一块内核缓冲区。 进程间通过管道的一端写,通过管道的另一端读。管道的读端和写…

每日一题:Leet 2257. 统计网格图中没有被保卫的格子数

给你两个整数m和n表示一个下标从 0 开始的m x n网格图。同时给你两个二维整数数组guards和walls,其中guards[i] = [rowi, coli]且 walls[j] = [rowj, colj],分别表示第i个警卫和第j座墙所在的位置。 一个警卫能看到…

完全背包内外层循环是否可以对调?

结论:完全背包内外层循环不可以对调之前一直认为完全背包内外层循环可以互相对调,可能也是由于某一些题目数据的巧合吧,现在碰到一道题目帮我纠正了 题目 纠正 内外层循环对调,无非就是先物品后容积,还有就是先容…

SQL新特性/SQL语言增强以及JSON新特性

SQL新特性/SQL语言增强以及JSON新特性本文给大家简单介绍一下最新标准中的型特性,主要分为以下三大类别:已有 SQL 语言的增强;JSON 相关的新特性;新增的属性图查询语言。该版本新增功能都属于可选特性。 SQL 增强 …

CSP2025 游寄

Day -??? 膜你赛,膜你赛,还是他妈膜你赛。 Day 0 上午出发,火车上爽爽开摆。 到达秦皇岛,宾馆环境还不错。和 yonghu10010 一个屋。 晚上爽完你画我猜、块、MC,直接干道 2:00 了,再不睡第二天就犯困啦! Kenb…

MySQL性能分析(五)之status详解

一、概述 SHOW STATUS是MySQL内置的核心诊断命令,用于实时查看数据库服务器的运行状态指标,涵盖连接数、查询性能、缓存使用、锁等待等关键维度。这些指标如同数据库的“体检报告”,能帮助开发者快速定位性能瓶颈、…

2025 年 11 月电动门厂家最新推荐,精准检测与稳定性能深度解析

随着出入口智能化升级,电动门成为商业、工业等场景核心设备,但市场产品稳定性差异显著,采购者难辨优劣。2025 年 11 月,国际出入口设备检测协会开展电动门厂家专项测评,覆盖全球 120 余家主流品牌。测评以 “精准…

《密码系统设计》第九周预习

20231313 张景云《密码系统设计》第九周预习AI对内容的总结 Headfirst C 一、系统调用基础 1. 核心定义 系统调用是操作系统内核中的函数,是C程序与硬件、操作系统交互的桥梁。C标准库(如printf())底层依赖系统调用…

《密码系统设计》第九周预习

20231313 张景云《密码系统设计》第九周预习AI对内容的总结 Headfirst C 一、系统调用基础 1. 核心定义 系统调用是操作系统内核中的函数,是C程序与硬件、操作系统交互的桥梁。C标准库(如printf())底层依赖系统调用…

2025年程序员兼职常用的10个平台推荐 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

JavaScript笔记(1)

基本数据类型(值类型):Number、String、Boolean、Null、Undefined、Symbol、BigInt直接存储在栈内存中不可以动态地添加属性: let name = "bob" name.age = 22 // Cannot create property age on string…

回归 CSP-S2025游记

洛谷传送门去年打完 \(CSP-S\) 拿了 \(2=\) 没过线就退役回 \(whk\) 了,回归之后的第一站:\(CSP2025\)坐标 \(HA\)DAY 0 初赛前一周回归复习了一下 (其实复习的基本上都没考) DAY 0.5 CSP-S第一轮(2025.9.28) 起的…

使用netfilter_queue重定向IP数据包

使用netfilter_queue重定向IP数据包 一、开发环境 OS:Debian 12 gcc :15.1.0 安装libnetfilter-queue-dev开发工具包sudo apt-get install libnetfilter-queue-dev

线性表、串、数组、广义表

队列和栈 循环队列:队空 head=tail 队满 (tail+1)%size=head 空串:长度为0的串,不包含任何字符 空格串:一个或多个空格组成的串 串比较:以字符的ASCLL码的值,当其中一个串先结束,则另一个串长的为大。 让我们…

【赶紧收藏】7款Windows数据恢复神器!能解决99%的问题,手慢无!

随着全球智能手机和电脑用户数量的增长,对优质数据恢复软件的需求也日益增长。与此同时,随着数字用户数量的增加,数据丢失问题也愈发突出。 要恢复丢失的数据,你需要一款优秀的专业数据恢复软件,它能够从各种数据…

回归CSP-S2025游记

洛谷传送门去年打完 \(CSP-S\) 拿了 \(2=\) 没过线就退役回 \(whk\) 了,回归之后的第一站:\(CSP2025\)坐标 \(HA\)DAY 0 初赛前一周回归复习了一下 (其实复习的基本上都没考) DAY 0.5 CSP-S第一轮(2025.9.28) 起的…