Code Monkey home page Code Monkey logo

Comments (4)

chayim avatar chayim commented on July 20, 2024

@dvora-h interesting, for when we work on RESP3

from hiredis-py.

chayim avatar chayim commented on July 20, 2024

@dvora-h What do your redis-py tests show here? Does the PubSub push test in the 5.0 work in this scenario?

from hiredis-py.

chayim avatar chayim commented on July 20, 2024

@stereobutter Can you help me understand why you believe that list is more appropriate here? Given what I read in the specification, I'd have yielded a string, to handle:

Out of band data. The format is like the Array type, but the client should just check the first string element, stating the type of the out of band data, a call a callback if there is one registered for this specific type of push information. Push types are not related to replies, since they are information that the server may push at any time in the connection, so the client should keep reading if it is reading the reply of a command.

I read that as ideally it should be an array, but YMMV since you have to hit up a callback anyway. Again a List seems right.

from hiredis-py.

stereobutter avatar stereobutter commented on July 20, 2024

@chayim I am not sure I understand your question, so please excuse if my response doesn't make sense.

As I understand it the PUSH type in RESP3 was introduced so that clients may use pub/sub on the same connection as regular commands. In RESP2 pubsub messages are array messages and thus a client could not differentiate it from a regular array reply it may be expecting (e.g. after issuing a command like HMGETALL).

In RESP3 the array and push types only differ by the first character (> for push messages and * for arrays) and as such it would make sense to use a similar (but different) type on the python side. I don't see how str would work here as a push type can have an arbitrary number of items? You are correct of course that a client would use the first item of a push message for figuring out what type of push message it is and what callback to trigger.

The spec says

RESP3 push data is represented from the point of view of the protocol exactly
like the Array type. However the first byte is > instead of *, and the
first element of the array is always a String item, representing the kind
of push data the server is sending to the client. All the other fields in the
push array are type dependent, which means that depending on the type string
as first argument, the remaining items will be interpreted following different
conventions.

from hiredis-py.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.