Go语言实战案例-Redis连接与字符串操作

在高性能应用开发中,Redis 凭借其内存存储和高效的数据结构,常用于缓存、会话管理、计数器、消息队列等场景。

Go 语言可以通过官方推荐的 Redis 客户端库 go-redis 来与 Redis 交互。本文将演示如何:

    1. 连接 Redis
    1. 执行字符串操作(SET、GET、INCR、DEL)
    1. 设置键的过期时间

一、环境准备

安装 go-redis 库:

go 复制代码
go get github.com/redis/go-redis/v9

本地需运行 Redis 服务,可以用 Docker 快速启动:

arduino 复制代码
docker run -d -p 6379:6379 redis

二、初始化 Redis 连接

go 复制代码
package main

import (
    "context"
    "fmt"
    "github.com/redis/go-redis/v9"
    "log"
    "time"
)

var ctx = context.Background()
var rdb *redis.Client

func initRedis() {
    rdb = redis.NewClient(&redis.Options{
        Addr:     "localhost:6379", // Redis 地址
        Password: "",               // 无密码
        DB:       0,                // 默认 DB
    })

    // 测试连接
    _, err := rdb.Ping(ctx).Result()
    if err != nil {
        log.Fatal("Redis 连接失败:", err)
    }
    log.Println("Redis 连接成功")
}

三、Redis 字符串操作

1. 设置键值

go 复制代码
func setValue() {
    err := rdb.Set(ctx, "username", "gopher", time.Minute).Err()
    if err != nil {
        log.Println("设置失败:", err)
        return
    }
    log.Println("设置成功: username=gopher (有效期1分钟)")
}

2. 获取键值

c 复制代码
func getValue() {
    val, err := rdb.Get(ctx, "username").Result()
    if err == redis.Nil {
        log.Println("key 不存在")
    } else if err != nil {
        log.Println("获取失败:", err)
    } else {
        log.Println("获取成功: username=", val)
    }
}

3. 自增计数器

go 复制代码
func incrCounter() {
    val, err := rdb.Incr(ctx, "counter").Result()
    if err != nil {
        log.Println("自增失败:", err)
        return
    }
    log.Println("计数器值:", val)
}

4. 删除键

go 复制代码
func deleteKey() {
    _, err := rdb.Del(ctx, "username").Result()
    if err != nil {
        log.Println("删除失败:", err)
        return
    }
    log.Println("删除成功: username")
}

四、测试执行

scss 复制代码
func main() {
    initRedis()

    setValue()
    getValue()

    incrCounter()
    incrCounter()

    deleteKey()
    getValue()
}

五、运行效果

makefile 复制代码
Redis 连接成功
设置成功: username=gopher (有效期1分钟)
获取成功: username= gopher
计数器值: 1
计数器值: 2
删除成功: username
key 不存在

六、总结

通过本案例,我们学习了:

  • • 使用 go-redis 连接 Redis
  • • 字符串操作:SET、GET、INCR、DEL
  • • 设置过期时间,控制缓存生命周期

👉 Redis 的字符串操作非常适合做:

  • • 缓存热点数据(比如用户信息、文章内容)
  • • 分布式计数器(比如点赞数、访问量统计)
  • • 临时令牌存储(比如登录验证码)
相关推荐
狼爷38 分钟前
从零用 Java 构建 AI Agent 框架:JavaManus 设计与实现深度解析
后端·langchain·aigc
郑州光合科技余经理40 分钟前
海外版外卖加盟:总站与分站配送规则怎么分开管
java·开发语言·前端·后端·uni-app·php·ai编程
专业程序开发源1 小时前
springboot简历管理系统81389-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·spring·php·课程设计
专业程序开发源1 小时前
springboot社区养老系统44071-计算机课程设计、毕业设计
vue.js·spring boot·后端·python·django·php·课程设计
小呆呆6661 小时前
副业搞起来,小说,漫画,漫剧的成本优化思路
前端·后端·面试
周杰伦fans2 小时前
8GB显存下模型量化实战指南
人工智能·后端·c#
小蒜学长2 小时前
基于SpringBoot的佳新超市管理系统设计与实现系统(代码+数据库+LW)
java·数据库·spring boot·后端·佳新超市管理系统
IT_陈寒3 小时前
Vite静态资源导入这个坑我帮你们踩过了
前端·人工智能·后端
打工仔折腾 AI4 小时前
把AI Agent托管在家用电脑:UU远程终端与端口映射实测记录
人工智能·后端·python·langchain·ai agent 实战
vx_Biye_Design4 小时前
springboot高校选课系统82776-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·spring·课程设计·express