go学习part21 Redis和Go(2)

 1.三方库安装

309_尚硅谷_Go连接到Redis_哔哩哔哩_bilibili

借鉴:

 Golang 安装 Redis_go fiber 安装redis_柒柒伍贰玖。的博客-CSDN博客

 三方redis库已经迁移到以下网址,go get github.com/gomodule/redigo/redis

gomodule/redigo: Go client for Redis (github.com)

注意下载的文件是在GOPATH/src下面,而不是在GOPATH下。

2.连接redis,Get/Set操作String

1)连接

必须提前控制台运行redis

package main

import (
	"fmt"

	"github.com/gomodule/redigo/redis" //"github.com/garyburd/redigo/redis" //弃用
)

func main() {
	//通过go向redis写入和读取数据
	//1.链接redis(协议,发送ip:端口)
	conn, err := redis.Dial("tcp", "localhost:6379")
	if err != nil {
		fmt.Println("redis.Dial err=", err)
		return
	}
	fmt.Println("连接成功", conn)
	defer conn.Close()
}

 输出套接字

tips:redis.Dial err= dial tcp [::1]:6379: connectex: No connection could be made because the target machine actively refused it.

多半是因为没有提前打开redis。

想要链接redis,必须提前运行redis

Could not connect to redis connection refused - Fix it easily (bobcares.com)

2)Set

	//2.通过go向redis写入数据 string [key,val]
	_, err = conn.Do("Set", "name", "tom猫")
	if err != nil {
		fmt.Println("Set err=", err)
		return
	}
	fmt.Println("set成功")

3)Get

package main

import (
	"fmt"

	"github.com/gomodule/redigo/redis" //"github.com/garyburd/redigo/redis" //弃用
)

func main() {
	//通过go向redis写入和读取数据
	//1.链接redis(协议,发送ip:端口)
	conn, err := redis.Dial("tcp", "localhost:6379")
	if err != nil {
		fmt.Println("redis.Dial err=", err)
		return
	}
	fmt.Println("连接成功", conn)
	defer conn.Close()

	//2.通过go向redis写入数据 string [key,val]
	_, err = conn.Do("Set", "name", "tom猫")
	if err != nil {
		fmt.Println("Set err=", err)
		return
	}
	fmt.Println("set成功")

	//3.通过go向redis读取数据 string [key,val]
	r, err := redis.String(conn.Do("Get", "name"))
	if err != nil {
		fmt.Println("Get err=", err)
		return
	}
	//返回r是interface{}类型,需要断言string
	//nameString := r.(string)//这样不好,用内置方法redis.String
	fmt.Println("get成功 r =", r)
}

3.操作hash

基本就是把上面的string操作, 换一个指令

 1)单个hget/hset

package main

import (
	"fmt"

	"github.com/gomodule/redigo/redis" //"github.com/garyburd/redigo/redis" //弃用
)

func main() {
	//通过go向redis写入和读取数据
	//1.链接redis(协议,发送ip:端口)
	conn, err := redis.Dial("tcp", "localhost:6379")
	if err != nil {
		fmt.Println("redis.Dial err=", err)
		return
	}
	fmt.Println("连接成功", conn)
	defer conn.Close()

	//2.通过go向redis写入数据 string [key,val]
	_, err = conn.Do("HSet", "user01", "name", "john")
	if err != nil {
		fmt.Println("hSet err=", err)
		return
	}
	_, err = conn.Do("HSet", "user01", "age", 18)
	if err != nil {
		fmt.Println("hSet err=", err)
		return
	}
	fmt.Println("hset成功")

	//3.通过go向redis读取数据 string [key,val]
	r1, err := redis.String(conn.Do("HGet", "user01", "name"))
	if err != nil {
		fmt.Println("hGet err=", err)
		return
	}
	r2, err := redis.String(conn.Do("HGet", "user01", "age"))
	if err != nil {
		fmt.Println("hGet err=", err)
		return
	}
	//返回r是interface{}类型,需要断言string
	//nameString := r.(string)//这样不好,用内置方法redis.String
	fmt.Println("hget成功 r1 =", r1, " r2 =", r2)
}

2)批量hmget/hmset

package main

import (
	"fmt"

	"github.com/gomodule/redigo/redis" //"github.com/garyburd/redigo/redis" //弃用
)

/*批量hash*/
func main() {
	//通过go向redis写入和读取数据
	//1.链接redis(协议,发送ip:端口)
	conn, err := redis.Dial("tcp", "localhost:6379")
	if err != nil {
		fmt.Println("redis.Dial err=", err)
		return
	}
	fmt.Println("连接成功", conn)
	defer conn.Close()

	//2.通过go向redis写入数据 string [key,val]
	_, err = conn.Do("HMSet", "user02", "name", "john", "age", 19)
	if err != nil {
		fmt.Println("hSet err=", err)
		return
	}
	fmt.Println("hset成功")

	//3.通过go向redis读取数据 string [key,val]
	//取一个用户的多个属性
	r, err := redis.Strings(conn.Do("HMGet", "user02", "name", "age"))
	if err != nil {
		fmt.Println("hGet err=", err)
		return
	}
	fmt.Println(r) // 切片
	for i, k := range r {
		fmt.Printf("r[%v]=%v \n", i, k)
	}

}

3)给数据设置有效时间

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Go语言中,可以使用第三方包来操作Redis数据库。一个常用的包是go-redis,它提供了丰富的功能和易于使用的API。 首先,你需要安装go-redis包。可以使用以下命令来进行安装: ``` go get github.com/go-redis/redis/v8 ``` 接下来,你需要导入所需的包: ```go import ( "github.com/go-redis/redis/v8" "context" ) ``` 然后,你可以创建一个Redis客户端: ```go func main() { // 创建一个Redis客户端 rdb := redis.NewClient(&redis.Options{ Addr: "localhost:6379", // Redis服务器地址和端口 Password: "", // 密码(如果有的话) DB: 0, // 使用的数据库 }) // 建立连接 err := rdb.Ping(context.Background()).Err() if err != nil { panic(err) } fmt.Println("成功连接到Redis数据库!") } ``` 现在,你已经成功连接到Redis数据库了。接下来,我们可以使用一些常见的操作来演示一下,例如设置和获取键值对: ```go func main() { // 创建一个Redis客户端... // 设置键值对 err := rdb.Set(context.Background(), "key", "value", 0).Err() if err != nil { panic(err) } // 获取键的值 val, err := rdb.Get(context.Background(), "key").Result() if err != nil { panic(err) } fmt.Println("key的值为:", val) } ``` 以上示例展示了如何使用go-redis包来设置和获取键值对。你还可以使用其他操作,如删除键、检查键是否存在、设置过期时间等。具体的用法可以参考go-redis的文档。 希望以上示例对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值