golang--连接redis数据库并进行增删查改

时间:2022-07-23
本文章向大家介绍golang--连接redis数据库并进行增删查改,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

(1)安装第三方开源的redis库;

(2)在使用redis之前,需要安装第三方库,在GOPATH路径下执行安装指令--GOPATH:go get github.com/garyburd/redigo/redis;

注意:在安装redis之前,需要确保已经安装和配置了Git,因为是从github上面下载安装redis库的,需要使用到Git。

go操作redis中的string:

package main

import (
    "fmt"

    "github.com/garyburd/redigo/redis"
)

func main() {
    //连接到redis
    conn, err := redis.Dial("tcp", "127.0.0.1:6379")
    if err != nil {
        fmt.Println("连接错误,err=", err)
        return
    }
    defer conn.Close()
    //向redis写入数据
    _, err1 := conn.Do("Set", "name", "gong")
    if err1 != nil {
        fmt.Println("set err=", err1)
        return
    }
    //向redis读取数据,返回的r是个空接口
    r, err2 := redis.String(conn.Do("Get", "name"))
    if err2 != nil {
        fmt.Println("get err=", err2)
    }
    fmt.Println("操作set")
    fmt.Println("操作get r=", r)
}

go操作redis中的Hash:

package main

import (
    "fmt"

    "github.com/garyburd/redigo/redis"
)

func main() {
    //连接到redis
    conn, err := redis.Dial("tcp", "127.0.0.1:6379")
    if err != nil {
        fmt.Println("连接错误,err=", err)
        return
    }
    defer conn.Close()
    //向redis写入数据
    _, err1 := conn.Do("HSet", "user1", "name", "gong")
    if err1 != nil {
        fmt.Println("HSet err=", err1)
        return
    }

    _, err3 := conn.Do("HSet", "user1", "age", "20")
    if err3 != nil {
        fmt.Println("HSet err=", err3)
        return
    }
    //向redis读取数据,返回的r是个空接口
    r, err2 := redis.String(conn.Do("HGet", "user1", "name"))
    if err2 != nil {
        fmt.Println("HGet err=", err2)
    }
    fmt.Println("操作HSet")
    fmt.Println("操作HGet r=", r)
}

假设想操作多个hash,则

package main

import (
    "fmt"

    "github.com/garyburd/redigo/redis"
)

func main() {
    //连接到redis
    conn, err := redis.Dial("tcp", "127.0.0.1:6379")
    if err != nil {
        fmt.Println("连接错误,err=", err)
        return
    }
    defer conn.Close()
    //向redis写入数据
    _, err1 := conn.Do("HMSet", "user1", "name", "beijing", "address", "beijing")
    if err1 != nil {
        fmt.Println("HMSet err=", err1)
        return
    }
    _, err3 := conn.Do("HMSet", "user2", "name", "wuhan", "address", "wuhan")
    if err3 != nil {
        fmt.Println("HMSet err=", err3)
        return
    }

    //向redis读取数据,返回的r是个空接口
    r, err2 := redis.Strings(conn.Do("HMGet", "user1", "name", "address"))
    if err2 != nil {
        fmt.Println("HMGet err=", err2)
        return
    }
    for i, v := range r {
        fmt.Printf("r[%d]=%vn", i, v)
    }
}

给数据设置有效时间:

redis.Do("eexpire","name",10)

其它的数据结构基本差不多,就是里面传入的方法的区别。