Redis
 sql >> Teknologi Basis Data >  >> NoSQL >> Redis

Cara menerima pesan publikasi Redis di Go

Saya yakin kode Anda baik-baik saja; masalahnya adalah Anda memublikasikan pesan sebelum langganan Anda aktif. Misalnya, coba ini, yang menempatkan penerbit Anda ke dalam goroutine yang memublikasikan pesan sekali per detik:

package main

import (
    "fmt"
    "log"
    "time"

    "github.com/gomodule/redigo/redis"
)

func main() {
    fmt.Println("Start redis test.")

    c, err := redis.Dial("tcp", "localhost:6379")
    if err != nil {
        log.Println(err)
    } else {
        log.Println("No error during redis.Dial.")
    }
    // defer c.Close()

    /// Publisher.
    go func() {
        c, err := redis.Dial("tcp", "localhost:6379")
        if err != nil {
            panic(err)
        }

        count := 0
        for {
            c.Do("PUBLISH", "example",
                fmt.Sprintf("test message %d", count))
            count++
            time.Sleep(1 * time.Second)
        }
    }()
    /// End here

    /// Subscriber.
    psc := redis.PubSubConn{Conn: c}
    psc.Subscribe("example")

    for {
        switch v := psc.Receive().(type) {
        case redis.Message:
            fmt.Printf("%s: message: %s\n", v.Channel, v.Data)
        case redis.Subscription:
            fmt.Printf("%s: %s %d\n", v.Channel, v.Kind, v.Count)
        case error:
            fmt.Println(v)
        }

        time.Sleep(1)
    }
    /// End here

}

Jalankan ini dan Anda akan melihat bahwa pelanggan Anda menerima pesan sekali per detik, menghasilkan output seperti:

Start redis test.
2021/08/18 19:01:29 No error during redis.Dial.
example: subscribe 1
example: message: test message 0
example: message: test message 1
example: message: test message 2
example: message: test message 3
example: message: test message 4
example: message: test message 5



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana cara menyebarkan pekerja resque dalam produksi?

  2. Rancang tabel database Redis seperti SQL?

  3. Area Notifikasi dan Berita dengan menggunakan Redis

  4. Redis pub/sub di rel

  5. Server redis tidak dapat menjalankan lebih dari 1024M maxheap