当前位置:   article > 正文

go简单操作redis_go redis

go redis

前言

  在很多的教程里,例如菜鸟教程,都列举了java,PHP操作redis的教程,没有go的,但是还是有很多大佬把自己的经验分享了,就很nice,我也来说说我的感悟以及见解,我的代码就是跟着大佬敲得,有部分细节分享,其实都差不多
  大佬地址:https://blog.csdn.net/lena7/article/details/120828397
  • 1
  • 2

安装包的下载

go get -u github.com/go-redis/redis
 go get -u github.com/garyburd/redigo/redis


  • 1
  • 2
  • 3
  • 4

这两种都可以,一般引用第一个,go get不用多说了吧

启动redis服务

这个上一篇说过,这次把截图附上

在这里插入图片描述
monitor命令是监听的意思,可以帮我们看看go操作redis的记录,便于我们理解

go连接redis

import (
    "fmt"
    "github.com/go-redis/redis"
)

func ConnRedis() {
    rd := redis.NewClient(&redis.Options{
        Addr: "127.0.0.1:6379", // url
        Password: "123456",
        DB:0,   // 0号数据库
    })
    result, err := rd.Ping().Result()
    if err != nil {
        fmt.Println("ping err :",err)
        return
    }
    fmt.Println(result)
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

123456是我自己的密码,大家改成自己的就行
结果如下
在这里插入图片描述
提醒一下,如果运行不了,报出runtime.main_main·f: function main is undeclared in the main package
,你把ConnRedis() 改为main()就行了,我这里便于后面区分

redis的简单操作

主要就是set以及get操作,大佬原文写的很详细,我就不唠嗑了

var rd  *redis.Client= redis.NewClient(&redis.Options{
    Addr: "127.0.0.1:6379", // url
    Password: "123456",
    DB:0,   // 数据库
})

// string操作
func SetAndGet() {
    // set操作:第三个参数是过期时间,如果是0表示不会过期。
    err := rd.Set("k1", "v1",0).Err()
    if err != nil {
        fmt.Println("set err :",err)
        return
    }
    // get操作
    val,err := rd.Get("k1").Result()
    if err != nil {
        fmt.Println("get err :",err)
        return
    }
    fmt.Println("k1 ==",val)    // k1 == v1
    rd.Close()	// 记得关闭连接
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

我的结果
在这里插入图片描述

大的来了

package go_redis

import (
	"fmt"
	"github.com/go-redis/redis"
)

// 连接
func ConnRedis2() {
	rd := redis.NewClient(&redis.Options{
		Addr:     "127.0.0.1:6379", // url
		Password: "123456",
		DB:       0, // 数据库
	})
	result, err := rd.Ping().Result()
	if err != nil {
		fmt.Println("ping err :", err)
		return
	}
	fmt.Println(result)
}

// 全局变量:连接数据库
var rd *redis.Client = redis.NewClient(&redis.Options{
	Addr:     "127.0.0.1:6379", // url
	Password: "123456",
	DB:       0, // 数据库
})

// string操作
func SetAndGet() {
	// set操作:第三个参数是过期时间,如果是0表示不会过期。
	err := rd.Set("k1", "v1", 0).Err()
	if err != nil {
		fmt.Println("set err :", err)
		return
	}
	// get操作
	val, err := rd.Get("k1").Result()
	if err != nil {
		fmt.Println("get err :", err)
		return
	}
	fmt.Println("k1 ==", val) // k1 == v1
	// get获取一个不存在的key,err会返回redis.Nil,因此要注意判断err
	val2, err := rd.Get("k2").Result()
	if err == redis.Nil {
		fmt.Println("k2 does not exist") // k2 does not exist
	} else if err != nil {
		panic(err)
	} else {
		fmt.Println("k2", val2)
	}
	rd.Close()
}

// set操作
func Set() {
	defer rd.Close()
	// 添加元素
	rd.SAdd("key", "v1", "v2", "v3")
	// 取出全部元素
	members := rd.SMembers("key")
	for _, value := range members.Val() {
		fmt.Printf("%s\t", value) // v2	v1	v3
	}
	fmt.Println()
	// 删除某个元素
	rd.SRem("key", "v2")
	// 判断某个元素是否存在
	fmt.Println(rd.SIsMember("key", "v2").Val()) // false
	// 获取当前set集合的长度
	fmt.Println(rd.SCard("key")) // scard key: 2
}

  • 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
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75

我的结果
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/813700
推荐阅读
相关标签
  

闽ICP备14008679号