navigaid
3/27/2019 - 8:38 AM

redis-keyspace-notification.go

package main

import (
	"fmt"
	//"github.com/gomodule/redigo/redis"
	"github.com/garyburd/redigo/redis"
)

func main() {
	conn, err := redis.Dial("tcp", ":6379")
	if err != nil {
		fmt.Println(err)
		return
	}
	psc := redis.PubSubConn{Conn: conn}
	//psc.PSubscribe("__key*__:expired")
	psc.PSubscribe("__keyevent@0__:expired")
	for {
		switch msg := psc.Receive().(type) {
		case redis.Message:
			fmt.Printf("Message: %s %s\n", msg.Channel, msg.Data)
		case redis.PMessage:
			fmt.Printf("PMessage: %s %s %s\n", msg.Pattern, msg.Channel, msg.Data)
		case redis.Subscription:
			fmt.Printf("Subscription: %s %s %d\n", msg.Kind, msg.Channel, msg.Count)
			if msg.Count == 0 {
				return
			}
		case error:
			fmt.Printf("error: %v\n", msg)
			return
		}
	}
}