Skip to main content
Version: 2.8.x(Latest)

Conn Object

If you need to implement long connection operations with Redis (such as publish/subscribe), you can use the Conn method to obtain a connection object from the connection pool, and then use that connection object for operations. It's important to note that when the connection object is no longer in use, it should be explicitly closed by calling the Close method (returned to the connection pool).

warning

Since the Conn is a connection object, be aware that it is subject to connection timeout limits, which relate to server configuration.

Publish/Subscribe

You can implement the publish/subscribe pattern through Redis's Conn.

package main

import (
"fmt"

_ "github.com/gogf/gf/contrib/nosql/redis/v2"

"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gctx"
)

func main() {
var (
ctx = gctx.New()
channel = "channel"
)
conn, _ := g.Redis().Conn(ctx)
defer conn.Close(ctx)
_, err := conn.Subscribe(ctx, channel)
if err != nil {
g.Log().Fatal(ctx, err)
}
for {
msg, err := conn.ReceiveMessage(ctx)
if err != nil {
g.Log().Fatal(ctx, err)
}
fmt.Println(msg.Payload)
}
}

After execution, the program will block and wait to receive data.

Open another terminal and use the redis-cli command to enter the Redis Server to publish a message:

$ redis-cli
127.0.0.1:6379> publish channel test
(integer) 1
127.0.0.1:6379>

The program terminal will then immediately print the data obtained from the Redis Server: