go简单操作redis

前言

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

安装包的下载

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


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

启动redis服务

这个上一篇说过,这次把截图附上
go简单操作redis_第1张图片
go简单操作redis_第2张图片
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)
}

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()	// 记得关闭连接
}

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

大的来了

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
}

我的结果
go简单操作redis_第3张图片

你可能感兴趣的:(redis,golang,缓存)