redis - skynocover/Wiki-for-GoLang GitHub Wiki

Redis

"github.com/go-redis/redis"

get set

Rdb = redis.NewClient(&redis.Options{
	Addr:     fmt.Sprintf("%s:%s", globals.Config.Redis[globals.Env].Host, globals.Config.Redis[globals.Env].Port),
	Password: "", // no password set
	DB:       0,  // use default DB
})

// Set
var contex = context.Background(
Rdb.Set(contex, key, value, 0).Err()

// Get value of key
var get, _ = database.Rdb.Get(contex, key).Result()

// Get keys
val, err := database.Rdb.Keys(contex, find).Result()
if err != nil {
	log.Println("redis get fail", err)
}

pub & sub

pub

package main

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

func main() {
	client := redis.NewClient(&redis.Options{
		Addr:     "192.168.99.95:6379",
		Password: "",
		DB:       0,
	})
	n, err := client.Publish("cha", "hello").Result()
	if err != nil {
		fmt.Printf(err.Error())
		return
	}
	fmt.Printf("%d clients received the message\n", n)
}

sub

package main

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

func main() {
	client := redis.NewClient(&redis.Options{
		Addr:     "192.168.99.95:6379",
		Password: "",
		DB:       0,
	})

	// pubsub := client.Subscribe("chat") //指定
	// defer pubsub.Close()
	// for msg := range pubsub.Channel() {
	// 	fmt.Printf("channel=%s message=%s\n", msg.Channel, msg.Payload)
	// }

	pubsub := client.PSubscribe("*char*") //不定
	defer pubsub.Close()
	for msg := range pubsub.Channel() {
		fmt.Printf("channel=%s message=%s\n", msg.Channel, msg.Payload)
	}
}