golang中使用redis

本文介绍了如何在Go语言中使用redigo库连接和操作Redis。内容包括连接Redis、写入(支持设置过期时间)、读取、删除数据、读写JSON以及进行列表操作。提供了相关代码示例和GitHub资源链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

获取redis

g

o get github.com/garyburd/redigo/redis

1、连接redis

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

func main() {
    c, err := redis.Dial("tcp", "127.0.0.1:6379")
    if err != nil {
        fmt.Println("Connect to redis error", err)
        return
    }
    defer c.Close()
}

2、写入

func saveToDB(c redis.Conn) {
    _, err := c.Do("SET", "name", "cjq", "EX", "60")
    if err != nil {
        fmt.Println("redis set failed:", err)
    } else {
        fmt.Println("save success")
    }
}

批量写入 

_, err := c.Do("MSET", "name", "cjq", "SEX", "M", "EX", "70")
    if err != nil {
        fmt.Println("redis set failed:", err)
    } else {
        fmt.Println("save success")
    }


tips:EX是这个值的过期时间

这里写入的值永远不会过期

package main

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

func main() {
    c, err := redis.Dial("tcp", "127.0.0.1:6379")
    if err != nil {
        fmt.Println("Connect to redis error", err)
        return
    }
    defer c.Close()

    _, err = c.Do("SET", "mykey", "laolao")
    if err != nil {
        fmt.Println("redis set failed:", err)
    }

    username, err := redis.String(c.Do("GET", "mykey"))
    if err != nil {
        fmt.Println("redis get failed:", err)
    } else {
        fmt.Printf("Get mykey: %v \n", username)
    }
}

3、读取

func readFromDB(c redis.Conn) {
    username, err := redis.String(c.Do("GET", "name"))
    if err != nil {
        fmt.Println("redis get failed:", err)
    } else {
        fmt.Printf("Get mykey: %v \n", username)
    }

}

批量读取

func readFromDB(c redis.Conn) {
    username, err := redis.Strings(c.Do("MGET", "SEX", "name"))
    if err != nil {
        fmt.Println("redis get failed:", err)
    } else {
        fmt.Printf("Get mykey: %v \n", username)
    }

}

4、删除

func delFromDB(c redis.Conn) {
    _, err := c.Do("DEL", "name", "SEX")
    if err != nil {
        fmt.Println("redis delete failed:", err)
    } else {
        fmt.Println("delete success")
    }
}

5、读写json到redis

//写json
func saveJsonDataToDB(c redis.Conn) {
    imap := map[string]string{"name": "laote", "phone": "13912345678"}
    value, _ := json.Marshal(imap)
    n, err := c.Do("SETNX", "jsonkey", value)
    if err != nil {
        fmt.Println(err)
    }
    if n == int64(1) {
        fmt.Println("success")
    }
}

//读json
func readJsonFromDB(c redis.Conn) {
    var imapGet map[string]string
    valueGet, err := redis.Bytes(c.Do("GET", "jsonkey"))
    if err != nil {
        fmt.Println(err)
    }

    errShal := json.Unmarshal(valueGet, &imapGet)
    if errShal != nil {
        fmt.Println(err)
    }
    fmt.Println(imapGet["name"])
    fmt.Println(imapGet["phone"])
}

6、列表操作,存入一组数据
//存列表

func saveListToDB(c redis.Conn) {
    _, err := c.Do("lpush", "username", "zhangsan")
    if err != nil {
        fmt.Println("redis set failed:", err)
    }

    _, err = c.Do("lpush", "username", "lisi")
    if err != nil {
        fmt.Println("redis set failed:", err)
    }
    _, err = c.Do("lpush", "username", "wangwu")
    if err != nil {
        fmt.Println("redis set failed:", err)
    }
}

//读列表
func readListFromDB(c redis.Conn) {
    values, _ := redis.Values(c.Do("lrange", "username", "0", "2"))
    fmt.Printf("count%d", len(values))
    for _, v := range values {
        fmt.Println(string(v.([]byte)))
    }
}

 

github地址: 
https://github.com/garyburd/redigo

文档地址: 
http://godoc.org/github.com/garyburd/redigo/redis

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值