Fix “WRONGTYPE Operation against a key holding the wrong kind of value” when using ZUNION or ZUNIONSTORE in Redis

If you get an error that reads “WRONGTYPE Operation against a key holding the wrong kind of value” when using the ZUNION or ZUNIONSTORE commands in Redis, it’s because you’re passing a key with the wrong data type.

To fix this issue, make sure the keys you pass to these commands contain either sets or sorted sets. Although these commands are for sorted sets, they also work with non-sorted sets.

Continue reading

Redis ZREVRANGE Replacement

Starting with Redis 6.2.0, the ZRANGE command added the REV, BYSCORE, BYLEX and LIMIT options. The addition of the first three means that the ZRANGE command can now do what the ZREVRANGE, ZRANGEBYSCORE, ZREVRANGEBYSCORE, ZRANGEBYLEX and ZREVRANGEBYLEX commands can do.

As a result, those commands are now deprecated (as of Redis 6.2.0).

Therefore, we should no longer use the ZREVRANGE command when we need to return a sorted set in descending order. Instead, we should use the ZRANGE command with the REV argument.

Continue reading

Redis BZMPOP Command Explained

In Redis, the BZMPOP command is the blocking variant of the ZMPOP command.

The BZMPOP command works exactly like ZMPOP when any of the sorted sets contain elements. It also works exactly like ZMPOP when used inside a MULTI/EXEC block. That is, it pops one or more elements from the first non-empty sorted set in the provided list of keys.

However, if all of the specified sorted sets are empty, then BZMPOP will block the connection until another client adds members to one of the keys or until the specified timeout elapses. It’s possible to block the connection indefinitely by using a timeout of zero.

Continue reading