Redis
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> Redis

Cách nhận thông báo xuất bản của Redis trong Go

Tôi tin rằng mã của bạn là tốt; vấn đề là bạn đang xuất bản một tin nhắn trước khi đăng ký của bạn hoạt động. Ví dụ:hãy thử điều này, điều này sẽ đưa nhà xuất bản của bạn vào một quy trình xuất bản một thông báo mỗi giây một lần:

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

}

Chạy điều này và bạn sẽ thấy rằng người đăng ký của bạn nhận được tin nhắn một lần sau mỗi giây, tạo ra đầu ra như:

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. Làm cách nào để lấy khóa từ giá trị trong cặp khóa / giá trị trong ứng dụng khách redis store?

  2. Redis Keyspace Notifications với flushdb

  3. đợi tất cả lời hứa kết thúc trong nodejs với bluebird

  4. Quét các chuỗi bằng cách sử dụng nodejs trong redis

  5. Làm cách nào để tôi có thể duyệt / xem các giá trị được lưu trữ trong Redis