Redis
 sql >> डेटाबेस >  >> NoSQL >> Redis

Go . में Redis पब्लिश मैसेज कैसे प्राप्त करें

मुझे विश्वास है कि आपका कोड ठीक है; समस्या यह है कि आप अपनी सदस्यता के सक्रिय होने से पहले एक संदेश प्रकाशित कर रहे हैं। उदाहरण के लिए, यह प्रयास करें, जो आपके प्रकाशक को एक ऐसे गोरोइन में डालता है जो प्रति सेकंड एक बार एक संदेश प्रकाशित करता है:

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

}

इसे चलाएँ और आप देखेंगे कि आपके सब्सक्राइबर को एक बार एक संदेश प्राप्त होता है, जैसे आउटपुट:

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. मैं किसी भी एमक्यू प्लेटफॉर्म में इस एकल समवर्ती वितरित कतार को कैसे कार्यान्वित कर सकता हूं?

  2. प्रहरी सी # से रेडिस मास्टर पता प्राप्त करना

  3. स्प्रिंगबूट Elasticache JedisMovedDataException:MOVED

  4. अधिकतम प्रयास अपवाद कतार से आगे निकल गए

  5. डॉकर [इरनो 111] कनेक्ट कॉल विफल ('127.0.0.1', 6379)