Golang 操作redis

我使用的是 https://github.com/go-redis/redis 这个 golang 客户端, 因此安装方式如下:

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

 

接着在代码中导入此包即可:

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

 

创建客户端

通过 redis.NewClient 函数即可创建一个 redis 客户端, 这个方法接收一个 redis.Options 对象参数, 通过这个参数, 我们可以配置 redis 相关的属性, 例如 redis 服务器地址, 数据库名, 数据库密码等.
下面是一个连接的例子:

 

 

复制代码
func RedisClient1() *redis.Client{
    var ctx = context.Background()
    rdb := redis.NewClient(&redis.Options{
        Addr:     "localhost:6379",
        Password: "", // no password set
        DB:       1,  // use default DB
    })
    _, err := rdb.Ping(ctx).Result()
    if err != nil {
        fmt.Println(err)
    }
    return rdb
}
复制代码

 

String 操作

redis 的 String 操作有:

复制代码
set(key, value):给数据库中名称为key的string赋予值value
get(key):返回数据库中名称为key的string的value
getset(key, value):给名称为key的string赋予上一次的value
mget(key1, key2,…, key N):返回库中多个string的value
setnx(key, value):添加string,名称为key,值为value
setex(key, time, value):向库中添加string,设定过期时间time
mset(key N, value N):批量设置多个string的值
msetnx(key N, value N):如果所有名称为key i的string都不存在
incr(key):名称为key的string增1操作
incrby(key, integer):名称为key的string增加integer
decr(key):名称为key的string减1操作
decrby(key, integer):名称为key的string减少integer
append(key, value):名称为key的string的值附加value
substr(key, start, end):返回名称为key的string的value的子串
复制代码

 

在 go-redis 中, 我们可以直接找到对应的操作方法, 直接上代码:

复制代码
// String 操作
func stringOperation(client *redis.Client) {
    // 第三个参数是过期时间, 如果是0, 则表示没有过期时间.
    err := client.Set("name", "xys", 0).Err()
    if err != nil {
        panic(err)
    }

    val, err := client.Get("name").Result()
    if err != nil {
        panic(err)
    }
    fmt.Println("name", val)


    // 这里设置过期时间.
    err = client.Set("age", "20", 1 * time.Second).Err()
    if err != nil {
        panic(err)
    }

    client.Incr("age") // 自增
    client.Incr("age") // 自增
    client.Decr("age") // 自减

    val, err = client.Get("age").Result()
    if err != nil {
        panic(err)
    }
    fmt.Println("age", val) // age 的值为21

    // 因为 key "age" 的过期时间是一秒钟, 因此当一秒后, 此 key 会自动被删除了.
    time.Sleep(1 * time.Second)
    val, err = client.Get("age").Result()
    if err != nil {
        // 因为 key "age" 已经过期了, 因此会有一个 redis: nil 的错误.
        fmt.Printf("error: %v\n", err)
    }
    fmt.Println("age", val)
}
复制代码

 

posted on   星河赵  阅读(119)  评论(0编辑  收藏  举报

编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
历史上的今天:
2017-12-06 正则表达式

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示