Support RESP3
See the spec
- New serializations for Python-representable types (null, double, boolean, map, set, big number)
-
False
now has meaning, so we probably need some sort of "need more data" sentinel object (or an exception?)
-
- Blob Error should maybe do the word splitting
- Verbatim string needs to be contained in something that represents both the format and the string
- Attributes are a big question mark, since they could be attached to any other type. Always having to unwrap a number (or something) seems super cumbersome, especially since most commands likely won't have attributes.
- Push type should be pretty straightforward, but it'll need wrapped in something (it also has a type). Maybe we just have one "box" for the simple types that are just "a single value with one minor piece of metadata" (like verbatim string). Or maybe Push type should just have a list (since it's equivalent to an array)
- Streamed strings (chunked encoding)/other aggregates (end-delimited). Should be pretty simple
hiredis has recently added support. Review what they did so that compatibility persists.