
连接到 Redis 服务器
连接到 Redis 服务器示例,更多配置参数,请参照 redis.Options:
import "github.com/redis/go-redis/v9"
rdb := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Password: "", // 没有密码,默认值
DB: 0, // 默认DB 0
})
同时也支持另外一种常见的连接字符串:
opt, err := redis.ParseURL("redis://<user>:<pass>@localhost:6379/<db>")
if err != nil {
panic(err)
}
rdb := redis.NewClient(opt)
发布/订阅
go-redis 支持发布+订阅消息,当出现网络等异常时,会自动重新连接服务器。
注意:PubSub 会长时间持有连接池的一个网络连接。
发布一条消息:
err := rdb.Publish(ctx, "mychannel1", "payload").Err()
if err != nil {
panic(err)
}
订阅一个 Channel
Subscribe 方法并不会返回错误,如果存在错误,在读取消息时返回,使用完毕后,记得关闭它
pubsub := rdb.Subscribe(ctx, "mychannel1")
// 使用完毕,记得关闭
defer pubsub.Close()
读取消息
for {
msg, err := pubsub.ReceiveMessage(ctx)
if err != nil {
panic(err)
}
fmt.Println(msg.Channel, msg.Payload)
}
- 也可以直接操作
go chan一样读取消息:
ch := pubsub.Channel()
for msg := range ch {
fmt.Println(msg.Channel, msg.Payload)
}
评论区