Golang redis使用笔记| 青训营笔记

171 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 15 天

Redis 是一个高性能的键值存储系统,它可以用来作为缓存、队列等数据存储应用的后端。

安装 Redis

首先需要安装 Redis,可以在 Redis 的官网上下载相应的安装包进行安装,也可以使用包管理器进行安装。

安装 Redis Go 客户端

Golang 的 Redis 客户端有很多,其中最常用的是 go-redis 和 redigo。在本文中我们将使用 go-redis。

go get github.com/go-redis/redis

连接 Redis

package main

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

func main() {
	client := redis.NewClient(&redis.Options{
		Addr: "localhost:6379",
	})
	defer client.Close()

	pong, err := client.Ping().Result()
	fmt.Println(pong, err)
}

在上面的代码中,我们创建了一个 Redis 客户端实例,并连接到本地 Redis 服务器。使用 Ping() 方法可以检查是否连接成功。

设置和获取键值对

package main

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

func main() {
	client := redis.NewClient(&redis.Options{
		Addr: "localhost:6379",
	})
	defer client.Close()

	err := client.Set("key", "value", 0).Err()
	if err != nil {
		panic(err)
	}

	val, err := client.Get("key").Result()
	if err != nil {
		panic(err)
	}
	fmt.Println("key", val)
}

在上面的代码中,我们使用 Set() 方法设置了一个键值对,键为 "key",值为 "value",并且设置了过期时间为 0(即不过期)。然后使用 Get() 方法获取键为 "key" 的值,并打印输出。

删除键值对

package main

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

func main() {
	client := redis.NewClient(&redis.Options{
		Addr: "localhost:6379",
	})
	defer client.Close()

	err := client.Del("key").Err()
	if err != nil {
		panic(err)
	}
	fmt.Println("key deleted")
}

在上面的代码中,我们使用 Del() 方法删除键为 "key" 的键值对。

批量操作

package main

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

func main() {
	client := redis.NewClient(&redis.Options{
		Addr: "localhost:6379",
	})
	defer client.Close()

	pipe := client.Pipeline()
	pipe.Incr("counter")
	pipe.Expire("counter", 0)
	_, err := pipe.Exec()
	if err != nil {
		panic(err)
	}

	val, err := client.Get("counter").Result()
	if err != nil {
		panic(err)
	}
	fmt.Println("counter", val)
}

在上面的代码中,我们使用 Redis 的管道(Pipeline)实现批量操作。使用 Incr() 方法增加计数器的值,使用 Expire() 方法设置计数器的过期时间为 0(即不过期),然后使用 Exec() 方法执行管道中的所有命令。最后使用 Get() 方法获取计数器的值,并打印输出。

发布和订阅

Redis 还支持发布和订阅功能,可以用于实现消息队列等应用场景。下面是一个简单的发布和订阅的例子。

package main

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

func main() {
	client := redis.NewClient(&redis.Options{
		Addr: "localhost:6379",
	})
	defer client.Close()

	pubsub := client.Subscribe("mychannel")
	defer pubsub.Close()

	// 发布消息
	err := client.Publish("mychannel", "hello world").Err()
	if err != nil {
		panic(err)
	}

	// 订阅消息
	msg, err := pubsub.ReceiveMessage()
	if err != nil {
		panic(err)
	}
	fmt.Println(msg.Channel, msg.Payload)
}

在上面的代码中,我们使用 Subscribe() 方法订阅了一个名为 "mychannel" 的频道。使用 Publish() 方法发布了一条消息,消息内容为 "hello world"。然后使用 ReceiveMessage() 方法接收消息,并打印输出。

以上就是关于使用 Golang 访问 Redis 的一些笔记。需要注意的是,在实际使用中还需要考虑 Redis 的性能、并发、持久化等问题。