The use of `+` and `-` in XRANGE seems inconsistent. Why not use `0` and `-1` like LRANGE?
Because they do not mean a position, but a special ID.
I would humbly suggest that "^" would be a suitable symbol for the first message in a stream. ^ and $ are used in regex (and vim) in a similar way.
That way you could write "XREAD BLOCK 5000 STREAMS newstream ^" and get all the messages in a stream from the beginning, and then block until a new message comes in all with a single command. You would still be able to add a count if needed, to prevent client flooding.