zoukankan      html  css  js  c++  java
  • 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]=%v
    ", i, v)
        }
    }

    给数据设置有效时间:

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

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

  • 相关阅读:
    心跳机制
    C++虚继承和虚基类
    STL,ATL与WTL
    C# Task的暂停与终止
    C#继承
    C#线程同步问题
    CourtAi发布配置文件修改说明
    阿里云虚拟主机https化步骤第一篇,申请证书(笔记)
    linux 服务器重启指令
    .net core 发布到iis问题 HTTP Error 500.30
  • 原文地址:https://www.cnblogs.com/xiximayou/p/11978875.html
Copyright © 2011-2022 走看看