---------
Release Date: 2022-03-20
* Features:
* Added type hints to all redis commands
* Added support for experimental runtime type checking
* Updated APIs upto redis 6.2.0
* Added experimental features for redis 7.0.0
* New APIs:
* Generic:
* ``Redis.copy``
* ``Redis.migrate``
* String:
* ``Redis.lcs``
* List:
* ``Redis.blmpop``
* ``Redis.lmpop``
* Set:
* ``Redis.sintercard``
* Sorted-Set:
* ``Redis.bzmpop``
* ``Redis.zintercard``
* ``Redis.zmpop``
* Scripting:
* ``Redis.eval_ro``
* ``Redis.evalsha_ro``
* ``Redis.script_debug``
* Stream:
* ``Redis.xautoclaim``
* ``Redis.xgroup_createconsumer``
* ``Redis.xgroup_delconsumer``
* ``Redis.xgroup_setid``
* Server:
* ``Redis.acl_cat``
* ``Redis.acl_deluser``
* ``Redis.acl_dryrun``
* ``Redis.acl_genpass``
* ``Redis.acl_getuser``
* ``Redis.acl_list``
* ``Redis.acl_load``
* ``Redis.acl_log``
* ``Redis.acl_save``
* ``Redis.acl_setuser``
* ``Redis.acl_users``
* ``Redis.acl_whoami``
* ``Redis.command``
* ``Redis.command_count``
* ``Redis.command_getkeys``
* ``Redis.command_info``
* ``Redis.failover``
* ``Redis.latency_doctor``
* ``Redis.latency_graph``
* ``Redis.latency_history``
* ``Redis.latency_latest``
* ``Redis.latency_reset``
* ``Redis.memory_doctor``
* ``Redis.memory_malloc_stats``
* ``Redis.memory_purge``
* ``Redis.memory_stats``
* ``Redis.memory_usage``
* ``Redis.replicaof``
* ``Redis.swapdb``
* Connection:
* ``Redis.auth``
* ``Redis.client_caching``
* ``Redis.client_getredir``
* ``Redis.client_id``
* ``Redis.client_info``
* ``Redis.client_reply``
* ``Redis.client_tracking``
* ``Redis.client_trackinginfo``
* ``Redis.client_unblock``
* ``Redis.client_unpause``
* ``Redis.hello``
* ``Redis.reset``
* ``Redis.select``
* Cluster:
* ``Redis.asking``
* ``Redis.cluster_bumpepoch``
* ``Redis.cluster_flushslots``
* ``Redis.cluster_getkeysinslot``
* Breaking changes:
* Most redis command API arguments and return types have been
refactored to be in sync with the official docs.
* Updated all commands accepting multiple values for an argument
to use positional var args **only** if the argument is optional.
For all other cases, use a positional argument accepting an
``Iterable``. Affected methods:
* ``bitop`` -> ``*keys`` -> ``keys: Iterable[KeyT]``
* ``delete`` -> ``*keys`` -> ``keys: Iterable[KeyT]``
* ``exists`` -> ``*keys`` -> ``keys: Iterable[KeyT]``
* ``touch`` -> ``*keys`` -> ``keys: Iterable[KeyT]``
* ``unlink`` -> ``*keys`` -> ``keys: Iterable[KeyT]``
* ``blpop`` -> ``*keys`` -> ``keys: Iterable[KeyT]``
* ``brpop`` -> ``*keys`` -> ``keys: Iterable[KeyT]``
* ``lpush`` -> ``*elements`` -> ``elements: Iterable[ValueT]``
* ``lpushx`` -> ``*elements`` -> ``elements: Iterable[ValueT]``
* ``rpush`` -> ``*elements`` -> ``elements: Iterable[ValueT]``
* ``rpushx`` -> ``*elements`` -> ``elements: Iterable[ValueT]``
* ``mget`` -> ``*keys`` -> ``keys: Iterable[KeyT]``
* ``sadd`` -> ``*members`` -> ``members: Iterable[ValueT]``
* ``sdiff`` -> ``*keys`` -> ``keys: Iterable[KeyT]``
* ``sdiffstore`` -> ``*keys`` -> ``keys: Iterable[KeyT]``
* ``sinter`` -> ``*keys`` -> ``keys: Iterable[KeyT]``
* ``sinterstore`` -> ``*keys`` -> ``keys: Iterable[KeyT]``
* ``smismember`` -> ``*members`` -> ``members: Iterable[ValueT]``
* ``srem`` -> ``*members` -> ``members: Iterable[ValueT]``
* ``sunion`` -> ``*keys`` -> ``keys: Iterable[KeyT]``
* ``sunionstore`` -> ``*keys`` -> ``keys: Iterable[KeyT]``
* ``geohash`` -> ``*members`` -> ``members: Iterable[ValueT]``
* ``hdel`` -> ``*fields`` -> ``fields: Iterable[ValueT]``
* ``hmet`` -> ``*fields`` -> ``fields: Iterable[ValueT]``
* ``pfcount`` -> ``*keys`` -> ``keys: Iterable[KeyT]``
* ``pfmerge`` -> ``*sourcekeys`` -> ``sourcekeys: Iterable[KeyT]``
* ``zdiff`` -> ``*keys`` -> ``keys: Iterable[KeyT]``
* ``zdiffstore`` -> ``*keys`` -> ``keys: Iterable[KeyT]``
* ``zinter`` -> ``*keys`` -> ``keys: Iterable[KeyT]``
* ``zinterstore`` -> ``*keys`` -> ``keys: Iterable[KeyT]``
* ``zmscore`` -> ``*members`` -> ``members: Iterable[ValueT]``
* ``zrem`` -> ``*members`` -> ``members: Iterable[ValueT]``
* ``zunion`` -> ``*keys`` -> ``keys: Iterable[KeyT]``
* ``zunionstore`` -> ``*keys`` -> ``keys: Iterable[KeyT]``
* ``xack`` -> ``*identifiers`` -> ``identifiers: Iterable[ValueT]``
* ``xdel`` -> ``*identifiers`` -> ``identifiers: Iterable[ValueT]``
* ``xclaim`` -> ``*identifiers`` -> ``identifiers: Iterable[ValueT]``
* ``script_exists`` -> ``*sha1s`` - > ``sha1s: Iterable[ValueT]``
* ``client_tracking`` -> ``*prefixes`` - > ``prefixes: Iterable[ValueT]``
* ``info`` -> ``*sections`` - > ``sections: Iterable[ValueT]``