【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,还要注意函数的参数变化

相关推荐
小熊恋旧26 分钟前
Python 面向对象编程:方法、属性、继承与多态详解
开发语言·python
云边云科技_云网融合27 分钟前
面向汽车零部件制造业场景的解决方案 | 70 秒:一台车下线的时间里,藏着五张网
开发语言·汽车·php
Evand J28 分钟前
【PMSM滤波例程2】PMSM未知负载转矩观测EKF。MATLAB例程(负载增广EKF与实际仿真结果)。附下载链接
开发语言·matlab·电机
will_net1 小时前
apollo 站点部署&C#接入
开发语言·c#·apollo
hweiyu001 小时前
Redis命令:SUNIONSTORE
redis·缓存
晗夜未央1 小时前
任务队列反复失败,先分清重试、阻塞和结果待核对
开发语言·javascript
熊猫钓鱼>_>1 小时前
四种书签,一条时间线:一个读书 App 的记忆颗粒与它的边界案例【鸿蒙心迹】
开发语言·华为·ai编程·harmonyos·鸿蒙·openharmony·鸿蒙pc
麻瓜code2 小时前
秒杀优化三连:Lua + 阻塞队列 + Redis Stream,响应从 3.4 秒到毫秒级
redis·junit·lua
努力努力再努力wz2 小时前
【Lua 入门系列】Lua 函数深入理解:函数对象、多返回值、可变参数、闭包、递归与尾调用优化
开发语言·lua
飞浪纪元[FWC–FE]3 小时前
从零到一键绿:Qt 5.14.2 + VS2019 开发环境搭建、Kit 套件配置与构建错误修复完全手册
开发语言·qt