Redis requires the user to send a count if `WITHVALUES` is specified,
otherwise it sees the `WITHVALUES` argument as the count and will error
out that it's not a number.
We can also return false if the key doesn't exist.
* Adds `GETEX` to the README.md documentation.
* Allow the user to send `PERSIST` either as an array key or just in the
array, to conform with similar methods.
* Implement getEx for `RedisCluster`
Fixes#2512
We actually had two different bits of logic to handle EXPIRY values in
the `SET` command. One for the legacy `SET` -> `SETEX` mapping and
another for the newer `SET foo bar EX <expiry>`.
Additionally the error message could be confusing. Passing 3.1415 for
an `EX` expiry would fail as we didn't allow floats.
This commit consolidates expiry parsing to our existing helper function
as well as improves the `php_error_docref` warning in the event that the
user passes invalid data. The warning will now tell the user the type
they tried to pass as an EXPIRY to make it easier to track down what's
going wrong.
Fixes#2448
* Use the pattern Redis provides us not the channel, if this is
a wildcard based `PSUBSCRIBE` payload.
* Don't test whether our slots match in `SSUBSCRIBE` when not in cluster
mode.
Fixes#2395
* Use our `redis_cmd_append_sstr_key_*` and `redis_cmd_append_sstr_zval`
wrappers, which handle key prefixing and serialization transparently.
* Rework ZADD so it can handle the bulk double response from the `INCR`
options.
Rework argument parsing for `ZRANGE` so we can pass either a string or
an integer so everything will work even when using strict types.
Additionally update our docs to use the correct mechanism for adding
the `BYSCORE` option.
Fixes#2291
* Use our common command handler logic for SELECT.
* Shift updating `redis_sock->dbNumber` from the command itself to the
reply handler, so we aren't erroneously pointing to a non-existent
database before the command succeeds.
* Implement `ZDIFF`, `ZINTER`, `ZUNION`, `ZMSCORE`, and
`ZRANDMEMBER` for `RedisCluster`.
* Refactor `ZUNIONSTORE` command and switch to using our centralized
zset option parsing handler.
See #1894
- Finish adding docblocks with examples for all of the stream commands.
- Fix XAUTOCLAIM response handler (the reply has a slightly different
structure to XCLAIM.