GO语言操作redis

目录

前言

一、Redigo

1.redigo连接redis服务器

2.set、get操作

2.List操作

3.Hash表

4.set

5.zset

6.连接池

7.事务

8. pipeline

二、go-redis

1.go-redis连接redis服务器

2. get、set操作

3. List操作

4. Hash

5. Set

6. ZSet

7. pipeline

8. 事务

9. 哨兵模式

10. 集群

总结


前言

刚学完redis,在此记录如何使用redis。redis有许多go语言的客户端包,都能实现对redis的操作。例如redigo、go-redis。

一、Redigo

1.redigo连接redis服务器

package main

import (
    "fmt"
    "github.com/garyburd/redigo/redis"
)

func main() {
    client, err := redis.Dial("tcp", "localhost:6379")
    defer client.Close()
    if err != nil {
        fmt.Println("redis connect failed,", err)
        return
    } 
    fmt.Println("redis connect success")
}

2.set、get操作

  • 设置值
    _, err = client.Do("Set", "abc", 100)
    if err != nil {
        fmt.Println("set string failed", err)
        return
    }
    _, err = client.Do("Set", "36D", "good")
    if err != nil {
        fmt.Println("set string failed", err)
        return
    }
  • 获取值
    // redigo 通过redis.Int()函数来获取整型
    res, err := redis.Int(client.Do("Get", "abc"))
    if err != nil {
        fmt.Println("get string failed,", err)
        return
    }
    fmt.Println(res)
    // redigo 通过redis.String()函数来获取字符串
    res1, err := redis.String(client.Do("Get", "36D"))
    if err != nil {
        fmt.Println("get string failed,", err)
        return
    }
    fmt.Println(res1)
  • 批量获取
    res3, err := redis.Strings(client.Do("MGet", "36", "32"))
    if err != nil {
        fmt.Println("get string failed,", err)
        return
    }
    fmt.Println(res3)
  • 设置过期时间
    // 设置过期时间
    _, err = client.Do("setex" , "a", 2, "10")
    if err != nil {
        fmt.Println("set string failed", err)
        return
    }
    
    res2, err := redis.String(client.Do("Get", "a"))
    if err != nil {
        fmt.Println("get string failed,", err)
        return
    }
    fmt.Println(res2)
    time.Sleep(5 * time.Second)
    fmt.Println("5秒后")
    res2, err = redis.String(client.Do("Get", "a"))
    if err != nil {
        fmt.Println("get string failed,", err)
        return
    }
    fmt.Println(res2)

  输出如下:

10
5秒后
get string failed, redigo: nil returned

2.List操作

  • lpush key element1 element2:向列表左侧插入若干个元素
    // 从左边放入元素
    _, err = client.Do("lpush", "NBAplayer", "Jordon", "Kobe", "Lebron")
    if err != nil {
        fmt.Println("push element failed")
        return
    }
  • lrange key start end:返回范围内的所有元素
    // 取出所有元素
    res4, err := redis.Strings(client.Do("lrange", "NBAplayer", "0", "-1"))
    if err != nil {
        fmt.Println("get element failed")
        return
    }
    for _, v := range res4{
        fmt.Println(v)
    }

  输出结果:

Lebron
Kobe
Jordon

3.Hash表

  • hset key field value:添加或修改hash类型key的field的值
    // 单个插入
    _, err = client.Do("HSet", "DSB", "name", "SB")
    if err != nil {
        fmt.Println("hset failed")
        return
    }
  • hmset key field1 value1 field2 value2:批量添加多个hash类型key的field值
    _, err = client.Do("HmSet", "DSB", "age", "18", "addr", "usa")
    if err != nil {
        fmt.Println("hmset failed")
        return
    }
  • hget key field:获取一个hash类型的key的field的值
    // 单个获取
    res5, err := redis.String(client.Do("Hget", "DSB", "name"))
    if err != nil {
        fmt.Println("hget element failed")
        return
    }
    fmt.Println(res5)
  • hmget key field1 field2:批量获取hash类型key多个field的value值
    // 批量获取
    res6, err := redis.Strings(c
  • 11
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言中,可以使用第三方包来操作Redis数据库。一个常用的包是go-redis,它提供了丰富的功能和易于使用的API。 首先,你需要安装go-redis包。可以使用以下命令来进行安装: ``` go get github.com/go-redis/redis/v8 ``` 接下来,你需要导入所需的包: ```go import ( "github.com/go-redis/redis/v8" "context" ) ``` 然后,你可以创建一个Redis客户端: ```go func main() { // 创建一个Redis客户端 rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", // Redis服务器地址和端口 Password: "", // 密码(如果有的话) DB: 0, // 使用的数据库 }) // 建立连接 err := rdb.Ping(context.Background()).Err() if err != nil { panic(err) } fmt.Println("成功连接到Redis数据库!") } ``` 现在,你已经成功连接到Redis数据库了。接下来,我们可以使用一些常见的操作来演示一下,例如设置和获取键值对: ```go func main() { // 创建一个Redis客户端... // 设置键值对 err := rdb.Set(context.Background(), "key", "value", 0).Err() if err != nil { panic(err) } // 获取键的值 val, err := rdb.Get(context.Background(), "key").Result() if err != nil { panic(err) } fmt.Println("key的值为:", val) } ``` 以上示例展示了如何使用go-redis包来设置和获取键值对。你还可以使用其他操作,如删除键、检查键是否存在、设置过期时间等。具体的用法可以参考go-redis的文档。 希望以上示例对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值