当前位置: 首页 > web >正文

【golang长途旅行第36站】golang操作Redis

Go操作Redis

安装第三方Redis库–为了操作redis的api

  1. 设置go.mod文件
  2. 先安装Git
  3. 在终端上输入go get github.com/go-redis/redis/v8

学习文档:https://redis.uptrace.dev/zh/(官方中文版)

golang对于String操作

package main

import (
“context”
“fmt”
“time”

"github.com/go-redis/redis/v8"

)

func main() {
// 初始化 Redis 客户端
rdb := redis.NewClient(&redis.Options{
Addr: “localhost:6379”, // Redis 服务器地址
Password: “”, // 密码,没有则留空
DB: 0, // 默认数据库
})
defer rdb.Close() // 程序退出时关闭连接

// 创建上下文(默认超时 5 秒)
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)//cancel()会向所有派生自该 ctx的操作发送取消信号,并释放相关资源
//延时关闭
defer cancel()// 1. 设置键值(最后一个参数是设置有效时间,0表示永不过期)if err := rdb.Set(ctx, "name", "Alice", 0).Err(); err != nil {panic(fmt.Sprintf("设置 name 失败: %v", err))
}// 2. 设置带过期时间的键值(10分钟后过期)if err := rdb.Set(ctx, "token", "abc123", 10*time.Minute).Err(); err != nil {panic(fmt.Sprintf("设置 token 失败: %v", err))
}// 3. 获取值val, err := rdb.Get(ctx, "name").Result()
switch {
case err == redis.Nil:fmt.Println("Key 'name' 不存在")
case err != nil:panic(fmt.Sprintf("获取 name 失败: %v", err))
default:fmt.Println("name:", val) // 输出: name: Alice
}// 4. 删除键if _, err := rdb.Del(ctx, "name").Result(); err != nil {panic(fmt.Sprintf("删除 name 失败: %v", err))
}
fmt.Println("已删除 key 'name'")// 5. 验证删除(应返回 Key 不存在)_, err = rdb.Get(ctx, "name").Result()
if err == redis.Nil {fmt.Println("验证: Key 'name' 已不存在")
}

}

.Err()返回error,使用场景:只需要知道操作是否成功
.Result()返回(具体类型, error),使用场景:需要获取操作返回的具体数据

golang对于Hash操作

其实就是改一下操作
比如:
if err := rdb.Set(ctx, “name”, “Alice”, 0).Err(); err != nil
改成
if err := rdb.HSet(ctx, “myHash”,“name”, “Alice”).Err(); err != nil

当然不知要把Set改成HSet,还要注意函数的参数变化

http://www.xdnf.cn/news/19792.html

相关文章:

  • Vue基础知识-localStorage 与 sessionStorage
  • 华为HCIE认证:三年有效期值不值得?
  • 苹果开发中什么是Storyboard?object-c 和swiftui 以及Storyboard到底有什么关系以及逻辑?优雅草卓伊凡
  • 一款开源的CMS系统简介
  • 告别侵权风险!4家优质商用音乐平台盘点,本土创作者首选推荐!
  • 使用Java获取本地PDF文件并解析数据
  • 深度优先 一直往一个方向走,可用递归或者栈实现
  • 点燃汽车电子与高端制造的“合规·高效·智能”引擎—— 全星研发项目管理软件系统APQP软件系统
  • vim中常见操作及命令
  • 浏览器内存 (JavaScript运行时内存)存储的优劣分析
  • 常见机械机构的图graph表示
  • LeetCode 844.比较含退格的字符串
  • Redis的删除策略:内存满了,谁先走?
  • 自从不小心踢了一脚主机之后,电脑频繁蓝屏、死机、无法开机……
  • vscode无法复制terminal信息
  • TypeScript Awaited:一招搞定异步函数返回值类型
  • 【JavaScript】读取商品页面中的结构化数据(JSON-LD),在不改动服务端情况下,实现一对一跳转
  • Nano Banana 复刻分镜,多图结合片刻生成想要的视频
  • 年轻教师开学焦虑破解:从心出发,重构健康工作生活新秩序
  • Unity核心概率④:MonoBehavior
  • RAGFlow——知识库检索系统开发实战指南(包含聊天和Agent模式)
  • 硬件板级设计笔试题目-基础篇-卷8
  • 纯前端html英文字帖图片生成器自动段落和换行
  • 人体姿态估计与动作分类研究报告
  • 文字识别接口-文字识别技术-ocr api
  • Corrosion: 1靶场渗透
  • 职业院校汽车专业数字化课程资源包——虚拟仿真实训资源建设方案
  • 解密llama.cpp CUDA后端:512 token大模型批处理的异步流水线架构
  • Redis 的压缩列表:像快递驿站 “紧凑货架“ 一样的内存优化结构
  • Web3 开发者周刊 65 | DAT的崛起