Skip to content

Upgrading redis 3 to 4

Breaking3.5.3 → 4.6.0Breaking16Security5Platform2Deprecated2New191Changed24Fixed115Other190

BreakingUpgrade verdict

16 breaking changes and a platform requirement change and 4 security fixes.

  • The t-digest add command no longer accepts a weight argument.
  • Connection error handling now only catches ordinary exceptions, letting system-level exceptions like interrupts propagate.
  • The function that deletes a search index now uses the newer Redis command for that operation.
  • Removes verbose logging from redis-py/redis/cluster.py.
Top 5 of 23 that need code or config changes

Python requirement changed in 4.4.0rc1: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.* → >=3.7.

Breaking16
Removes the weight parameter from TDIGEST.ADD.
TDIGEST.ADD
Catches Exception instead of BaseException in Connection, so BaseException subclasses are no longer swallowed.
Connection
Changes dropindex() to use FT.DROPINDEX instead of FT.DROP.
dropindex()FT.DROPINDEXFT.DROP
Removes verbose logging from redis-py/redis/cluster.py.
redis-py/redis/cluster.py
Renames RedisGraph support functions to match Python naming conventions.
Renames the rootPath argument of JSON.SET to root_path as part of type hint additions.
JSON.SETrootPathroot_path
Removes support for end of life Python 2.7.
All values within Redis URLs are now unquoted via urllib.parse.unquote by default and cannot be disabled.
urllib.parse.unquotefrom_urldecode_components
Fixes max_connections/ssl handling and improves args in async cluster.
max_connectionsssl
Fixes backward compatibility regression from 4.3.2 in Lock.acquire().
Lock.acquire()
Fixes XAUTOCLAIM to return the full response instead of only keys 2 and later.
XAUTOCLAIM
Replaces OSError exceptions from can_read with redis.ConnectionError.
can_readredis.ConnectionError
Updates FUNCTION LOAD changes from release 7.0 rc3 to support Redis 7.0 final.
FUNCTION LOAD
Extends the "CLUSTER NODES" parser to support special slot entries, which may break code relying on specialized slot entries; bytes support added.
CLUSTER NODES
Migrates targeted nodes to keyword arguments in Cluster Mode.
Redis commands moved into a mixin; code importing redis.client to access commands directly should import redis.commands.
redis.clientredis.commands
Security4
Fixes CVE-2023-28859: cancelling an async future does not properly trigger, potentially leaking data in specific cases.
Fixes a potential injection issue by updating the graph parser.
redis-py before 4.5.3, as used in ChatGPT and other products, leaves a connection open after canceling an async Redis command at an inopportune time (in the case of a pipeline operation), and can send response data to the client of an unrelated request in an off-by-one manner. The fixed versions for this CVE Record are 4.3.6, 4.4.3, and 4.5.3; however, CVE-2023-28859 is a separate vulnerability.
Invalid OCSP certificates now raise ConnectionError on failed validation.
ConnectionError
Platform1
Drops Python 3.6 support.
Deprecated2
Deprecates add_doccument (FT.ADD).
add_doccumentFT.ADD
Marks TOPK.COUNT as deprecated.
TOPK.COUNT

Generated by DepDelta from published Python source. Not mixed with prose notes.

  • added: export CredentialProvider
  • added: export OutOfMemoryError
  • added: export RedisCluster
  • added: export Sentinel
  • added: export SentinelConnectionPool
  • added: export SentinelManagedConnection
  • added: export SentinelManagedSSLConnection
  • added: export UsernamePasswordCredentialProvider
  • added: export default_backoff
  • added: export AuthenticationError
  • added: export AuthenticationWrongNumberOfArgsError
  • added: export BlockingConnectionPool
  • added: export BusyLoadingError
  • added: export ChildDeadlockedError
  • added: export CommandsParser
  • added: export Connection
  • added: export ConnectionError
  • added: export ConnectionPool
  • added: export DataError
  • added: export InvalidResponse
  • added: export OutOfMemoryError
  • added: export PubSubError
  • added: export ReadOnlyError
  • added: export Redis
  • added: export RedisCluster
  • added: export RedisError
  • added: export ResponseError
  • added: export SSLConnection
  • added: export Sentinel
  • added: export SentinelConnectionPool
  • added: export SentinelManagedConnection
  • added: export SentinelManagedSSLConnection
  • added: export StrictRedis
  • added: export TimeoutError
  • added: export UnixDomainSocketConnection
  • added: export WatchError
  • added: export default_backoff
  • added: export from_url
  • added: async method Monitor.connect()
  • added: async method Monitor.listen() -> AsyncIterator[MonitorCommandInfo]
  • added: async method Monitor.next_command() -> MonitorCommandInfo
  • added: async method Pipeline.discard()
  • added: async method Pipeline.execute(raise_on_error: bool=…)
  • added: async method Pipeline.immediate_execute_command(*args, **options)
  • added: async method Pipeline.load_scripts()
  • added: async method Pipeline.parse_response(connection: Connection, command_name: Union[str, bytes], **options)
  • added: async method Pipeline.reset()
  • added: async method Pipeline.unwatch()
  • added: async method Pipeline.watch(*names: KeyT)
  • added: async method PubSub.check_health()
  • added: async method PubSub.connect()
  • added: async method PubSub.execute_command(*args: EncodableT)
  • added: async method PubSub.get_message(ignore_subscribe_messages: bool=…, timeout: Optional[float]=…)
  • added: async method PubSub.handle_message(response, ignore_subscribe_messages=…)
  • added: async method PubSub.listen() -> AsyncIterator
  • added: async method PubSub.on_connect(connection: Connection)
  • added: async method PubSub.parse_response(block: bool=…, timeout: float=…)
  • added: async method PubSub.psubscribe(*args: ChannelT, **kwargs: PubSubHandler)
  • added: async method PubSub.reset()
  • added: async method PubSub.run(*, exception_handler: Optional[PSWorkerThreadExcHandlerT]=…, poll_timeout: float=…) -> None
  • added: async method PubSub.subscribe(*args: ChannelT, **kwargs: Callable)
  • added: async method Redis.close(close_connection_pool: Optional[bool]=…) -> None
  • added: async method Redis.execute_command(*args, **options)
  • added: async method Redis.initialize() -> _RedisT
  • added: async method Redis.parse_response(connection: Connection, command_name: Union[str, bytes], **options)
  • added: async method Redis.transaction(func: Callable[[Pipeline], Union[Any, Awaitable[Any]]], *watches: KeyT, shard_hint: Optional[str]=…, value_from_callable: bool=…, watch_delay: Optional[float]=…)
  • added: class AsyncPubsubWorkerExceptionHandler(Protocol)
  • added: class AsyncResponseCallbackProtocol(Protocol)
  • added: class Monitor
  • added: class MonitorCommandInfo(TypedDict)
  • added: class Pipeline(Redis)
  • added: class PubSub
  • added: class PubsubWorkerExceptionHandler(Protocol)
  • added: class Redis(AbstractRedis, AsyncRedisModuleCommands, AsyncCoreCommands, AsyncSentinelCommands)
  • added: class ResponseCallbackProtocol(Protocol)
  • added: constructor Monitor(connection_pool: ConnectionPool)
  • added: constructor Pipeline(connection_pool: ConnectionPool, response_callbacks: MutableMapping[Union[str, bytes], ResponseCallbackT], transaction: bool, shard_hint: Optional[str])
  • added: constructor PubSub(connection_pool: ConnectionPool, shard_hint: Optional[str]=…, ignore_subscribe_messages: bool=…, encoder=…)
  • added: constructor Redis(*, host: str=…, port: int=…, db: Union[str, int]=…, password: Optional[str]=…, socket_timeout: Optional[float]=…, socket_connect_timeout: Optional[float]=…, socket_keepalive: Optional[bool]=…, socket_keepalive_options: Optional[Mapping[int, Union[int, bytes]]]=…, connection_pool: Optional[ConnectionPool]=…, unix_socket_path: Optional[str]=…, encoding: str=…, encoding_errors: str…
  • added: field Monitor.command_re
  • added: field Monitor.monitor_re
  • added: field MonitorCommandInfo.client_address: str
  • added: field MonitorCommandInfo.client_port: str
  • added: field MonitorCommandInfo.client_type: str
  • added: field MonitorCommandInfo.command: str
  • added: field MonitorCommandInfo.db: int
  • added: field MonitorCommandInfo.time: float
  • added: field Pipeline.UNWATCH_COMMANDS
  • added: field PubSub.HEALTH_CHECK_MESSAGE
  • added: field PubSub.PUBLISH_MESSAGE_TYPES
  • added: field PubSub.UNSUBSCRIBE_MESSAGE_TYPES
  • added: field Redis.response_callbacks: MutableMapping[Union[str, bytes], ResponseCallbackT]
  • added: method Pipeline.annotate_exception(exception: Exception, number: int, command: Iterable[object]) -> None
  • added: method Pipeline.execute_command(*args, **kwargs) -> Union[Pipeline, Awaitable[Pipeline]]
  • added: method Pipeline.multi()
  • added: method Pipeline.pipeline_execute_command(*args, **options)
  • added: method Pipeline.raise_first_error(commands: CommandStackT, response: Iterable[Any])
  • added: method PubSub.close() -> Awaitable[NoReturn]
  • added: method PubSub.ping(message=…) -> Awaitable
  • added: method PubSub.punsubscribe(*args: ChannelT) -> Awaitable
  • added: method PubSub.unsubscribe(*args) -> Awaitable
  • added: method Redis.client() -> Redis
  • added: method Redis.get_connection_kwargs()
  • added: method Redis.get_encoder()
  • added: method Redis.get_retry() -> Optional[Retry]
  • added: method Redis.load_external_module(funcname, func)
  • added: method Redis.lock(name: KeyT, timeout: Optional[float]=…, sleep: float=…, blocking: bool=…, blocking_timeout: Optional[float]=…, lock_class: Optional[Type[Lock]]=…, thread_local: bool=…) -> Lock
  • added: method Redis.monitor() -> Monitor
  • added: method Redis.pipeline(transaction: bool=…, shard_hint: Optional[str]=…) -> Pipeline
  • added: method Redis.pubsub(**kwargs) -> PubSub
  • added: method Redis.set_response_callback(command: str, callback: ResponseCallbackT)
  • added: method Redis.set_retry(retry: Retry) -> None
  • added: property PubSub.subscribed
  • added: static method Redis.from_url(url: str, **kwargs)
  • added: variable CommandStackT
  • added: variable CommandT
  • added: variable PSWorkerThreadExcHandlerT
  • added: variable PubSubHandler
  • added: variable ResponseCallbackT
  • added: variable StrictRedis
  • added: async method ClusterNode.disconnect() -> None
  • added: async method ClusterNode.execute_command(*args: Any, **kwargs: Any) -> Any
  • added: async method ClusterNode.execute_pipeline(commands: List[PipelineCommand]) -> bool
  • added: async method ClusterNode.parse_response(connection: Connection, command: str, **kwargs: Any) -> Any
  • added: async method ClusterPipeline.execute(raise_on_error: bool=…, allow_redirections: bool=…) -> List[Any]
  • added: async method ClusterPipeline.initialize() -> ClusterPipeline
  • added: async method NodesManager.close(attr: str=…) -> None
  • added: async method NodesManager.initialize() -> None
  • added: async method RedisCluster.close() -> None
  • added: async method RedisCluster.execute_command(*args: EncodableT, **kwargs: Any) -> Any
  • added: async method RedisCluster.initialize() -> RedisCluster
  • added: async method RedisCluster.on_connect(connection: Connection) -> None
  • added: class ClusterNode
  • added: class ClusterParser(DefaultParser)
  • added: class ClusterPipeline(AbstractRedis, AbstractRedisCluster, AsyncRedisClusterCommands)
  • added: class NodesManager
  • added: class PipelineCommand
  • added: class RedisCluster(AbstractRedis, AbstractRedisCluster, AsyncRedisClusterCommands)
  • added: constructor ClusterNode(host: str, port: Union[str, int], server_type: Optional[str]=…, *, max_connections: int=…, connection_class: Type[Connection]=…, **connection_kwargs: Any) -> None
  • added: constructor ClusterPipeline(client: RedisCluster) -> None
  • added: constructor NodesManager(startup_nodes: List[ClusterNode], require_full_coverage: bool, connection_kwargs: Dict[str, Any], address_remap: Optional[Callable[[str, int], Tuple[str, int]]]=…) -> None
  • added: constructor PipelineCommand(position: int, *args: Any, **kwargs: Any) -> None
  • added: constructor RedisCluster(host: Optional[str]=…, port: Union[str, int]=…, startup_nodes: Optional[List[ClusterNode]]=…, require_full_coverage: bool=…, read_from_replicas: bool=…, reinitialize_steps: int=…, cluster_error_retry_attempts: int=…, connection_error_retry_attempts: int=…, max_connections: int=…, db: Union[str, int]=…, path: Optional[str]=…, credential_provider: Optional[CredentialProvide…
  • added: field ClusterParser.EXCEPTION_CLASSES
  • added: method ClusterNode.acquire_connection() -> Connection
  • added: method ClusterPipeline.execute_command(*args: Union[KeyT, EncodableT], **kwargs: Any) -> ClusterPipeline
  • added: method ClusterPipeline.mset_nonatomic(mapping: Mapping[AnyKeyT, EncodableT]) -> ClusterPipeline
  • added: method NodesManager.get_node(host: Optional[str]=…, port: Optional[int]=…, node_name: Optional[str]=…) -> Optional[ClusterNode]
  • added: method NodesManager.get_node_from_slot(slot: int, read_from_replicas: bool=…) -> ClusterNode
  • added: method NodesManager.get_nodes_by_server_type(server_type: str) -> List[ClusterNode]
  • added: method NodesManager.remap_host_port(host: str, port: int) -> Tuple[str, int]
  • added: method NodesManager.set_nodes(old: Dict[str, ClusterNode], new: Dict[str, ClusterNode], remove_old: bool=…) -> None
  • added: method RedisCluster.get_connection_kwargs() -> Dict[str, Optional[Any]]
  • added: method RedisCluster.get_default_node() -> ClusterNode
  • added: method RedisCluster.get_encoder() -> Encoder
  • added: method RedisCluster.get_node(host: Optional[str]=…, port: Optional[int]=…, node_name: Optional[str]=…) -> Optional[ClusterNode]
  • added: method RedisCluster.get_node_from_key(key: str, replica: bool=…) -> Optional[ClusterNode]
  • added: method RedisCluster.get_nodes() -> List[ClusterNode]
  • added: method RedisCluster.get_primaries() -> List[ClusterNode]
  • added: method RedisCluster.get_random_node() -> ClusterNode
  • added: method RedisCluster.get_replicas() -> List[ClusterNode]
  • added: method RedisCluster.get_retry() -> Optional[Retry]
  • added: method RedisCluster.keyslot(key: EncodableT) -> int
  • added: method RedisCluster.lock(name: KeyT, timeout: Optional[float]=…, sleep: float=…, blocking: bool=…, blocking_timeout: Optional[float]=…, lock_class: Optional[Type[Lock]]=…, thread_local: bool=…) -> Lock
  • added: method RedisCluster.pipeline(transaction: Optional[Any]=…, shard_hint: Optional[Any]=…) -> ClusterPipeline
  • added: method RedisCluster.set_default_node(node: ClusterNode) -> None
  • added: method RedisCluster.set_response_callback(command: str, callback: ResponseCallbackT) -> None
  • added: method RedisCluster.set_retry(retry: Retry) -> None
  • added: static method RedisCluster.from_url(url: str, **kwargs: Any) -> RedisCluster
  • added: variable TargetNodesT
  • added: async method AbstractConnection.can_read_destructive()
  • added: async method AbstractConnection.check_health()
  • added: async method AbstractConnection.connect()
  • added: async method AbstractConnection.disconnect(nowait: bool=…) -> None
  • added: async method AbstractConnection.on_connect() -> None
  • added: async method AbstractConnection.read_response(disable_decoding: bool=…, timeout: Optional[float]=…, *, disconnect_on_error: bool=…)
  • added: async method AbstractConnection.send_command(*args: Any, **kwargs: Any) -> None
  • added: async method AbstractConnection.send_packed_command(command: Union[bytes, str, Iterable[bytes]], check_health: bool=…) -> None
  • added: async method BaseParser.can_read_destructive() -> bool
  • added: async method BaseParser.read_response(disable_decoding: bool=…) -> Union[EncodableT, ResponseError, None, List[EncodableT]]
  • added: async method BlockingConnectionPool.disconnect(inuse_connections: bool=…)
  • added: async method BlockingConnectionPool.get_connection(command_name, *keys, **options)
  • added: async method BlockingConnectionPool.release(connection: AbstractConnection)
  • added: async method ConnectionPool.disconnect(inuse_connections: bool=…)
  • added: async method ConnectionPool.get_connection(command_name, *keys, **options)
  • added: async method ConnectionPool.release(connection: AbstractConnection)
  • added: async method HiredisParser.can_read_destructive()
  • added: async method HiredisParser.read_from_socket()
  • added: async method HiredisParser.read_response(disable_decoding: bool=…) -> Union[EncodableT, List[EncodableT]]
  • added: async method PythonParser.can_read_destructive() -> bool
  • added: async method PythonParser.read_response(disable_decoding: bool=…)
  • added: class AbstractConnection
  • added: class AsyncConnectCallbackProtocol(Protocol)
  • added: class BaseParser
  • added: class BlockingConnectionPool(ConnectionPool)
  • added: class ConnectCallbackProtocol(Protocol)
  • added: class ConnectKwargs(TypedDict)
  • added: class Connection(AbstractConnection)
  • added: class ConnectionPool
  • added: class Encoder
  • added: class HiredisParser(BaseParser)
  • added: class PythonParser(BaseParser)
  • added: class RedisSSLContext
  • added: class SSLConnection(Connection)
  • added: class UnixDomainSocketConnection(AbstractConnection)
  • added: constructor AbstractConnection(*, db: Union[str, int]=…, password: Optional[str]=…, socket_timeout: Optional[float]=…, socket_connect_timeout: Optional[float]=…, retry_on_timeout: bool=…, retry_on_error: Union[list, _Sentinel]=…, encoding: str=…, encoding_errors: str=…, decode_responses: bool=…, parser_class: Type[BaseParser]=…, socket_read_size: int=…, health_check_interval: float=…, client_name…
  • added: constructor BaseParser(socket_read_size: int)
  • added: constructor BlockingConnectionPool(max_connections: int=…, timeout: Optional[int]=…, connection_class: Type[AbstractConnection]=…, queue_class: Type[asyncio.Queue]=…, **connection_kwargs)
  • added: constructor Connection(*, host: str=…, port: Union[str, int]=…, socket_keepalive: bool=…, socket_keepalive_options: Optional[Mapping[int, Union[int, bytes]]]=…, socket_type: int=…, **kwargs)
  • added: constructor ConnectionPool(connection_class: Type[AbstractConnection]=…, max_connections: Optional[int]=…, **connection_kwargs)
  • added: constructor Encoder(encoding: str, encoding_errors: str, decode_responses: bool)
  • added: constructor HiredisParser(socket_read_size: int)
  • added: constructor PythonParser(socket_read_size: int)
  • added: constructor RedisSSLContext(keyfile: Optional[str]=…, certfile: Optional[str]=…, cert_reqs: Optional[str]=…, ca_certs: Optional[str]=…, ca_data: Optional[str]=…, check_hostname: bool=…)
  • added: constructor SSLConnection(ssl_keyfile: Optional[str]=…, ssl_certfile: Optional[str]=…, ssl_cert_reqs: str=…, ssl_ca_certs: Optional[str]=…, ssl_ca_data: Optional[str]=…, ssl_check_hostname: bool=…, **kwargs)
  • added: constructor UnixDomainSocketConnection(*, path: str=…, **kwargs)
  • added: field BaseParser.EXCEPTION_CLASSES: ExceptionMappingT
  • added: field ConnectKwargs.connection_class: Type[AbstractConnection]
  • added: field ConnectKwargs.db: int
  • added: field ConnectKwargs.host: str
  • added: field ConnectKwargs.password: str
  • added: field ConnectKwargs.path: str
  • added: field ConnectKwargs.port: int
  • added: field ConnectKwargs.username: str
  • added: function parse_url(url: str) -> ConnectKwargs
  • added: function to_bool(value) -> Optional[bool]
  • added: method AbstractConnection.clear_connect_callbacks()
  • added: method AbstractConnection.pack_command(*args: EncodableT) -> List[bytes]
  • added: method AbstractConnection.pack_commands(commands: Iterable[Iterable[EncodableT]]) -> List[bytes]
  • added: method AbstractConnection.register_connect_callback(callback)
  • added: method AbstractConnection.repr_pieces()
  • added: method AbstractConnection.set_parser(parser_class: Type[BaseParser]) -> None
  • added: method BaseParser.on_connect(connection: AbstractConnection)
  • added: method BaseParser.on_disconnect()
  • added: method BlockingConnectionPool.make_connection()
  • added: method BlockingConnectionPool.reset()
  • added: method Connection.repr_pieces()
  • added: method ConnectionPool.get_encoder()
  • added: method ConnectionPool.make_connection()
  • added: method ConnectionPool.owns_connection(connection: AbstractConnection)
  • added: method ConnectionPool.reset()
  • added: method ConnectionPool.set_retry(retry: Retry) -> None
  • added: method Encoder.decode(value: EncodableT, force=…) -> EncodableT
  • added: method Encoder.encode(value: EncodableT) -> EncodedT
  • added: method HiredisParser.on_connect(connection: AbstractConnection)
  • added: method HiredisParser.on_disconnect()
  • added: method PythonParser.on_connect(connection: AbstractConnection)
  • added: method PythonParser.on_disconnect()
  • added: method RedisSSLContext.get() -> ssl.SSLContext
  • added: method UnixDomainSocketConnection.repr_pieces() -> Iterable[Tuple[str, Union[str, int]]]
  • added: property AbstractConnection.is_connected
  • added: property SSLConnection.ca_certs
  • added: property SSLConnection.ca_data
  • added: property SSLConnection.cert_reqs
  • added: property SSLConnection.certfile
  • added: property SSLConnection.check_hostname
  • added: property SSLConnection.keyfile
  • added: static method BaseParser.parse_error(response: str) -> ResponseError
  • added: static method ConnectionPool.from_url(url: str, **kwargs) -> _CP
  • added: variable ConnectCallbackT
  • added: variable DefaultParser
  • added: variable DefaultParser: Type[Union[PythonParser, HiredisParser]]
  • added: variable ExceptionMappingT
  • added: variable FALSE_STRINGS
  • added: variable MODULE_EXPORTS_DATA_TYPES_ERROR
  • added: variable MODULE_LOAD_ERROR
  • added: variable MODULE_UNLOAD_NOT_POSSIBLE_ERROR
  • added: variable NO_AUTH_SET_ERROR
  • added: variable NO_SUCH_MODULE_ERROR
  • added: variable SENTINEL
  • added: variable SERVER_CLOSED_CONNECTION_ERROR
  • added: variable SYM_CRLF
  • added: variable SYM_DOLLAR
  • added: variable SYM_EMPTY
  • added: variable SYM_LF
  • added: variable SYM_STAR
  • added: variable URL_QUERY_ARGUMENT_PARSERS: Mapping[str, Callable[..., object]]
  • added: variable hiredis
  • added: async method Lock.acquire(blocking: Optional[bool]=…, blocking_timeout: Optional[float]=…, token: Optional[Union[str, bytes]]=…)
  • added: async method Lock.do_acquire(token: Union[str, bytes]) -> bool
  • added: async method Lock.do_extend(additional_time, replace_ttl) -> bool
  • added: async method Lock.do_reacquire() -> bool
  • added: async method Lock.do_release(expected_token: bytes) -> None
  • added: async method Lock.locked() -> bool
  • added: async method Lock.owned() -> bool
  • added: class Lock
  • added: constructor Lock(redis: Union[Redis, RedisCluster], name: Union[str, bytes, memoryview], timeout: Optional[float]=…, sleep: float=…, blocking: bool=…, blocking_timeout: Optional[float]=…, thread_local: bool=…)
  • added: field Lock.LUA_EXTEND_SCRIPT
  • added: field Lock.LUA_REACQUIRE_SCRIPT
  • added: field Lock.LUA_RELEASE_SCRIPT
  • added: field Lock.lua_extend
  • added: field Lock.lua_reacquire
  • added: field Lock.lua_release
  • added: method Lock.extend(additional_time: float, replace_ttl: bool=…) -> Awaitable[bool]
  • added: method Lock.reacquire() -> Awaitable[bool]
  • added: method Lock.register_scripts()
  • added: method Lock.release() -> Awaitable[None]
  • added: async method CommandsParser.get_keys(*args: Any) -> Optional[Tuple[str, ...]]
  • added: async method CommandsParser.initialize(node: Optional[ClusterNode]=…) -> None
  • added: class CommandsParser
  • added: constructor CommandsParser() -> None
  • added: async method Retry.call_with_retry(do: Callable[[], Awaitable[T]], fail: Callable[[RedisError], Any]) -> T
  • added: class Retry
  • added: constructor Retry(backoff: AbstractBackoff, retries: int, supported_errors: Tuple[Type[RedisError], ...]=…)
  • added: method Retry.update_supported_errors(specified_errors: list)
  • added: variable T
  • added: async method Sentinel.discover_master(service_name: str)
  • added: async method Sentinel.discover_slaves(service_name: str) -> Sequence[Tuple[EncodableT, EncodableT]]
  • added: async method Sentinel.execute_command(*args, **kwargs)
  • added: async method SentinelConnectionPool.get_master_address()
  • added: async method SentinelConnectionPool.rotate_slaves() -> AsyncIterator
  • added: async method SentinelManagedConnection.connect()
  • added: async method SentinelManagedConnection.connect_to(address)
  • added: async method SentinelManagedConnection.read_response(disable_decoding: bool=…, timeout: Optional[float]=…, *, disconnect_on_error: Optional[float]=…)
  • added: class MasterNotFoundError(ConnectionError)
  • added: class Sentinel(AsyncSentinelCommands)
  • added: class SentinelConnectionPool(ConnectionPool)
  • added: class SentinelManagedConnection(Connection)
  • added: class SentinelManagedSSLConnection(SentinelManagedConnection, SSLConnection)
  • added: class SlaveNotFoundError(ConnectionError)
  • added: constructor Sentinel(sentinels, min_other_sentinels=…, sentinel_kwargs=…, **connection_kwargs)
  • added: constructor SentinelConnectionPool(service_name, sentinel_manager, **kwargs)
  • added: constructor SentinelManagedConnection(**kwargs)
  • added: method Sentinel.check_master_state(state: dict, service_name: str) -> bool
  • added: method Sentinel.filter_slaves(slaves: Iterable[Mapping]) -> Sequence[Tuple[EncodableT, EncodableT]]
  • added: method Sentinel.master_for(service_name: str, redis_class: Type[Redis]=…, connection_pool_class: Type[SentinelConnectionPool]=…, **kwargs)
  • added: method Sentinel.slave_for(service_name: str, redis_class: Type[Redis]=…, connection_pool_class: Type[SentinelConnectionPool]=…, **kwargs)
  • added: method SentinelConnectionPool.owns_connection(connection: Connection)
  • added: method SentinelConnectionPool.reset()
  • added: class pipeline
  • added: constructor pipeline(redis_obj: Redis)
  • added: function from_url(url, **kwargs)
  • added: class AbstractBackoff(ABC)
  • added: class ConstantBackoff(AbstractBackoff)
  • added: class DecorrelatedJitterBackoff(AbstractBackoff)
  • added: class EqualJitterBackoff(AbstractBackoff)
  • added: class ExponentialBackoff(AbstractBackoff)
  • added: class FullJitterBackoff(AbstractBackoff)
  • added: class NoBackoff(ConstantBackoff)
  • added: constructor ConstantBackoff(backoff)
  • added: constructor DecorrelatedJitterBackoff(cap=…, base=…)
  • added: constructor EqualJitterBackoff(cap=…, base=…)
  • added: constructor ExponentialBackoff(cap=…, base=…)
  • added: constructor FullJitterBackoff(cap=…, base=…)
  • added: constructor NoBackoff()
  • added: function default_backoff()
  • added: method AbstractBackoff.compute(failures)
  • added: method AbstractBackoff.reset()
  • added: method ConstantBackoff.compute(failures)
  • added: method DecorrelatedJitterBackoff.compute(failures)
  • added: method DecorrelatedJitterBackoff.reset()
  • added: method EqualJitterBackoff.compute(failures)
  • added: method ExponentialBackoff.compute(failures)
  • added: method FullJitterBackoff.compute(failures)
  • added: variable DEFAULT_BASE
  • added: variable DEFAULT_CAP
  • removed: class BitFieldOperation(object)
  • removed: class Script(object)
  • removed: constructor BitFieldOperation(client, key, default_overflow=…)
  • removed: constructor Script(registered_client, script)
  • removed: field Redis.RESPONSE_CALLBACKS
  • removed: function dict_merge(*dicts)
  • removed: function list_or_args(keys, args)
  • removed: function nativestr_if_bytes(value)
  • removed: function nativestr_or_none(response)
  • removed: function pairs_to_dict_with_nativestr_keys(response)
  • removed: function parse_georadius_generic(response, **options)
  • removed: method BitFieldOperation.execute()
  • removed: method BitFieldOperation.get(fmt, offset)
  • removed: method BitFieldOperation.incrby(fmt, offset, increment, overflow=…)
  • removed: method BitFieldOperation.overflow(overflow)
  • removed: method BitFieldOperation.reset()
  • removed: method BitFieldOperation.set(fmt, offset, value)
  • removed: method Redis.acl_cat(category=…)
  • removed: method Redis.acl_deluser(username)
  • removed: method Redis.acl_genpass()
  • removed: method Redis.acl_getuser(username)
  • removed: method Redis.acl_list()
  • removed: method Redis.acl_load()
  • removed: method Redis.acl_save()
  • removed: method Redis.acl_setuser(username, enabled=…, nopass=…, passwords=…, hashed_passwords=…, categories=…, commands=…, keys=…, reset=…, reset_keys=…, reset_passwords=…)
  • removed: method Redis.acl_users()
  • removed: method Redis.acl_whoami()
  • removed: method Redis.append(key, value)
  • removed: method Redis.bgrewriteaof()
  • removed: method Redis.bgsave()
  • removed: method Redis.bitcount(key, start=…, end=…)
  • removed: method Redis.bitfield(key, default_overflow=…)
  • removed: method Redis.bitop(operation, dest, *keys)
  • removed: method Redis.bitpos(key, bit, start=…, end=…)
  • removed: method Redis.blpop(keys, timeout=…)
  • removed: method Redis.brpop(keys, timeout=…)
  • removed: method Redis.brpoplpush(src, dst, timeout=…)
  • removed: method Redis.bzpopmax(keys, timeout=…)
  • removed: method Redis.bzpopmin(keys, timeout=…)
  • removed: method Redis.client_getname()
  • removed: method Redis.client_id()
  • removed: method Redis.client_kill(address)
  • removed: method Redis.client_kill_filter(_id=…, _type=…, addr=…, skipme=…)
  • removed: method Redis.client_list(_type=…)
  • removed: method Redis.client_pause(timeout)
  • removed: method Redis.client_setname(name)
  • removed: method Redis.client_unblock(client_id, error=…)
  • removed: method Redis.cluster(cluster_arg, *args)
  • removed: method Redis.config_get(pattern=…)
  • removed: method Redis.config_resetstat()
  • removed: method Redis.config_rewrite()
  • removed: method Redis.config_set(name, value)
  • removed: method Redis.dbsize()
  • removed: method Redis.debug_object(key)
  • removed: method Redis.decr(name, amount=…)
  • removed: method Redis.decrby(name, amount=…)
  • removed: method Redis.delete(*names)
  • removed: method Redis.dump(name)
  • removed: method Redis.echo(value)
  • removed: method Redis.eval(script, numkeys, *keys_and_args)
  • removed: method Redis.evalsha(sha, numkeys, *keys_and_args)
  • removed: method Redis.exists(*names)
  • removed: method Redis.expire(name, time)
  • removed: method Redis.expireat(name, when)
  • removed: method Redis.flushall(asynchronous=…)
  • removed: method Redis.flushdb(asynchronous=…)
  • removed: method Redis.geoadd(name, *values)
  • removed: method Redis.geodist(name, place1, place2, unit=…)
  • removed: method Redis.geohash(name, *values)
  • removed: method Redis.geopos(name, *values)
  • removed: method Redis.georadius(name, longitude, latitude, radius, unit=…, withdist=…, withcoord=…, withhash=…, count=…, sort=…, store=…, store_dist=…)
  • removed: method Redis.georadiusbymember(name, member, radius, unit=…, withdist=…, withcoord=…, withhash=…, count=…, sort=…, store=…, store_dist=…)
  • removed: method Redis.get(name)
  • removed: method Redis.getbit(name, offset)
  • removed: method Redis.getrange(key, start, end)
  • removed: method Redis.getset(name, value)
  • removed: method Redis.hdel(name, *keys)
  • removed: method Redis.hexists(name, key)
  • removed: method Redis.hget(name, key)
  • removed: method Redis.hgetall(name)
  • removed: method Redis.hincrby(name, key, amount=…)
  • removed: method Redis.hincrbyfloat(name, key, amount=…)
  • removed: method Redis.hkeys(name)
  • removed: method Redis.hlen(name)
  • removed: method Redis.hmget(name, keys, *args)
  • removed: method Redis.hmset(name, mapping)
  • removed: method Redis.hscan(name, cursor=…, match=…, count=…)
  • removed: method Redis.hscan_iter(name, match=…, count=…)
  • removed: method Redis.hset(name, key=…, value=…, mapping=…)
  • removed: method Redis.hsetnx(name, key, value)
  • removed: method Redis.hstrlen(name, key)
  • removed: method Redis.hvals(name)
  • removed: method Redis.incr(name, amount=…)
  • removed: method Redis.incrby(name, amount=…)
  • removed: method Redis.incrbyfloat(name, amount=…)
  • removed: method Redis.info(section=…)
  • removed: method Redis.keys(pattern=…)
  • removed: method Redis.lastsave()
  • removed: method Redis.lindex(name, index)
  • removed: method Redis.linsert(name, where, refvalue, value)
  • removed: method Redis.llen(name)
  • removed: method Redis.lpop(name)
  • removed: method Redis.lpush(name, *values)
  • removed: method Redis.lpushx(name, value)
  • removed: method Redis.lrange(name, start, end)
  • removed: method Redis.lrem(name, count, value)
  • removed: method Redis.lset(name, index, value)
  • removed: method Redis.ltrim(name, start, end)
  • removed: method Redis.memory_purge()
  • removed: method Redis.memory_stats()
  • removed: method Redis.memory_usage(key, samples=…)
  • removed: method Redis.mget(keys, *args)
  • removed: method Redis.migrate(host, port, keys, destination_db, timeout, copy=…, replace=…, auth=…)
  • removed: method Redis.move(name, db)
  • removed: method Redis.mset(mapping)
  • removed: method Redis.msetnx(mapping)
  • removed: method Redis.object(infotype, key)
  • removed: method Redis.persist(name)
  • removed: method Redis.pexpire(name, time)
  • removed: method Redis.pexpireat(name, when)
  • removed: method Redis.pfadd(name, *values)
  • removed: method Redis.pfcount(*sources)
  • removed: method Redis.pfmerge(dest, *sources)
  • removed: method Redis.ping()
  • removed: method Redis.psetex(name, time_ms, value)
  • removed: method Redis.pttl(name)
  • removed: method Redis.publish(channel, message)
  • removed: method Redis.pubsub_channels(pattern=…)
  • removed: method Redis.pubsub_numpat()
  • removed: method Redis.pubsub_numsub(*args)
  • removed: method Redis.randomkey()
  • removed: method Redis.readonly()
  • removed: method Redis.readwrite()
  • removed: method Redis.register_script(script)
  • removed: method Redis.rename(src, dst)
  • removed: method Redis.renamenx(src, dst)
  • removed: method Redis.restore(name, ttl, value, replace=…)
  • removed: method Redis.rpop(name)
  • removed: method Redis.rpoplpush(src, dst)
  • removed: method Redis.rpush(name, *values)
  • removed: method Redis.rpushx(name, value)
  • removed: method Redis.sadd(name, *values)
  • removed: method Redis.save()
  • removed: method Redis.scan(cursor=…, match=…, count=…, _type=…)
  • removed: method Redis.scan_iter(match=…, count=…, _type=…)
  • removed: method Redis.scard(name)
  • removed: method Redis.script_exists(*args)
  • removed: method Redis.script_flush()
  • removed: method Redis.script_kill()
  • removed: method Redis.script_load(script)
  • removed: method Redis.sdiff(keys, *args)
  • removed: method Redis.sdiffstore(dest, keys, *args)
  • removed: method Redis.sentinel(*args)
  • removed: method Redis.sentinel_get_master_addr_by_name(service_name)
  • removed: method Redis.sentinel_master(service_name)
  • removed: method Redis.sentinel_masters()
  • removed: method Redis.sentinel_monitor(name, ip, port, quorum)
  • removed: method Redis.sentinel_remove(name)
  • removed: method Redis.sentinel_sentinels(service_name)
  • removed: method Redis.sentinel_set(name, option, value)
  • removed: method Redis.sentinel_slaves(service_name)
  • removed: method Redis.set(name, value, ex=…, px=…, nx=…, xx=…, keepttl=…)
  • removed: method Redis.setbit(name, offset, value)
  • removed: method Redis.setex(name, time, value)
  • removed: method Redis.setnx(name, value)
  • removed: method Redis.setrange(name, offset, value)
  • removed: method Redis.shutdown(save=…, nosave=…)
  • removed: method Redis.sinter(keys, *args)
  • removed: method Redis.sinterstore(dest, keys, *args)
  • removed: method Redis.sismember(name, value)
  • removed: method Redis.slaveof(host=…, port=…)
  • removed: method Redis.slowlog_get(num=…)
  • removed: method Redis.slowlog_len()
  • removed: method Redis.slowlog_reset()
  • removed: method Redis.smembers(name)
  • removed: method Redis.smove(src, dst, value)
  • removed: method Redis.sort(name, start=…, num=…, by=…, get=…, desc=…, alpha=…, store=…, groups=…)
  • removed: method Redis.spop(name, count=…)
  • removed: method Redis.srandmember(name, number=…)
  • removed: method Redis.srem(name, *values)
  • removed: method Redis.sscan(name, cursor=…, match=…, count=…)
  • removed: method Redis.sscan_iter(name, match=…, count=…)
  • removed: method Redis.strlen(name)
  • removed: method Redis.substr(name, start, end=…)
  • removed: method Redis.sunion(keys, *args)
  • removed: method Redis.sunionstore(dest, keys, *args)
  • removed: method Redis.swapdb(first, second)
  • removed: method Redis.time()
  • removed: method Redis.touch(*args)
  • removed: method Redis.ttl(name)
  • removed: method Redis.type(name)
  • removed: method Redis.unlink(*names)
  • removed: method Redis.unwatch()
  • removed: method Redis.wait(num_replicas, timeout)
  • removed: method Redis.watch(*names)
  • removed: method Redis.xack(name, groupname, *ids)
  • removed: method Redis.xadd(name, fields, id=…, maxlen=…, approximate=…)
  • removed: method Redis.xclaim(name, groupname, consumername, min_idle_time, message_ids, idle=…, time=…, retrycount=…, force=…, justid=…)
  • removed: method Redis.xdel(name, *ids)
  • removed: method Redis.xgroup_create(name, groupname, id=…, mkstream=…)
  • removed: method Redis.xgroup_delconsumer(name, groupname, consumername)
  • removed: method Redis.xgroup_destroy(name, groupname)
  • removed: method Redis.xgroup_setid(name, groupname, id)
  • removed: method Redis.xinfo_consumers(name, groupname)
  • removed: method Redis.xinfo_groups(name)
  • removed: method Redis.xinfo_stream(name)
  • removed: method Redis.xlen(name)
  • removed: method Redis.xpending(name, groupname)
  • removed: method Redis.xpending_range(name, groupname, min, max, count, consumername=…)
  • removed: method Redis.xrange(name, min=…, max=…, count=…)
  • removed: method Redis.xread(streams, count=…, block=…)
  • removed: method Redis.xreadgroup(groupname, consumername, streams, count=…, block=…, noack=…)
  • removed: method Redis.xrevrange(name, max=…, min=…, count=…)
  • removed: method Redis.xtrim(name, maxlen, approximate=…)
  • removed: method Redis.zadd(name, mapping, nx=…, xx=…, ch=…, incr=…)
  • removed: method Redis.zcard(name)
  • removed: method Redis.zcount(name, min, max)
  • removed: method Redis.zincrby(name, amount, value)
  • removed: method Redis.zinterstore(dest, keys, aggregate=…)
  • removed: method Redis.zlexcount(name, min, max)
  • removed: method Redis.zpopmax(name, count=…)
  • removed: method Redis.zpopmin(name, count=…)
  • removed: method Redis.zrange(name, start, end, desc=…, withscores=…, score_cast_func=…)
  • removed: method Redis.zrangebylex(name, min, max, start=…, num=…)
  • removed: method Redis.zrangebyscore(name, min, max, start=…, num=…, withscores=…, score_cast_func=…)
  • removed: method Redis.zrank(name, value)
  • removed: method Redis.zrem(name, *values)
  • removed: method Redis.zremrangebylex(name, min, max)
  • removed: method Redis.zremrangebyrank(name, min, max)
  • removed: method Redis.zremrangebyscore(name, min, max)
  • removed: method Redis.zrevrange(name, start, end, withscores=…, score_cast_func=…)
  • removed: method Redis.zrevrangebylex(name, max, min, start=…, num=…)
  • removed: method Redis.zrevrangebyscore(name, max, min, start=…, num=…, withscores=…, score_cast_func=…)
  • removed: method Redis.zrevrank(name, value)
  • removed: method Redis.zscan(name, cursor=…, match=…, count=…, score_cast_func=…)
  • removed: method Redis.zscan_iter(name, match=…, count=…, score_cast_func=…)
  • removed: method Redis.zscore(name, value)
  • removed: method Redis.zunionstore(dest, keys, aggregate=…)
  • removed: property BitFieldOperation.command
  • changed: class Monitor(object) → class Monitor
  • changed: class PubSub(object) → class PubSub
  • changed: class Redis(object) → class Redis(AbstractRedis, RedisModuleCommands, CoreCommands, SentinelCommands)
  • changed: constructor PubSub(connection_pool, shard_hint=…, ignore_subscribe_messages=…) → constructor PubSub(connection_pool, shard_hint=…, ignore_subscribe_messages=…, encoder=…)
  • changed: constructor PubSubWorkerThread(pubsub, sleep_time, daemon=…) → constructor PubSubWorkerThread(pubsub, sleep_time, daemon=…, exception_handler=…)
  • changed: constructor Redis(host=…, port=…, db=…, password=…, socket_timeout=…, socket_connect_timeout=…, socket_keepalive=…, socket_keepalive_options=…, connection_pool=…, unix_socket_path=…, encoding=…, encoding_errors=…, charset=…, errors=…, decode_responses=…, retry_on_timeout=…, ssl=…, ssl_keyfile=…, ssl_certfile=…, ssl_cert_reqs=…, ssl_ca_certs=…, ssl_check_hostname=…, max_connections=…, single_conne… → constructor Redis(host=…, port=…, db=…, password=…, socket_timeout=…, socket_connect_timeout=…, socket_keepalive=…, socket_keepalive_options=…, connection_pool=…, unix_socket_path=…, encoding=…, encoding_errors=…, charset=…, errors=…, decode_responses=…, retry_on_timeout=…, retry_on_error=…, ssl=…, ssl_keyfile=…, ssl_certfile=…, ssl_cert_reqs=…, ssl_ca_certs=…, ssl_ca_path=…, ssl_ca_data=…, ssl_c…
  • changed: function parse_xinfo_stream(response) → function parse_xinfo_stream(response, **options)
  • changed: method PubSub.run_in_thread(sleep_time=…, daemon=…) → method PubSub.run_in_thread(sleep_time=…, daemon=…, exception_handler=…)
  • changed: method Redis.lock(name, timeout=…, sleep=…, blocking_timeout=…, lock_class=…, thread_local=…) → method Redis.lock(name, timeout=…, sleep=…, blocking=…, blocking_timeout=…, lock_class=…, thread_local=…)
  • changed: static method Redis.from_url(url, db=…, **kwargs) → static method Redis.from_url(url, **kwargs)
  • added: class AbstractRedis
  • added: field AbstractRedis.RESPONSE_CALLBACKS
  • added: function pairs_to_dict_with_str_keys(response)
  • added: function parse_acl_log(response, **options)
  • added: function parse_client_info(value)
  • added: function parse_command(response, **options)
  • added: function parse_geosearch_generic(response, **options)
  • added: function parse_module_result(response)
  • added: function parse_set_result(response, **options)
  • added: function parse_stralgo(response, **options)
  • added: function parse_xautoclaim(response, **options)
  • added: function parse_zmscore(response, **options)
  • added: method Pipeline.discard()
  • added: method PubSub.clean_health_check_responses()
  • added: method PubSub.is_health_check_response(response)
  • added: method Redis.get_connection_kwargs()
  • added: method Redis.get_encoder()
  • added: method Redis.get_retry() -> Optional[Retry]
  • added: method Redis.load_external_module(funcname, func)
  • added: method Redis.set_retry(retry: Retry) -> None
  • added: variable NEVER_DECODE
  • added: class AbstractRedisCluster
  • added: class ClusterNode
  • added: class ClusterParser(DefaultParser)
  • added: class ClusterPipeline(RedisCluster)
  • added: class ClusterPubSub(PubSub)
  • added: class LoadBalancer
  • added: class NodeCommands
  • added: class NodesManager
  • added: class PipelineCommand
  • added: class RedisCluster(AbstractRedisCluster, RedisClusterCommands)
  • added: constructor ClusterNode(host, port, server_type=…, redis_connection=…)
  • added: constructor ClusterPipeline(nodes_manager: NodesManager, commands_parser: CommandsParser, result_callbacks: Optional[Dict[str, Callable]]=…, cluster_response_callbacks: Optional[Dict[str, Callable]]=…, startup_nodes: Optional[List[ClusterNode]]=…, read_from_replicas: bool=…, cluster_error_retry_attempts: int=…, reinitialize_steps: int=…, lock=…, **kwargs)
  • added: constructor ClusterPubSub(redis_cluster, node=…, host=…, port=…, **kwargs)
  • added: constructor LoadBalancer(start_index: int=…) -> None
  • added: constructor NodeCommands(parse_response, connection_pool, connection)
  • added: constructor NodesManager(startup_nodes, from_url=…, require_full_coverage=…, lock=…, dynamic_startup_nodes=…, connection_pool_class=…, address_remap: Optional[Callable[[str, int], Tuple[str, int]]]=…, **kwargs)
  • added: constructor PipelineCommand(args, options=…, position=…)
  • added: constructor RedisCluster(host: Optional[str]=…, port: int=…, startup_nodes: Optional[List[ClusterNode]]=…, cluster_error_retry_attempts: int=…, retry: Optional[Retry]=…, require_full_coverage: bool=…, reinitialize_steps: int=…, read_from_replicas: bool=…, dynamic_startup_nodes: bool=…, url: Optional[str]=…, address_remap: Optional[Callable[[str, int], Tuple[str, int]]]=…, **kwargs)
  • added: field AbstractRedisCluster.ALL_NODES
  • added: field AbstractRedisCluster.CLUSTER_COMMANDS_RESPONSE_CALLBACKS
  • added: field AbstractRedisCluster.COMMAND_FLAGS
  • added: field AbstractRedisCluster.DEFAULT_NODE
  • added: field AbstractRedisCluster.ERRORS_ALLOW_RETRY
  • added: field AbstractRedisCluster.NODE_FLAGS
  • added: field AbstractRedisCluster.PRIMARIES
  • added: field AbstractRedisCluster.RANDOM
  • added: field AbstractRedisCluster.REPLICAS
  • added: field AbstractRedisCluster.RESULT_CALLBACKS
  • added: field AbstractRedisCluster.RedisClusterRequestTTL
  • added: field AbstractRedisCluster.SEARCH_COMMANDS
  • added: field ClusterParser.EXCEPTION_CLASSES
  • added: field ClusterPipeline.ERRORS_ALLOW_RETRY
  • added: function block_pipeline_command(name: str) -> Callable[..., Any]
  • added: function cleanup_kwargs(**kwargs)
  • added: function get_connection(redis_node, *args, **options)
  • added: function get_node_name(host: str, port: Union[str, int]) -> str
  • added: function parse_cluster_myshardid(resp, **options)
  • added: function parse_cluster_shards(resp, **options)
  • added: function parse_cluster_slots(resp: Any, **options: Any) -> Dict[Tuple[int, int], Dict[str, Any]]
  • added: function parse_pubsub_numsub(command, res, **options)
  • added: function parse_scan_result(command, res, **options)
  • added: method AbstractRedisCluster.replace_default_node(target_node: ClusterNode=…) -> None
  • added: method ClusterPipeline.annotate_exception(exception, number, command)
  • added: method ClusterPipeline.delete(*names)
  • added: method ClusterPipeline.eval()
  • added: method ClusterPipeline.execute(raise_on_error=…)
  • added: method ClusterPipeline.execute_command(*args, **kwargs)
  • added: method ClusterPipeline.exists(*keys)
  • added: method ClusterPipeline.immediate_execute_command(*args, **options)
  • added: method ClusterPipeline.load_scripts()
  • added: method ClusterPipeline.multi()
  • added: method ClusterPipeline.pipeline_execute_command(*args, **options)
  • added: method ClusterPipeline.raise_first_error(stack)
  • added: method ClusterPipeline.reset()
  • added: method ClusterPipeline.script_load_for_pipeline(*args, **kwargs)
  • added: method ClusterPipeline.send_cluster_commands(stack, raise_on_error=…, allow_redirections=…)
  • added: method ClusterPipeline.unlink(*names)
  • added: method ClusterPipeline.unwatch()
  • added: method ClusterPipeline.watch(*names)
  • added: method ClusterPubSub.execute_command(*args, **kwargs)
  • added: method ClusterPubSub.get_pubsub_node()
  • added: method ClusterPubSub.get_redis_connection()
  • added: method ClusterPubSub.set_pubsub_node(cluster, node=…, host=…, port=…)
  • added: method LoadBalancer.get_server_index(primary: str, list_size: int) -> int
  • added: method LoadBalancer.reset() -> None
  • added: method NodeCommands.append(c)
  • added: method NodeCommands.read()
  • added: method NodeCommands.write()
  • added: method NodesManager.check_slots_coverage(slots_cache)
  • added: method NodesManager.close()
  • added: method NodesManager.create_redis_connections(nodes)
  • added: method NodesManager.create_redis_node(host, port, **kwargs)
  • added: method NodesManager.get_node(host=…, port=…, node_name=…)
  • added: method NodesManager.get_node_from_slot(slot, read_from_replicas=…, server_type=…)
  • added: method NodesManager.get_nodes_by_server_type(server_type)
  • added: method NodesManager.initialize()
  • added: method NodesManager.populate_startup_nodes(nodes)
  • added: method NodesManager.remap_host_port(host: str, port: int) -> Tuple[str, int]
  • added: method NodesManager.reset()
  • added: method NodesManager.update_moved_exception(exception)
  • added: method RedisCluster.close()
  • added: method RedisCluster.determine_slot(*args)
  • added: method RedisCluster.disconnect_connection_pools()
  • added: method RedisCluster.execute_command(*args, **kwargs)
  • added: method RedisCluster.get_connection_kwargs()
  • added: method RedisCluster.get_default_node()
  • added: method RedisCluster.get_encoder()
  • added: method RedisCluster.get_node(host=…, port=…, node_name=…)
  • added: method RedisCluster.get_node_from_key(key, replica=…)
  • added: method RedisCluster.get_nodes()
  • added: method RedisCluster.get_primaries()
  • added: method RedisCluster.get_random_node()
  • added: method RedisCluster.get_redis_connection(node)
  • added: method RedisCluster.get_replicas()
  • added: method RedisCluster.get_retry() -> Optional[Retry]
  • added: method RedisCluster.keyslot(key)
  • added: method RedisCluster.load_external_module(funcname, func)
  • added: method RedisCluster.lock(name, timeout=…, sleep=…, blocking=…, blocking_timeout=…, lock_class=…, thread_local=…)
  • added: method RedisCluster.monitor(target_node=…)
  • added: method RedisCluster.on_connect(connection)
  • added: method RedisCluster.pipeline(transaction=…, shard_hint=…)
  • added: method RedisCluster.pubsub(node=…, host=…, port=…, **kwargs)
  • added: method RedisCluster.set_default_node(node)
  • added: method RedisCluster.set_response_callback(command, callback)
  • added: method RedisCluster.set_retry(retry: Retry) -> None
  • added: static method RedisCluster.from_url(url, **kwargs)
  • added: variable KWARGS_DISABLED_KEYS
  • added: variable PIPELINE_BLOCKED_COMMANDS
  • added: variable PRIMARY
  • added: variable REDIS_ALLOWED_KEYS
  • added: variable REPLICA
  • added: variable SLOT_ID
  • added: export AsyncCoreCommands
  • added: export AsyncRedisClusterCommands
  • added: export AsyncRedisModuleCommands
  • added: export AsyncSentinelCommands
  • added: export CommandsParser
  • added: export CoreCommands
  • added: export READ_COMMANDS
  • added: export RedisClusterCommands
  • added: export RedisModuleCommands
  • added: export SentinelCommands
  • added: export list_or_args
  • added: class AbstractBloom(object)
  • added: class BFBloom(BFCommands, AbstractBloom)
  • added: class CFBloom(CFCommands, AbstractBloom)
  • added: class CMSBloom(CMSCommands, AbstractBloom)
  • added: class TDigestBloom(TDigestCommands, AbstractBloom)
  • added: class TOPKBloom(TOPKCommands, AbstractBloom)
  • added: constructor BFBloom(client, **kwargs)
  • added: constructor CFBloom(client, **kwargs)
  • added: constructor CMSBloom(client, **kwargs)
  • added: constructor TDigestBloom(client, **kwargs)
  • added: constructor TOPKBloom(client, **kwargs)
  • added: export BFInfo
  • added: export CFInfo
  • added: export CMSInfo
  • added: export TDigestInfo
  • added: export TopKInfo
  • added: export bool_ok
  • added: export parse_to_list
  • added: static method AbstractBloom.append_bucket_size(params, bucket_size)
  • added: static method AbstractBloom.append_capacity(params, capacity)
  • added: static method AbstractBloom.append_error(params, error)
  • added: static method AbstractBloom.append_expansion(params, expansion)
  • added: static method AbstractBloom.append_items(params, items)
  • added: static method AbstractBloom.append_items_and_increments(params, items, increments)
  • added: static method AbstractBloom.append_max_iterations(params, max_iterations)
  • added: static method AbstractBloom.append_no_create(params, noCreate)
  • added: static method AbstractBloom.append_no_scale(params, noScale)
  • added: static method AbstractBloom.append_values_and_weights(params, items, weights)
  • added: static method AbstractBloom.append_weights(params, weights)
  • added: class BFCommands
  • added: class CFCommands
  • added: class CMSCommands
  • added: class TDigestCommands
  • added: class TOPKCommands
  • added: field BFCommands.reserve
  • added: field CFCommands.reserve
  • added: method BFCommands.add(key, item)
  • added: method BFCommands.card(key)
  • added: method BFCommands.create(key, errorRate, capacity, expansion=…, noScale=…)
  • added: method BFCommands.exists(key, item)
  • added: method BFCommands.info(key)
  • added: method BFCommands.insert(key, items, capacity=…, error=…, noCreate=…, expansion=…, noScale=…)
  • added: method BFCommands.loadchunk(key, iter, data)
  • added: method BFCommands.madd(key, *items)
  • added: method BFCommands.mexists(key, *items)
  • added: method BFCommands.scandump(key, iter)
  • added: method CFCommands.add(key, item)
  • added: method CFCommands.addnx(key, item)
  • added: method CFCommands.count(key, item)
  • added: method CFCommands.create(key, capacity, expansion=…, bucket_size=…, max_iterations=…)
  • added: method CFCommands.delete(key, item)
  • added: method CFCommands.exists(key, item)
  • added: method CFCommands.info(key)
  • added: method CFCommands.insert(key, items, capacity=…, nocreate=…)
  • added: method CFCommands.insertnx(key, items, capacity=…, nocreate=…)
  • added: method CFCommands.loadchunk(key, iter, data)
  • added: method CFCommands.mexists(key, *items)
  • added: method CFCommands.scandump(key, iter)
  • added: method CMSCommands.incrby(key, items, increments)
  • added: method CMSCommands.info(key)
  • added: method CMSCommands.initbydim(key, width, depth)
  • added: method CMSCommands.initbyprob(key, error, probability)
  • added: method CMSCommands.merge(destKey, numKeys, srcKeys, weights=…)
  • added: method CMSCommands.query(key, *items)
  • added: method TDigestCommands.add(key, values)
  • added: method TDigestCommands.byrank(key, rank, *ranks)
  • added: method TDigestCommands.byrevrank(key, rank, *ranks)
  • added: method TDigestCommands.cdf(key, value, *values)
  • added: method TDigestCommands.create(key, compression=…)
  • added: method TDigestCommands.info(key)
  • added: method TDigestCommands.max(key)
  • added: method TDigestCommands.merge(destination_key, num_keys, *keys, compression=…, override=…)
  • added: method TDigestCommands.min(key)
  • added: method TDigestCommands.quantile(key, quantile, *quantiles)
  • added: method TDigestCommands.rank(key, value, *values)
  • added: method TDigestCommands.reset(key)
  • added: method TDigestCommands.revrank(key, value, *values)
  • added: method TDigestCommands.trimmed_mean(key, low_cut_quantile, high_cut_quantile)
  • added: method TOPKCommands.add(key, *items)
  • added: method TOPKCommands.count(key, *items)
  • added: method TOPKCommands.incrby(key, items, increments)
  • added: method TOPKCommands.info(key)
  • added: method TOPKCommands.list(key, withcount=…)
  • added: method TOPKCommands.query(key, *items)
  • added: method TOPKCommands.reserve(key, k, width, depth, decay)
  • added: variable BF_ADD
  • added: variable BF_CARD
  • added: variable BF_EXISTS
  • added: variable BF_INFO
  • added: variable BF_INSERT
  • added: variable BF_LOADCHUNK
  • added: variable BF_MADD
  • added: variable BF_MEXISTS
  • added: variable BF_RESERVE
  • added: variable BF_SCANDUMP
  • added: variable CF_ADD
  • added: variable CF_ADDNX
  • added: variable CF_COUNT
  • added: variable CF_DEL
  • added: variable CF_EXISTS
  • added: variable CF_INFO
  • added: variable CF_INSERT
  • added: variable CF_INSERTNX
  • added: variable CF_LOADCHUNK
  • added: variable CF_MEXISTS
  • added: variable CF_RESERVE
  • added: variable CF_SCANDUMP
  • added: variable CMS_INCRBY
  • added: variable CMS_INFO
  • added: variable CMS_INITBYDIM
  • added: variable CMS_INITBYPROB
  • added: variable CMS_MERGE
  • added: variable CMS_QUERY
  • added: variable TDIGEST_ADD
  • added: variable TDIGEST_BYRANK
  • added: variable TDIGEST_BYREVRANK
  • added: variable TDIGEST_CDF
  • added: variable TDIGEST_CREATE
  • added: variable TDIGEST_INFO
  • added: variable TDIGEST_MAX
  • added: variable TDIGEST_MERGE
  • added: variable TDIGEST_MIN
  • added: variable TDIGEST_QUANTILE
  • added: variable TDIGEST_RANK
  • added: variable TDIGEST_RESET
  • added: variable TDIGEST_REVRANK
  • added: variable TDIGEST_TRIMMED_MEAN
  • added: variable TOPK_ADD
  • added: variable TOPK_COUNT
  • added: variable TOPK_INCRBY
  • added: variable TOPK_INFO
  • added: variable TOPK_LIST
  • added: variable TOPK_QUERY
  • added: variable TOPK_RESERVE
  • added: class BFInfo(object)
  • added: class CFInfo(object)
  • added: class CMSInfo(object)
  • added: class TDigestInfo(object)
  • added: class TopKInfo(object)
  • added: constructor BFInfo(args)
  • added: constructor CFInfo(args)
  • added: constructor CMSInfo(args)
  • added: constructor TDigestInfo(args)
  • added: constructor TopKInfo(args)
  • added: field BFInfo.capacity
  • added: field BFInfo.expansionRate
  • added: field BFInfo.filterNum
  • added: field BFInfo.insertedNum
  • added: field BFInfo.size
  • added: field CFInfo.bucketNum
  • added: field CFInfo.bucketSize
  • added: field CFInfo.deletedNum
  • added: field CFInfo.expansionRate
  • added: field CFInfo.filterNum
  • added: field CFInfo.insertedNum
  • added: field CFInfo.maxIteration
  • added: field CFInfo.size
  • added: field CMSInfo.count
  • added: field CMSInfo.depth
  • added: field CMSInfo.width
  • added: field TDigestInfo.capacity
  • added: field TDigestInfo.compression
  • added: field TDigestInfo.memory_usage
  • added: field TDigestInfo.merged_nodes
  • added: field TDigestInfo.merged_weight
  • added: field TDigestInfo.total_compressions
  • added: field TDigestInfo.unmerged_nodes
  • added: field TDigestInfo.unmerged_weight
  • added: field TopKInfo.decay
  • added: field TopKInfo.depth
  • added: field TopKInfo.k
  • added: field TopKInfo.width
  • added: async method AsyncClusterDataAccessCommands.scan_iter(match: Optional[PatternT]=…, count: Optional[int]=…, _type: Optional[str]=…, **kwargs) -> AsyncIterator
  • added: async method AsyncClusterManagementCommands.cluster_delslots(*slots: EncodableT) -> List[bool]
  • added: async method AsyncClusterMultiKeyCommands.mget_nonatomic(keys: KeysT, *args: KeyT) -> List[Optional[Any]]
  • added: async method AsyncClusterMultiKeyCommands.mset_nonatomic(mapping: Mapping[AnyKeyT, EncodableT]) -> List[bool]
  • added: class AsyncClusterDataAccessCommands(ClusterDataAccessCommands, AsyncDataAccessCommands)
  • added: class AsyncClusterManagementCommands(ClusterManagementCommands, AsyncManagementCommands)
  • added: class AsyncClusterMultiKeyCommands(ClusterMultiKeyCommands)
  • added: class AsyncRedisClusterCommands(AsyncClusterMultiKeyCommands, AsyncClusterManagementCommands, AsyncACLCommands, AsyncClusterDataAccessCommands, AsyncScriptCommands, AsyncFunctionCommands)
  • added: class ClusterDataAccessCommands(DataAccessCommands)
  • added: class ClusterManagementCommands(ManagementCommands)
  • added: class ClusterMultiKeyCommands(ClusterCommandsProtocol)
  • added: class RedisClusterCommands(ClusterMultiKeyCommands, ClusterManagementCommands, ACLCommands, PubSubCommands, ClusterDataAccessCommands, ScriptCommands, FunctionCommands, RedisModuleCommands)
  • added: method ClusterDataAccessCommands.scan_iter(match: Optional[PatternT]=…, count: Optional[int]=…, _type: Optional[str]=…, **kwargs) -> Iterator
  • added: method ClusterDataAccessCommands.stralgo(algo: Literal['LCS'], value1: KeyT, value2: KeyT, specific_argument: Union[Literal['strings'], Literal['keys']]=…, len: bool=…, idx: bool=…, minmatchlen: Optional[int]=…, withmatchlen: bool=…, **kwargs) -> ResponseT
  • added: method ClusterManagementCommands.cluster_addslots(target_node: TargetNodesT, *slots: EncodableT) -> ResponseT
  • added: method ClusterManagementCommands.cluster_addslotsrange(target_node: TargetNodesT, *slots: EncodableT) -> ResponseT
  • added: method ClusterManagementCommands.cluster_bumpepoch(target_nodes: Optional[TargetNodesT]=…) -> None
  • added: method ClusterManagementCommands.cluster_count_failure_report(node_id: str) -> ResponseT
  • added: method ClusterManagementCommands.cluster_countkeysinslot(slot_id: int) -> ResponseT
  • added: method ClusterManagementCommands.cluster_delslots(*slots: EncodableT) -> List[bool]
  • added: method ClusterManagementCommands.cluster_delslotsrange(*slots: EncodableT) -> ResponseT
  • added: method ClusterManagementCommands.cluster_failover(target_node: TargetNodesT, option: Optional[str]=…) -> ResponseT
  • added: method ClusterManagementCommands.cluster_flushslots(target_nodes: Optional[TargetNodesT]=…) -> None
  • added: method ClusterManagementCommands.cluster_get_keys_in_slot(slot: int, num_keys: int) -> ResponseT
  • added: method ClusterManagementCommands.cluster_info(target_nodes: Optional[TargetNodesT]=…) -> ResponseT
  • added: method ClusterManagementCommands.cluster_keyslot(key: str) -> ResponseT
  • added: method ClusterManagementCommands.cluster_links(target_node: TargetNodesT) -> ResponseT
  • added: method ClusterManagementCommands.cluster_meet(host: str, port: int, target_nodes: Optional[TargetNodesT]=…) -> ResponseT
  • added: method ClusterManagementCommands.cluster_myid(target_node: TargetNodesT) -> ResponseT
  • added: method ClusterManagementCommands.cluster_myshardid(target_nodes=…)
  • added: method ClusterManagementCommands.cluster_nodes() -> ResponseT
  • added: method ClusterManagementCommands.cluster_replicas(node_id: str, target_nodes: Optional[TargetNodesT]=…) -> ResponseT
  • added: method ClusterManagementCommands.cluster_replicate(target_nodes: TargetNodesT, node_id: str) -> ResponseT
  • added: method ClusterManagementCommands.cluster_reset(soft: bool=…, target_nodes: Optional[TargetNodesT]=…) -> ResponseT
  • added: method ClusterManagementCommands.cluster_save_config(target_nodes: Optional[TargetNodesT]=…) -> ResponseT
  • added: method ClusterManagementCommands.cluster_set_config_epoch(epoch: int, target_nodes: Optional[TargetNodesT]=…) -> ResponseT
  • added: method ClusterManagementCommands.cluster_setslot(target_node: TargetNodesT, node_id: str, slot_id: int, state: str) -> ResponseT
  • added: method ClusterManagementCommands.cluster_setslot_stable(slot_id: int) -> ResponseT
  • added: method ClusterManagementCommands.cluster_shards(target_nodes=…)
  • added: method ClusterManagementCommands.cluster_slots(target_nodes: Optional[TargetNodesT]=…) -> ResponseT
  • added: method ClusterManagementCommands.readonly(target_nodes: Optional[TargetNodesT]=…) -> ResponseT
  • added: method ClusterManagementCommands.readwrite(target_nodes: Optional[TargetNodesT]=…) -> ResponseT
  • added: method ClusterManagementCommands.replicaof(*args, **kwargs) -> NoReturn
  • added: method ClusterManagementCommands.slaveof(*args, **kwargs) -> NoReturn
  • added: method ClusterManagementCommands.swapdb(*args, **kwargs) -> NoReturn
  • added: method ClusterMultiKeyCommands.delete(*keys: KeyT) -> ResponseT
  • added: method ClusterMultiKeyCommands.exists(*keys: KeyT) -> ResponseT
  • added: method ClusterMultiKeyCommands.mget_nonatomic(keys: KeysT, *args: KeyT) -> List[Optional[Any]]
  • added: method ClusterMultiKeyCommands.mset_nonatomic(mapping: Mapping[AnyKeyT, EncodableT]) -> List[bool]
  • added: method ClusterMultiKeyCommands.touch(*keys: KeyT) -> ResponseT
  • added: method ClusterMultiKeyCommands.unlink(*keys: KeyT) -> ResponseT
  • added: variable READ_COMMANDS
  • added: async method AsyncBasicKeyCommands.unwatch() -> None
  • added: async method AsyncBasicKeyCommands.watch(*names: KeyT) -> None
  • added: async method AsyncManagementCommands.command_info(**kwargs) -> None
  • added: async method AsyncManagementCommands.debug_segfault(**kwargs) -> None
  • added: async method AsyncManagementCommands.memory_doctor(**kwargs) -> None
  • added: async method AsyncManagementCommands.memory_help(**kwargs) -> None
  • added: async method AsyncManagementCommands.shutdown(save: bool=…, nosave: bool=…, now: bool=…, force: bool=…, abort: bool=…, **kwargs) -> None
  • added: async method AsyncModuleCommands.command_info() -> None
  • added: async method AsyncScanCommands.hscan_iter(name: str, match: Union[PatternT, None]=…, count: Union[int, None]=…) -> AsyncIterator
  • added: async method AsyncScanCommands.scan_iter(match: Union[PatternT, None]=…, count: Union[int, None]=…, _type: Union[str, None]=…, **kwargs) -> AsyncIterator
  • added: async method AsyncScanCommands.sscan_iter(name: KeyT, match: Union[PatternT, None]=…, count: Union[int, None]=…) -> AsyncIterator
  • added: async method AsyncScanCommands.zscan_iter(name: KeyT, match: Union[PatternT, None]=…, count: Union[int, None]=…, score_cast_func: Union[type, Callable]=…) -> AsyncIterator
  • added: async method AsyncScriptCommands.script_debug(*args) -> None
  • added: class ACLCommands(CommandsProtocol)
  • added: class AsyncBasicKeyCommands(BasicKeyCommands)
  • added: class AsyncCoreCommands(AsyncACLCommands, AsyncClusterCommands, AsyncDataAccessCommands, AsyncManagementCommands, AsyncModuleCommands, AsyncPubSubCommands, AsyncScriptCommands, AsyncFunctionCommands)
  • added: class AsyncDataAccessCommands(AsyncBasicKeyCommands, AsyncHyperlogCommands, AsyncHashCommands, AsyncGeoCommands, AsyncListCommands, AsyncScanCommands, AsyncSetCommands, AsyncStreamCommands, AsyncSortedSetCommands)
  • added: class AsyncManagementCommands(ManagementCommands)
  • added: class AsyncModuleCommands(ModuleCommands)
  • added: class AsyncScanCommands(ScanCommands)
  • added: class AsyncScript
  • added: class AsyncScriptCommands(ScriptCommands)
  • added: class BasicKeyCommands(CommandsProtocol)
  • added: class BitFieldOperation
  • added: class ClusterCommands(CommandsProtocol)
  • added: class CoreCommands(ACLCommands, ClusterCommands, DataAccessCommands, ManagementCommands, ModuleCommands, PubSubCommands, ScriptCommands, FunctionCommands)
  • added: class DataAccessCommands(BasicKeyCommands, HyperlogCommands, HashCommands, GeoCommands, ListCommands, ScanCommands, SetCommands, StreamCommands, SortedSetCommands)
  • added: class FunctionCommands
  • added: class GeoCommands(CommandsProtocol)
  • added: class HashCommands(CommandsProtocol)
  • added: class HyperlogCommands(CommandsProtocol)
  • added: class ListCommands(CommandsProtocol)
  • added: class ManagementCommands(CommandsProtocol)
  • added: class ModuleCommands(CommandsProtocol)
  • added: class PubSubCommands(CommandsProtocol)
  • added: class ScanCommands(CommandsProtocol)
  • added: class Script
  • added: class ScriptCommands(CommandsProtocol)
  • added: class SetCommands(CommandsProtocol)
  • added: class SortedSetCommands(CommandsProtocol)
  • added: class StreamCommands(CommandsProtocol)
  • added: constructor AsyncScript(registered_client: AsyncRedis, script: ScriptTextT)
  • added: constructor BitFieldOperation(client: Union[Redis, AsyncRedis], key: str, default_overflow: Union[str, None]=…)
  • added: constructor Script(registered_client, script)
  • added: constructor Script(registered_client: Redis, script: ScriptTextT)
  • added: field BasicKeyCommands.decr
  • added: field BasicKeyCommands.incr
  • added: method ACLCommands.acl_cat(category: Union[str, None]=…, **kwargs) -> ResponseT
  • added: method ACLCommands.acl_deluser(*username: str, **kwargs) -> ResponseT
  • added: method ACLCommands.acl_dryrun(username, *args, **kwargs)
  • added: method ACLCommands.acl_genpass(bits: Union[int, None]=…, **kwargs) -> ResponseT
  • added: method ACLCommands.acl_getuser(username: str, **kwargs) -> ResponseT
  • added: method ACLCommands.acl_help(**kwargs) -> ResponseT
  • added: method ACLCommands.acl_list(**kwargs) -> ResponseT
  • added: method ACLCommands.acl_load(**kwargs) -> ResponseT
  • added: method ACLCommands.acl_log(count: Union[int, None]=…, **kwargs) -> ResponseT
  • added: method ACLCommands.acl_log_reset(**kwargs) -> ResponseT
  • added: method ACLCommands.acl_save(**kwargs) -> ResponseT
  • added: method ACLCommands.acl_setuser(username: str, enabled: bool=…, nopass: bool=…, passwords: Union[str, Iterable[str], None]=…, hashed_passwords: Union[str, Iterable[str], None]=…, categories: Optional[Iterable[str]]=…, commands: Optional[Iterable[str]]=…, keys: Optional[Iterable[KeyT]]=…, channels: Optional[Iterable[ChannelT]]=…, selectors: Optional[Iterable[Tuple[str, KeyT]]]=…, reset: bool=…, res…
  • added: method ACLCommands.acl_users(**kwargs) -> ResponseT
  • added: method ACLCommands.acl_whoami(**kwargs) -> ResponseT
  • added: method AsyncScriptCommands.register_script(script: ScriptTextT) -> AsyncScript
  • added: method BasicKeyCommands.append(key: KeyT, value: EncodableT) -> ResponseT
  • added: method BasicKeyCommands.bitcount(key: KeyT, start: Union[int, None]=…, end: Union[int, None]=…, mode: Optional[str]=…) -> ResponseT
  • added: method BasicKeyCommands.bitfield(key: KeyT, default_overflow: Union[str, None]=…) -> BitFieldOperation
  • added: method BasicKeyCommands.bitfield_ro(key: KeyT, encoding: str, offset: BitfieldOffsetT, items: Optional[list]=…) -> ResponseT
  • added: method BasicKeyCommands.bitop(operation: str, dest: KeyT, *keys: KeyT) -> ResponseT
  • added: method BasicKeyCommands.bitpos(key: KeyT, bit: int, start: Union[int, None]=…, end: Union[int, None]=…, mode: Optional[str]=…) -> ResponseT
  • added: method BasicKeyCommands.blmove(first_list: str, second_list: str, timeout: int, src: str=…, dest: str=…) -> ResponseT
  • added: method BasicKeyCommands.copy(source: str, destination: str, destination_db: Union[str, None]=…, replace: bool=…) -> ResponseT
  • added: method BasicKeyCommands.decrby(name: KeyT, amount: int=…) -> ResponseT
  • added: method BasicKeyCommands.delete(*names: KeyT) -> ResponseT
  • added: method BasicKeyCommands.dump(name: KeyT) -> ResponseT
  • added: method BasicKeyCommands.exists(*names: KeyT) -> ResponseT
  • added: method BasicKeyCommands.expire(name: KeyT, time: ExpiryT, nx: bool=…, xx: bool=…, gt: bool=…, lt: bool=…) -> ResponseT
  • added: method BasicKeyCommands.expireat(name: KeyT, when: AbsExpiryT, nx: bool=…, xx: bool=…, gt: bool=…, lt: bool=…) -> ResponseT
  • added: method BasicKeyCommands.expiretime(key: str) -> int
  • added: method BasicKeyCommands.get(name: KeyT) -> ResponseT
  • added: method BasicKeyCommands.getbit(name: KeyT, offset: int) -> ResponseT
  • added: method BasicKeyCommands.getdel(name: KeyT) -> ResponseT
  • added: method BasicKeyCommands.getex(name: KeyT, ex: Union[ExpiryT, None]=…, px: Union[ExpiryT, None]=…, exat: Union[AbsExpiryT, None]=…, pxat: Union[AbsExpiryT, None]=…, persist: bool=…) -> ResponseT
  • added: method BasicKeyCommands.getrange(key: KeyT, start: int, end: int) -> ResponseT
  • added: method BasicKeyCommands.getset(name: KeyT, value: EncodableT) -> ResponseT
  • added: method BasicKeyCommands.hrandfield(key: str, count: int=…, withvalues: bool=…) -> ResponseT
  • added: method BasicKeyCommands.incrby(name: KeyT, amount: int=…) -> ResponseT
  • added: method BasicKeyCommands.incrbyfloat(name: KeyT, amount: float=…) -> ResponseT
  • added: method BasicKeyCommands.keys(pattern: PatternT=…, **kwargs) -> ResponseT
  • added: method BasicKeyCommands.lcs(key1: str, key2: str, len: Optional[bool]=…, idx: Optional[bool]=…, minmatchlen: Optional[int]=…, withmatchlen: Optional[bool]=…) -> Union[str, int, list]
  • added: method BasicKeyCommands.lmove(first_list: str, second_list: str, src: str=…, dest: str=…) -> ResponseT
  • added: method BasicKeyCommands.mget(keys: KeysT, *args: EncodableT) -> ResponseT
  • added: method BasicKeyCommands.move(name: KeyT, db: int) -> ResponseT
  • added: method BasicKeyCommands.mset(mapping: Mapping[AnyKeyT, EncodableT]) -> ResponseT
  • added: method BasicKeyCommands.msetnx(mapping: Mapping[AnyKeyT, EncodableT]) -> ResponseT
  • added: method BasicKeyCommands.persist(name: KeyT) -> ResponseT
  • added: method BasicKeyCommands.pexpire(name: KeyT, time: ExpiryT, nx: bool=…, xx: bool=…, gt: bool=…, lt: bool=…) -> ResponseT
  • added: method BasicKeyCommands.pexpireat(name: KeyT, when: AbsExpiryT, nx: bool=…, xx: bool=…, gt: bool=…, lt: bool=…) -> ResponseT
  • added: method BasicKeyCommands.pexpiretime(key: str) -> int
  • added: method BasicKeyCommands.psetex(name: KeyT, time_ms: ExpiryT, value: EncodableT)
  • added: method BasicKeyCommands.pttl(name: KeyT) -> ResponseT
  • added: method BasicKeyCommands.randomkey(**kwargs) -> ResponseT
  • added: method BasicKeyCommands.rename(src: KeyT, dst: KeyT) -> ResponseT
  • added: method BasicKeyCommands.renamenx(src: KeyT, dst: KeyT)
  • added: method BasicKeyCommands.restore(name: KeyT, ttl: float, value: EncodableT, replace: bool=…, absttl: bool=…, idletime: Union[int, None]=…, frequency: Union[int, None]=…) -> ResponseT
  • added: method BasicKeyCommands.set(name: KeyT, value: EncodableT, ex: Union[ExpiryT, None]=…, px: Union[ExpiryT, None]=…, nx: bool=…, xx: bool=…, keepttl: bool=…, get: bool=…, exat: Union[AbsExpiryT, None]=…, pxat: Union[AbsExpiryT, None]=…) -> ResponseT
  • added: method BasicKeyCommands.setbit(name: KeyT, offset: int, value: int) -> ResponseT
  • added: method BasicKeyCommands.setex(name: KeyT, time: ExpiryT, value: EncodableT) -> ResponseT
  • added: method BasicKeyCommands.setnx(name: KeyT, value: EncodableT) -> ResponseT
  • added: method BasicKeyCommands.setrange(name: KeyT, offset: int, value: EncodableT) -> ResponseT
  • added: method BasicKeyCommands.stralgo(algo: Literal['LCS'], value1: KeyT, value2: KeyT, specific_argument: Union[Literal['strings'], Literal['keys']]=…, len: bool=…, idx: bool=…, minmatchlen: Union[int, None]=…, withmatchlen: bool=…, **kwargs) -> ResponseT
  • added: method BasicKeyCommands.strlen(name: KeyT) -> ResponseT
  • added: method BasicKeyCommands.substr(name: KeyT, start: int, end: int=…) -> ResponseT
  • added: method BasicKeyCommands.touch(*args: KeyT) -> ResponseT
  • added: method BasicKeyCommands.ttl(name: KeyT) -> ResponseT
  • added: method BasicKeyCommands.type(name: KeyT) -> ResponseT
  • added: method BasicKeyCommands.unlink(*names: KeyT) -> ResponseT
  • added: method BasicKeyCommands.unwatch() -> None
  • added: method BasicKeyCommands.watch(*names: KeyT) -> None
  • added: method BitFieldOperation.execute() -> ResponseT
  • added: method BitFieldOperation.get(fmt: str, offset: BitfieldOffsetT)
  • added: method BitFieldOperation.incrby(fmt: str, offset: BitfieldOffsetT, increment: int, overflow: Union[str, None]=…)
  • added: method BitFieldOperation.overflow(overflow: str)
  • added: method BitFieldOperation.reset()
  • added: method BitFieldOperation.set(fmt: str, offset: BitfieldOffsetT, value: int)
  • added: method ClusterCommands.cluster(cluster_arg, *args, **kwargs) -> ResponseT
  • added: method ClusterCommands.readonly(**kwargs) -> ResponseT
  • added: method ClusterCommands.readwrite(**kwargs) -> ResponseT
  • added: method FunctionCommands.fcall(function, numkeys: int, *keys_and_args: Optional[List]) -> Union[Awaitable[str], str]
  • added: method FunctionCommands.fcall_ro(function, numkeys: int, *keys_and_args: Optional[List]) -> Union[Awaitable[str], str]
  • added: method FunctionCommands.function_delete(library: str) -> Union[Awaitable[str], str]
  • added: method FunctionCommands.function_dump() -> Union[Awaitable[str], str]
  • added: method FunctionCommands.function_flush(mode: str=…) -> Union[Awaitable[str], str]
  • added: method FunctionCommands.function_kill() -> Union[Awaitable[str], str]
  • added: method FunctionCommands.function_list(library: Optional[str]=…, withcode: Optional[bool]=…) -> Union[Awaitable[List], List]
  • added: method FunctionCommands.function_load(code: str, replace: Optional[bool]=…) -> Union[Awaitable[str], str]
  • added: method FunctionCommands.function_restore(payload: str, policy: Optional[str]=…) -> Union[Awaitable[str], str]
  • added: method FunctionCommands.function_stats() -> Union[Awaitable[List], List]
  • added: method GeoCommands.geoadd(name: KeyT, values: Sequence[EncodableT], nx: bool=…, xx: bool=…, ch: bool=…) -> ResponseT
  • added: method GeoCommands.geodist(name: KeyT, place1: FieldT, place2: FieldT, unit: Union[str, None]=…) -> ResponseT
  • added: method GeoCommands.geohash(name: KeyT, *values: FieldT) -> ResponseT
  • added: method GeoCommands.geopos(name: KeyT, *values: FieldT) -> ResponseT
  • added: method GeoCommands.georadius(name: KeyT, longitude: float, latitude: float, radius: float, unit: Union[str, None]=…, withdist: bool=…, withcoord: bool=…, withhash: bool=…, count: Union[int, None]=…, sort: Union[str, None]=…, store: Union[KeyT, None]=…, store_dist: Union[KeyT, None]=…, any: bool=…) -> ResponseT
  • added: method GeoCommands.georadiusbymember(name: KeyT, member: FieldT, radius: float, unit: Union[str, None]=…, withdist: bool=…, withcoord: bool=…, withhash: bool=…, count: Union[int, None]=…, sort: Union[str, None]=…, store: Union[KeyT, None]=…, store_dist: Union[KeyT, None]=…, any: bool=…) -> ResponseT
  • added: method GeoCommands.geosearch(name: KeyT, member: Union[FieldT, None]=…, longitude: Union[float, None]=…, latitude: Union[float, None]=…, unit: str=…, radius: Union[float, None]=…, width: Union[float, None]=…, height: Union[float, None]=…, sort: Union[str, None]=…, count: Union[int, None]=…, any: bool=…, withcoord: bool=…, withdist: bool=…, withhash: bool=…) -> ResponseT
  • added: method GeoCommands.geosearchstore(dest: KeyT, name: KeyT, member: Union[FieldT, None]=…, longitude: Union[float, None]=…, latitude: Union[float, None]=…, unit: str=…, radius: Union[float, None]=…, width: Union[float, None]=…, height: Union[float, None]=…, sort: Union[str, None]=…, count: Union[int, None]=…, any: bool=…, storedist: bool=…) -> ResponseT
  • added: method HashCommands.hdel(name: str, *keys: List) -> Union[Awaitable[int], int]
  • added: method HashCommands.hexists(name: str, key: str) -> Union[Awaitable[bool], bool]
  • added: method HashCommands.hget(name: str, key: str) -> Union[Awaitable[Optional[str]], Optional[str]]
  • added: method HashCommands.hgetall(name: str) -> Union[Awaitable[dict], dict]
  • added: method HashCommands.hincrby(name: str, key: str, amount: int=…) -> Union[Awaitable[int], int]
  • added: method HashCommands.hincrbyfloat(name: str, key: str, amount: float=…) -> Union[Awaitable[float], float]
  • added: method HashCommands.hkeys(name: str) -> Union[Awaitable[List], List]
  • added: method HashCommands.hlen(name: str) -> Union[Awaitable[int], int]
  • added: method HashCommands.hmget(name: str, keys: List, *args: List) -> Union[Awaitable[List], List]
  • added: method HashCommands.hmset(name: str, mapping: dict) -> Union[Awaitable[str], str]
  • added: method HashCommands.hset(name: str, key: Optional[str]=…, value: Optional[str]=…, mapping: Optional[dict]=…, items: Optional[list]=…) -> Union[Awaitable[int], int]
  • added: method HashCommands.hsetnx(name: str, key: str, value: str) -> Union[Awaitable[bool], bool]
  • added: method HashCommands.hstrlen(name: str, key: str) -> Union[Awaitable[int], int]
  • added: method HashCommands.hvals(name: str) -> Union[Awaitable[List], List]
  • added: method HyperlogCommands.pfadd(name: KeyT, *values: FieldT) -> ResponseT
  • added: method HyperlogCommands.pfcount(*sources: KeyT) -> ResponseT
  • added: method HyperlogCommands.pfmerge(dest: KeyT, *sources: KeyT) -> ResponseT
  • added: method ListCommands.blmpop(timeout: float, numkeys: int, *args: List[str], direction: str, count: Optional[int]=…) -> Optional[list]
  • added: method ListCommands.blpop(keys: List, timeout: Optional[int]=…) -> Union[Awaitable[list], list]
  • added: method ListCommands.brpop(keys: List, timeout: Optional[int]=…) -> Union[Awaitable[list], list]
  • added: method ListCommands.brpoplpush(src: str, dst: str, timeout: Optional[int]=…) -> Union[Awaitable[Optional[str]], Optional[str]]
  • added: method ListCommands.lindex(name: str, index: int) -> Union[Awaitable[Optional[str]], Optional[str]]
  • added: method ListCommands.linsert(name: str, where: str, refvalue: str, value: str) -> Union[Awaitable[int], int]
  • added: method ListCommands.llen(name: str) -> Union[Awaitable[int], int]
  • added: method ListCommands.lmpop(num_keys: int, *args: List[str], direction: str, count: Optional[int]=…) -> Union[Awaitable[list], list]
  • added: method ListCommands.lpop(name: str, count: Optional[int]=…) -> Union[Awaitable[Union[str, List, None]], Union[str, List, None]]
  • added: method ListCommands.lpos(name: str, value: str, rank: Optional[int]=…, count: Optional[int]=…, maxlen: Optional[int]=…) -> Union[str, List, None]
  • added: method ListCommands.lpush(name: str, *values: FieldT) -> Union[Awaitable[int], int]
  • added: method ListCommands.lpushx(name: str, *values: FieldT) -> Union[Awaitable[int], int]
  • added: method ListCommands.lrange(name: str, start: int, end: int) -> Union[Awaitable[list], list]
  • added: method ListCommands.lrem(name: str, count: int, value: str) -> Union[Awaitable[int], int]
  • added: method ListCommands.lset(name: str, index: int, value: str) -> Union[Awaitable[str], str]
  • added: method ListCommands.ltrim(name: str, start: int, end: int) -> Union[Awaitable[str], str]
  • added: method ListCommands.rpop(name: str, count: Optional[int]=…) -> Union[Awaitable[Union[str, List, None]], Union[str, List, None]]
  • added: method ListCommands.rpoplpush(src: str, dst: str) -> Union[Awaitable[str], str]
  • added: method ListCommands.rpush(name: str, *values: FieldT) -> Union[Awaitable[int], int]
  • added: method ListCommands.rpushx(name: str, value: str) -> Union[Awaitable[int], int]
  • added: method ListCommands.sort(name: str, start: Optional[int]=…, num: Optional[int]=…, by: Optional[str]=…, get: Optional[List[str]]=…, desc: bool=…, alpha: bool=…, store: Optional[str]=…, groups: Optional[bool]=…) -> Union[List, int]
  • added: method ListCommands.sort_ro(key: str, start: Optional[int]=…, num: Optional[int]=…, by: Optional[str]=…, get: Optional[List[str]]=…, desc: bool=…, alpha: bool=…) -> list
  • added: method ManagementCommands.auth(password, username=…, **kwargs)
  • added: method ManagementCommands.bgrewriteaof(**kwargs)
  • added: method ManagementCommands.bgsave(schedule: bool=…, **kwargs) -> ResponseT
  • added: method ManagementCommands.client_getname(**kwargs) -> ResponseT
  • added: method ManagementCommands.client_getredir(**kwargs) -> ResponseT
  • added: method ManagementCommands.client_id(**kwargs) -> ResponseT
  • added: method ManagementCommands.client_info(**kwargs) -> ResponseT
  • added: method ManagementCommands.client_kill(address: str, **kwargs) -> ResponseT
  • added: method ManagementCommands.client_kill_filter(_id: Union[str, None]=…, _type: Union[str, None]=…, addr: Union[str, None]=…, skipme: Union[bool, None]=…, laddr: Union[bool, None]=…, user: str=…, **kwargs) -> ResponseT
  • added: method ManagementCommands.client_list(_type: Union[str, None]=…, client_id: List[EncodableT]=…, **kwargs) -> ResponseT
  • added: method ManagementCommands.client_no_evict(mode: str) -> Union[Awaitable[str], str]
  • added: method ManagementCommands.client_no_touch(mode: str) -> Union[Awaitable[str], str]
  • added: method ManagementCommands.client_pause(timeout: int, all: bool=…, **kwargs) -> ResponseT
  • added: method ManagementCommands.client_reply(reply: Union[Literal['ON'], Literal['OFF'], Literal['SKIP']], **kwargs) -> ResponseT
  • added: method ManagementCommands.client_setname(name: str, **kwargs) -> ResponseT
  • added: method ManagementCommands.client_tracking(on: bool=…, clientid: Union[int, None]=…, prefix: Sequence[KeyT]=…, bcast: bool=…, optin: bool=…, optout: bool=…, noloop: bool=…, **kwargs) -> ResponseT
  • added: method ManagementCommands.client_tracking_off(clientid: Union[int, None]=…, prefix: Sequence[KeyT]=…, bcast: bool=…, optin: bool=…, optout: bool=…, noloop: bool=…) -> ResponseT
  • added: method ManagementCommands.client_tracking_on(clientid: Union[int, None]=…, prefix: Sequence[KeyT]=…, bcast: bool=…, optin: bool=…, optout: bool=…, noloop: bool=…) -> ResponseT
  • added: method ManagementCommands.client_trackinginfo(**kwargs) -> ResponseT
  • added: method ManagementCommands.client_unblock(client_id: int, error: bool=…, **kwargs) -> ResponseT
  • added: method ManagementCommands.client_unpause(**kwargs) -> ResponseT
  • added: method ManagementCommands.command(**kwargs)
  • added: method ManagementCommands.command_count(**kwargs) -> ResponseT
  • added: method ManagementCommands.command_docs(*args)
  • added: method ManagementCommands.command_getkeysandflags(*args: List[str]) -> List[Union[str, List[str]]]
  • added: method ManagementCommands.command_info(**kwargs) -> None
  • added: method ManagementCommands.command_list(module: Optional[str]=…, category: Optional[str]=…, pattern: Optional[str]=…) -> ResponseT
  • added: method ManagementCommands.config_get(pattern: PatternT=…, *args: List[PatternT], **kwargs) -> ResponseT
  • added: method ManagementCommands.config_resetstat(**kwargs) -> ResponseT
  • added: method ManagementCommands.config_rewrite(**kwargs) -> ResponseT
  • added: method ManagementCommands.config_set(name: KeyT, value: EncodableT, *args: List[Union[KeyT, EncodableT]], **kwargs) -> ResponseT
  • added: method ManagementCommands.dbsize(**kwargs) -> ResponseT
  • added: method ManagementCommands.debug_object(key: KeyT, **kwargs) -> ResponseT
  • added: method ManagementCommands.debug_segfault(**kwargs) -> None
  • added: method ManagementCommands.echo(value: EncodableT, **kwargs) -> ResponseT
  • added: method ManagementCommands.failover()
  • added: method ManagementCommands.flushall(asynchronous: bool=…, **kwargs) -> ResponseT
  • added: method ManagementCommands.flushdb(asynchronous: bool=…, **kwargs) -> ResponseT
  • added: method ManagementCommands.hello()
  • added: method ManagementCommands.info(section: Union[str, None]=…, *args: List[str], **kwargs) -> ResponseT
  • added: method ManagementCommands.lastsave(**kwargs) -> ResponseT
  • added: method ManagementCommands.latency_doctor()
  • added: method ManagementCommands.latency_graph()
  • added: method ManagementCommands.latency_histogram(*args)
  • added: method ManagementCommands.latency_history(event: str) -> ResponseT
  • added: method ManagementCommands.latency_latest() -> ResponseT
  • added: method ManagementCommands.latency_reset(*events: str) -> ResponseT
  • added: method ManagementCommands.lolwut(*version_numbers: Union[str, float], **kwargs) -> ResponseT
  • added: method ManagementCommands.memory_doctor(**kwargs) -> None
  • added: method ManagementCommands.memory_help(**kwargs) -> None
  • added: method ManagementCommands.memory_malloc_stats(**kwargs) -> ResponseT
  • added: method ManagementCommands.memory_purge(**kwargs) -> ResponseT
  • added: method ManagementCommands.memory_stats(**kwargs) -> ResponseT
  • added: method ManagementCommands.memory_usage(key: KeyT, samples: Union[int, None]=…, **kwargs) -> ResponseT
  • added: method ManagementCommands.migrate(host: str, port: int, keys: KeysT, destination_db: int, timeout: int, copy: bool=…, replace: bool=…, auth: Union[str, None]=…, **kwargs) -> ResponseT
  • added: method ManagementCommands.object(infotype: str, key: KeyT, **kwargs) -> ResponseT
  • added: method ManagementCommands.ping(**kwargs) -> ResponseT
  • added: method ManagementCommands.psync(replicationid: str, offset: int)
  • added: method ManagementCommands.quit(**kwargs) -> ResponseT
  • added: method ManagementCommands.replicaof(*args, **kwargs) -> ResponseT
  • added: method ManagementCommands.reset() -> ResponseT
  • added: method ManagementCommands.role() -> ResponseT
  • added: method ManagementCommands.save(**kwargs) -> ResponseT
  • added: method ManagementCommands.select(index: int, **kwargs) -> ResponseT
  • added: method ManagementCommands.shutdown(save: bool=…, nosave: bool=…, now: bool=…, force: bool=…, abort: bool=…, **kwargs) -> None
  • added: method ManagementCommands.slaveof(host: Union[str, None]=…, port: Union[int, None]=…, **kwargs) -> ResponseT
  • added: method ManagementCommands.slowlog_get(num: Union[int, None]=…, **kwargs) -> ResponseT
  • added: method ManagementCommands.slowlog_len(**kwargs) -> ResponseT
  • added: method ManagementCommands.slowlog_reset(**kwargs) -> ResponseT
  • added: method ManagementCommands.swapdb(first: int, second: int, **kwargs) -> ResponseT
  • added: method ManagementCommands.sync() -> ResponseT
  • added: method ManagementCommands.time(**kwargs) -> ResponseT
  • added: method ManagementCommands.wait(num_replicas: int, timeout: int, **kwargs) -> ResponseT
  • added: method ManagementCommands.waitaof(num_local: int, num_replicas: int, timeout: int, **kwargs) -> ResponseT
  • added: method ModuleCommands.command() -> ResponseT
  • added: method ModuleCommands.command_count() -> ResponseT
  • added: method ModuleCommands.command_getkeys(*args) -> ResponseT
  • added: method ModuleCommands.command_info() -> None
  • added: method ModuleCommands.module_list() -> ResponseT
  • added: method ModuleCommands.module_load(path, *args) -> ResponseT
  • added: method ModuleCommands.module_loadex(path: str, options: Optional[List[str]]=…, args: Optional[List[str]]=…) -> ResponseT
  • added: method ModuleCommands.module_unload(name) -> ResponseT
  • added: method PubSubCommands.publish(channel: ChannelT, message: EncodableT, **kwargs) -> ResponseT
  • added: method PubSubCommands.pubsub_channels(pattern: PatternT=…, **kwargs) -> ResponseT
  • added: method PubSubCommands.pubsub_numpat(**kwargs) -> ResponseT
  • added: method PubSubCommands.pubsub_numsub(*args: ChannelT, **kwargs) -> ResponseT
  • added: method ScanCommands.hscan(name: KeyT, cursor: int=…, match: Union[PatternT, None]=…, count: Union[int, None]=…) -> ResponseT
  • added: method ScanCommands.hscan_iter(name: str, match: Union[PatternT, None]=…, count: Union[int, None]=…) -> Iterator
  • added: method ScanCommands.scan(cursor: int=…, match: Union[PatternT, None]=…, count: Union[int, None]=…, _type: Union[str, None]=…, **kwargs) -> ResponseT
  • added: method ScanCommands.scan_iter(match: Union[PatternT, None]=…, count: Union[int, None]=…, _type: Union[str, None]=…, **kwargs) -> Iterator
  • added: method ScanCommands.sscan(name: KeyT, cursor: int=…, match: Union[PatternT, None]=…, count: Union[int, None]=…) -> ResponseT
  • added: method ScanCommands.sscan_iter(name: KeyT, match: Union[PatternT, None]=…, count: Union[int, None]=…) -> Iterator
  • added: method ScanCommands.zscan(name: KeyT, cursor: int=…, match: Union[PatternT, None]=…, count: Union[int, None]=…, score_cast_func: Union[type, Callable]=…) -> ResponseT
  • added: method ScanCommands.zscan_iter(name: KeyT, match: Union[PatternT, None]=…, count: Union[int, None]=…, score_cast_func: Union[type, Callable]=…) -> Iterator
  • added: method Script.get_encoder()
  • added: method ScriptCommands.eval(script: str, numkeys: int, *keys_and_args: list) -> Union[Awaitable[str], str]
  • added: method ScriptCommands.eval_ro(script: str, numkeys: int, *keys_and_args: list) -> Union[Awaitable[str], str]
  • added: method ScriptCommands.evalsha(sha: str, numkeys: int, *keys_and_args: list) -> Union[Awaitable[str], str]
  • added: method ScriptCommands.evalsha_ro(sha: str, numkeys: int, *keys_and_args: list) -> Union[Awaitable[str], str]
  • added: method ScriptCommands.register_script(script: ScriptTextT) -> Script
  • added: method ScriptCommands.script_debug(*args) -> None
  • added: method ScriptCommands.script_exists(*args: str) -> ResponseT
  • added: method ScriptCommands.script_flush(sync_type: Union[Literal['SYNC'], Literal['ASYNC']]=…) -> ResponseT
  • added: method ScriptCommands.script_kill() -> ResponseT
  • added: method ScriptCommands.script_load(script: ScriptTextT) -> ResponseT
  • added: method SetCommands.sadd(name: str, *values: FieldT) -> Union[Awaitable[int], int]
  • added: method SetCommands.scard(name: str) -> Union[Awaitable[int], int]
  • added: method SetCommands.sdiff(keys: List, *args: List) -> Union[Awaitable[list], list]
  • added: method SetCommands.sdiffstore(dest: str, keys: List, *args: List) -> Union[Awaitable[int], int]
  • added: method SetCommands.sinter(keys: List, *args: List) -> Union[Awaitable[list], list]
  • added: method SetCommands.sintercard(numkeys: int, keys: List[str], limit: int=…) -> Union[Awaitable[int], int]
  • added: method SetCommands.sinterstore(dest: str, keys: List, *args: List) -> Union[Awaitable[int], int]
  • added: method SetCommands.sismember(name: str, value: str) -> Union[Awaitable[bool], bool]
  • added: method SetCommands.smembers(name: str) -> Union[Awaitable[Set], Set]
  • added: method SetCommands.smismember(name: str, values: List, *args: List) -> Union[Awaitable[List[Union[Literal[0], Literal[1]]]], List[Union[Literal[0], Literal[1]]]]
  • added: method SetCommands.smove(src: str, dst: str, value: str) -> Union[Awaitable[bool], bool]
  • added: method SetCommands.spop(name: str, count: Optional[int]=…) -> Union[str, List, None]
  • added: method SetCommands.srandmember(name: str, number: Optional[int]=…) -> Union[str, List, None]
  • added: method SetCommands.srem(name: str, *values: FieldT) -> Union[Awaitable[int], int]
  • added: method SetCommands.sunion(keys: List, *args: List) -> Union[Awaitable[List], List]
  • added: method SetCommands.sunionstore(dest: str, keys: List, *args: List) -> Union[Awaitable[int], int]
  • added: method SortedSetCommands.bzmpop(timeout: float, numkeys: int, keys: List[str], min: Optional[bool]=…, max: Optional[bool]=…, count: Optional[int]=…) -> Optional[list]
  • added: method SortedSetCommands.bzpopmax(keys: KeysT, timeout: TimeoutSecT=…) -> ResponseT
  • added: method SortedSetCommands.bzpopmin(keys: KeysT, timeout: TimeoutSecT=…) -> ResponseT
  • added: method SortedSetCommands.zadd(name: KeyT, mapping: Mapping[AnyKeyT, EncodableT], nx: bool=…, xx: bool=…, ch: bool=…, incr: bool=…, gt: bool=…, lt: bool=…) -> ResponseT
  • added: method SortedSetCommands.zcard(name: KeyT) -> ResponseT
  • added: method SortedSetCommands.zcount(name: KeyT, min: ZScoreBoundT, max: ZScoreBoundT) -> ResponseT
  • added: method SortedSetCommands.zdiff(keys: KeysT, withscores: bool=…) -> ResponseT
  • added: method SortedSetCommands.zdiffstore(dest: KeyT, keys: KeysT) -> ResponseT
  • added: method SortedSetCommands.zincrby(name: KeyT, amount: float, value: EncodableT) -> ResponseT
  • added: method SortedSetCommands.zinter(keys: KeysT, aggregate: Union[str, None]=…, withscores: bool=…) -> ResponseT
  • added: method SortedSetCommands.zintercard(numkeys: int, keys: List[str], limit: int=…) -> Union[Awaitable[int], int]
  • added: method SortedSetCommands.zinterstore(dest: KeyT, keys: Union[Sequence[KeyT], Mapping[AnyKeyT, float]], aggregate: Union[str, None]=…) -> ResponseT
  • added: method SortedSetCommands.zlexcount(name, min, max)
  • added: method SortedSetCommands.zmpop(num_keys: int, keys: List[str], min: Optional[bool]=…, max: Optional[bool]=…, count: Optional[int]=…) -> Union[Awaitable[list], list]
  • added: method SortedSetCommands.zmscore(key: KeyT, members: List[str]) -> ResponseT
  • added: method SortedSetCommands.zpopmax(name: KeyT, count: Union[int, None]=…) -> ResponseT
  • added: method SortedSetCommands.zpopmin(name: KeyT, count: Union[int, None]=…) -> ResponseT
  • added: method SortedSetCommands.zrandmember(key: KeyT, count: int=…, withscores: bool=…) -> ResponseT
  • added: method SortedSetCommands.zrange(name: KeyT, start: int, end: int, desc: bool=…, withscores: bool=…, score_cast_func: Union[type, Callable]=…, byscore: bool=…, bylex: bool=…, offset: int=…, num: int=…) -> ResponseT
  • added: method SortedSetCommands.zrangebylex(name: KeyT, min: EncodableT, max: EncodableT, start: Union[int, None]=…, num: Union[int, None]=…) -> ResponseT
  • added: method SortedSetCommands.zrangebyscore(name: KeyT, min: ZScoreBoundT, max: ZScoreBoundT, start: Union[int, None]=…, num: Union[int, None]=…, withscores: bool=…, score_cast_func: Union[type, Callable]=…) -> ResponseT
  • added: method SortedSetCommands.zrangestore(dest: KeyT, name: KeyT, start: int, end: int, byscore: bool=…, bylex: bool=…, desc: bool=…, offset: Union[int, None]=…, num: Union[int, None]=…) -> ResponseT
  • added: method SortedSetCommands.zrank(name: KeyT, value: EncodableT, withscore: bool=…) -> ResponseT
  • added: method SortedSetCommands.zrem(name: KeyT, *values: FieldT) -> ResponseT
  • added: method SortedSetCommands.zremrangebylex(name: KeyT, min: EncodableT, max: EncodableT) -> ResponseT
  • added: method SortedSetCommands.zremrangebyrank(name: KeyT, min: int, max: int) -> ResponseT
  • added: method SortedSetCommands.zremrangebyscore(name: KeyT, min: ZScoreBoundT, max: ZScoreBoundT) -> ResponseT
  • added: method SortedSetCommands.zrevrange(name: KeyT, start: int, end: int, withscores: bool=…, score_cast_func: Union[type, Callable]=…) -> ResponseT
  • added: method SortedSetCommands.zrevrangebylex(name: KeyT, max: EncodableT, min: EncodableT, start: Union[int, None]=…, num: Union[int, None]=…) -> ResponseT
  • added: method SortedSetCommands.zrevrangebyscore(name: KeyT, max: ZScoreBoundT, min: ZScoreBoundT, start: Union[int, None]=…, num: Union[int, None]=…, withscores: bool=…, score_cast_func: Union[type, Callable]=…)
  • added: method SortedSetCommands.zrevrank(name: KeyT, value: EncodableT, withscore: bool=…) -> ResponseT
  • added: method SortedSetCommands.zscore(name: KeyT, value: EncodableT) -> ResponseT
  • added: method SortedSetCommands.zunion(keys: Union[Sequence[KeyT], Mapping[AnyKeyT, float]], aggregate: Union[str, None]=…, withscores: bool=…) -> ResponseT
  • added: method SortedSetCommands.zunionstore(dest: KeyT, keys: Union[Sequence[KeyT], Mapping[AnyKeyT, float]], aggregate: Union[str, None]=…) -> ResponseT
  • added: method StreamCommands.xack(name: KeyT, groupname: GroupT, *ids: StreamIdT) -> ResponseT
  • added: method StreamCommands.xadd(name: KeyT, fields: Dict[FieldT, EncodableT], id: StreamIdT=…, maxlen: Union[int, None]=…, approximate: bool=…, nomkstream: bool=…, minid: Union[StreamIdT, None]=…, limit: Union[int, None]=…) -> ResponseT
  • added: method StreamCommands.xautoclaim(name: KeyT, groupname: GroupT, consumername: ConsumerT, min_idle_time: int, start_id: StreamIdT=…, count: Union[int, None]=…, justid: bool=…) -> ResponseT
  • added: method StreamCommands.xclaim(name: KeyT, groupname: GroupT, consumername: ConsumerT, min_idle_time: int, message_ids: Union[List[StreamIdT], Tuple[StreamIdT]], idle: Union[int, None]=…, time: Union[int, None]=…, retrycount: Union[int, None]=…, force: bool=…, justid: bool=…) -> ResponseT
  • added: method StreamCommands.xdel(name: KeyT, *ids: StreamIdT) -> ResponseT
  • added: method StreamCommands.xgroup_create(name: KeyT, groupname: GroupT, id: StreamIdT=…, mkstream: bool=…, entries_read: Optional[int]=…) -> ResponseT
  • added: method StreamCommands.xgroup_createconsumer(name: KeyT, groupname: GroupT, consumername: ConsumerT) -> ResponseT
  • added: method StreamCommands.xgroup_delconsumer(name: KeyT, groupname: GroupT, consumername: ConsumerT) -> ResponseT
  • added: method StreamCommands.xgroup_destroy(name: KeyT, groupname: GroupT) -> ResponseT
  • added: method StreamCommands.xgroup_setid(name: KeyT, groupname: GroupT, id: StreamIdT, entries_read: Optional[int]=…) -> ResponseT
  • added: method StreamCommands.xinfo_consumers(name: KeyT, groupname: GroupT) -> ResponseT
  • added: method StreamCommands.xinfo_groups(name: KeyT) -> ResponseT
  • added: method StreamCommands.xinfo_stream(name: KeyT, full: bool=…) -> ResponseT
  • added: method StreamCommands.xlen(name: KeyT) -> ResponseT
  • added: method StreamCommands.xpending(name: KeyT, groupname: GroupT) -> ResponseT
  • added: method StreamCommands.xpending_range(name: KeyT, groupname: GroupT, min: StreamIdT, max: StreamIdT, count: int, consumername: Union[ConsumerT, None]=…, idle: Union[int, None]=…) -> ResponseT
  • added: method StreamCommands.xrange(name: KeyT, min: StreamIdT=…, max: StreamIdT=…, count: Union[int, None]=…) -> ResponseT
  • added: method StreamCommands.xread(streams: Dict[KeyT, StreamIdT], count: Union[int, None]=…, block: Union[int, None]=…) -> ResponseT
  • added: method StreamCommands.xreadgroup(groupname: str, consumername: str, streams: Dict[KeyT, StreamIdT], count: Union[int, None]=…, block: Union[int, None]=…, noack: bool=…) -> ResponseT
  • added: method StreamCommands.xrevrange(name: KeyT, max: StreamIdT=…, min: StreamIdT=…, count: Union[int, None]=…) -> ResponseT
  • added: method StreamCommands.xtrim(name: KeyT, maxlen: Union[int, None]=…, approximate: bool=…, minid: Union[StreamIdT, None]=…, limit: Union[int, None]=…) -> ResponseT
  • added: property BitFieldOperation.command
  • added: variable AsyncACLCommands
  • added: variable AsyncClusterCommands
  • added: variable AsyncFunctionCommands
  • added: variable AsyncGeoCommands
  • added: variable AsyncHashCommands
  • added: variable AsyncHyperlogCommands
  • added: variable AsyncListCommands
  • added: variable AsyncManagementCommands
  • added: variable AsyncPubSubCommands
  • added: variable AsyncSetCommands
  • added: variable AsyncSortedSetCommands
  • added: variable AsyncStreamCommands
  • added: variable ResponseT
  • added: async method AsyncGraph.call_procedure(procedure, *args, read_only=…, **kwagrs)
  • added: async method AsyncGraph.get_label(idx)
  • added: async method AsyncGraph.get_property(idx)
  • added: async method AsyncGraph.get_relation(idx)
  • added: async method AsyncGraph.labels()
  • added: async method AsyncGraph.property_keys()
  • added: async method AsyncGraph.relationship_types()
  • added: class AsyncGraph(Graph, AsyncGraphCommands)
  • added: class Graph(GraphCommands)
  • added: constructor Graph(client, name=…)
  • added: export AsyncGraphCommands
  • added: export Edge
  • added: export GraphCommands
  • added: export Node
  • added: export Path
  • added: export quote_string
  • added: export random_string
  • added: export stringify_param_value
  • added: method Graph.add_edge(edge)
  • added: method Graph.add_node(node)
  • added: method Graph.call_procedure(procedure, *args, read_only=…, **kwagrs)
  • added: method Graph.get_label(idx)
  • added: method Graph.get_property(idx)
  • added: method Graph.get_relation(idx)
  • added: method Graph.labels()
  • added: method Graph.property_keys()
  • added: method Graph.relationship_types()
  • added: property Graph.name
  • added: variable DB_LABELS
  • added: variable DB_PROPERTYKEYS
  • added: variable DB_RAELATIONSHIPTYPES
  • added: async method AsyncGraphCommands.execution_plan(query, params=…)
  • added: async method AsyncGraphCommands.explain(query, params=…)
  • added: async method AsyncGraphCommands.flush()
  • added: async method AsyncGraphCommands.query(q, params=…, timeout=…, read_only=…, profile=…)
  • added: class AsyncGraphCommands(GraphCommands)
  • added: class GraphCommands
  • added: method GraphCommands.bulk(**kwargs)
  • added: method GraphCommands.commit()
  • added: method GraphCommands.config(name, value=…, set=…)
  • added: method GraphCommands.delete()
  • added: method GraphCommands.execution_plan(query, params=…)
  • added: method GraphCommands.explain(query, params=…)
  • added: method GraphCommands.flush()
  • added: method GraphCommands.list_keys()
  • added: method GraphCommands.merge(pattern)
  • added: method GraphCommands.profile(query)
  • added: method GraphCommands.query(q, params=…, timeout=…, read_only=…, profile=…)
  • added: method GraphCommands.slowlog()
  • added: variable CONFIG_CMD
  • added: variable DELETE_CMD
  • added: variable EXPLAIN_CMD
  • added: variable LIST_CMD
  • added: variable PROFILE_CMD
  • added: variable QUERY_CMD
  • added: variable RO_QUERY_CMD
  • added: variable SLOWLOG_CMD
  • added: class Edge
  • added: constructor Edge(src_node, relation, dest_node, edge_id=…, properties=…)
  • added: method Edge.to_string()
  • added: class VersionMismatchException(Exception)
  • added: constructor VersionMismatchException(version)
  • added: class ExecutionPlan
  • added: class Operation
  • added: class ProfileStats
  • added: constructor ExecutionPlan(plan)
  • added: constructor Operation(name, args=…, profile_stats=…)
  • added: constructor ProfileStats(records_produced, execution_time)
  • added: method Operation.append_child(child)
  • added: method Operation.child_count()
  • added: class Node
  • added: constructor Node(node_id=…, alias=…, label=…, properties=…)
  • added: method Node.to_string()
  • added: class Path
  • added: constructor Path(nodes, edges)
  • added: method Path.add_edge(edge)
  • added: method Path.add_node(node)
  • added: method Path.edge_count()
  • added: method Path.edges()
  • added: method Path.first_node()
  • added: method Path.get_node(index)
  • added: method Path.get_relationship(index)
  • added: method Path.last_node()
  • added: method Path.nodes()
  • added: method Path.nodes_count()
  • added: static method Path.new_empty_path()
  • added: async method AsyncQueryResult.initialize(graph, response, profile=…)
  • added: async method AsyncQueryResult.parse_array(value)
  • added: async method AsyncQueryResult.parse_edge(cell)
  • added: async method AsyncQueryResult.parse_entity_properties(props)
  • added: async method AsyncQueryResult.parse_map(cell)
  • added: async method AsyncQueryResult.parse_node(cell)
  • added: async method AsyncQueryResult.parse_path(cell)
  • added: async method AsyncQueryResult.parse_records(raw_result_set)
  • added: async method AsyncQueryResult.parse_results(raw_result_set)
  • added: async method AsyncQueryResult.parse_scalar(cell)
  • added: class AsyncQueryResult(QueryResult)
  • added: class QueryResult
  • added: class ResultSetColumnTypes
  • added: class ResultSetScalarTypes
  • added: constructor AsyncQueryResult()
  • added: constructor QueryResult(graph, response, profile=…)
  • added: field ResultSetColumnTypes.COLUMN_NODE
  • added: field ResultSetColumnTypes.COLUMN_RELATION
  • added: field ResultSetColumnTypes.COLUMN_SCALAR
  • added: field ResultSetColumnTypes.COLUMN_UNKNOWN
  • added: field ResultSetScalarTypes.VALUE_ARRAY
  • added: field ResultSetScalarTypes.VALUE_BOOLEAN
  • added: field ResultSetScalarTypes.VALUE_DOUBLE
  • added: field ResultSetScalarTypes.VALUE_EDGE
  • added: field ResultSetScalarTypes.VALUE_INTEGER
  • added: field ResultSetScalarTypes.VALUE_MAP
  • added: field ResultSetScalarTypes.VALUE_NODE
  • added: field ResultSetScalarTypes.VALUE_NULL
  • added: field ResultSetScalarTypes.VALUE_PATH
  • added: field ResultSetScalarTypes.VALUE_POINT
  • added: field ResultSetScalarTypes.VALUE_STRING
  • added: field ResultSetScalarTypes.VALUE_UNKNOWN
  • added: method QueryResult.is_empty()
  • added: method QueryResult.parse_array(value)
  • added: method QueryResult.parse_boolean(value)
  • added: method QueryResult.parse_double(cell)
  • added: method QueryResult.parse_edge(cell)
  • added: method QueryResult.parse_entity_properties(props)
  • added: method QueryResult.parse_header(raw_result_set)
  • added: method QueryResult.parse_integer(cell)
  • added: method QueryResult.parse_map(cell)
  • added: method QueryResult.parse_node(cell)
  • added: method QueryResult.parse_null(cell)
  • added: method QueryResult.parse_path(cell)
  • added: method QueryResult.parse_point(cell)
  • added: method QueryResult.parse_profile(response)
  • added: method QueryResult.parse_records(raw_result_set)
  • added: method QueryResult.parse_results(raw_result_set)
  • added: method QueryResult.parse_scalar(cell)
  • added: method QueryResult.parse_statistics(raw_statistics)
  • added: method QueryResult.parse_string(cell)
  • added: method QueryResult.parse_unknown(cell)
  • added: property QueryResult.cached_execution
  • added: property QueryResult.indices_created
  • added: property QueryResult.indices_deleted
  • added: property QueryResult.labels_added
  • added: property QueryResult.labels_removed
  • added: property QueryResult.nodes_created
  • added: property QueryResult.nodes_deleted
  • added: property QueryResult.parse_record_types
  • added: property QueryResult.parse_scalar_types
  • added: property QueryResult.properties_removed
  • added: property QueryResult.properties_set
  • added: property QueryResult.relationships_created
  • added: property QueryResult.relationships_deleted
  • added: property QueryResult.run_time_ms
  • added: variable CACHED_EXECUTION
  • added: variable INDICES_CREATED
  • added: variable INDICES_DELETED
  • added: variable INTERNAL_EXECUTION_TIME
  • added: variable LABELS_ADDED
  • added: variable LABELS_REMOVED
  • added: variable NODES_CREATED
  • added: variable NODES_DELETED
  • added: variable PROPERTIES_REMOVED
  • added: variable PROPERTIES_SET
  • added: variable RELATIONSHIPS_CREATED
  • added: variable RELATIONSHIPS_DELETED
  • added: variable STATS
  • added: function decode_dict_keys(obj)
  • added: function delist(x)
  • added: function list_or_args(keys: KeysT, args: Tuple[KeyT, ...]) -> List[KeyT]
  • added: function nativestr(x)
  • added: function parse_list_to_dict(response)
  • added: function parse_to_dict(response)
  • added: function parse_to_list(response)
  • added: function quote_string(v)
  • added: function random_string(length=…)
  • added: function stringify_param_value(value)
  • added: class ClusterPipeline(JSONCommands, redis.cluster.ClusterPipeline)
  • added: class JSON(JSONCommands)
  • added: class Pipeline(JSONCommands, redis.client.Pipeline)
  • added: constructor JSON(client, version=…, decoder=…, encoder=…)
  • added: export JSONCommands
  • added: export bulk_of_jsons
  • added: export decode_list
  • added: export nativestr
  • added: export redis
  • added: method JSON.pipeline(transaction=…, shard_hint=…)
  • added: class JSONCommands
  • added: field JSONCommands.forget
  • added: method JSONCommands.arrappend(name: str, path: Optional[str]=…, *args: List[JsonType]) -> List[Union[int, None]]
  • added: method JSONCommands.arrindex(name: str, path: str, scalar: int, start: Optional[int]=…, stop: Optional[int]=…) -> List[Union[int, None]]
  • added: method JSONCommands.arrinsert(name: str, path: str, index: int, *args: List[JsonType]) -> List[Union[int, None]]
  • added: method JSONCommands.arrlen(name: str, path: Optional[str]=…) -> List[Union[int, None]]
  • added: method JSONCommands.arrpop(name: str, path: Optional[str]=…, index: Optional[int]=…) -> List[Union[str, None]]
  • added: method JSONCommands.arrtrim(name: str, path: str, start: int, stop: int) -> List[Union[int, None]]
  • added: method JSONCommands.clear(name: str, path: Optional[str]=…) -> int
  • added: method JSONCommands.debug(subcommand: str, key: Optional[str]=…, path: Optional[str]=…) -> Union[int, List[str]]
  • added: method JSONCommands.delete(key: str, path: Optional[str]=…) -> int
  • added: method JSONCommands.get(name: str, *args, no_escape: Optional[bool]=…) -> List[JsonType]
  • added: method JSONCommands.jsonget(*args, **kwargs)
  • added: method JSONCommands.jsonmget(*args, **kwargs)
  • added: method JSONCommands.jsonset(*args, **kwargs)
  • added: method JSONCommands.merge(name: str, path: str, obj: JsonType, decode_keys: Optional[bool]=…) -> Optional[str]
  • added: method JSONCommands.mget(keys: List[str], path: str) -> List[JsonType]
  • added: method JSONCommands.mset(triplets: List[Tuple[str, str, JsonType]]) -> Optional[str]
  • added: method JSONCommands.numincrby(name: str, path: str, number: int) -> str
  • added: method JSONCommands.nummultby(name: str, path: str, number: int) -> str
  • added: method JSONCommands.objkeys(name: str, path: Optional[str]=…) -> List[Union[List[str], None]]
  • added: method JSONCommands.objlen(name: str, path: Optional[str]=…) -> int
  • added: method JSONCommands.resp(name: str, path: Optional[str]=…) -> List
  • added: method JSONCommands.set(name: str, path: str, obj: JsonType, nx: Optional[bool]=…, xx: Optional[bool]=…, decode_keys: Optional[bool]=…) -> Optional[str]
  • added: method JSONCommands.set_file(name: str, path: str, file_name: str, nx: Optional[bool]=…, xx: Optional[bool]=…, decode_keys: Optional[bool]=…) -> Optional[str]
  • added: method JSONCommands.set_path(json_path: str, root_folder: str, nx: Optional[bool]=…, xx: Optional[bool]=…, decode_keys: Optional[bool]=…) -> List[Dict[str, bool]]
  • added: method JSONCommands.strappend(name: str, value: str, path: Optional[int]=…) -> Union[int, List[Optional[int]]]
  • added: method JSONCommands.strlen(name: str, path: Optional[str]=…) -> List[Union[int, None]]
  • added: method JSONCommands.toggle(name: str, path: Optional[str]=…) -> Union[bool, List[Optional[int]]]
  • added: method JSONCommands.type(name: str, path: Optional[str]=…) -> List[str]
  • added: function bulk_of_jsons(d)
  • added: function decode_dict_keys(obj)
  • added: function decode_list(b)
  • added: function unstring(obj)
  • added: class Path
  • added: constructor Path(path)
  • added: field Path.strPath
  • added: static method Path.root_path()
  • added: class CommandsParser
  • added: constructor CommandsParser(redis_connection)
  • added: method CommandsParser.get_keys(redis_conn, *args)
  • added: method CommandsParser.initialize(r)
  • added: method CommandsParser.parse_subcommand(command, **options)
  • added: class AsyncRedisModuleCommands(RedisModuleCommands)
  • added: class RedisModuleCommands
  • added: method AsyncRedisModuleCommands.ft(index_name=…)
  • added: method AsyncRedisModuleCommands.graph(index_name=…)
  • added: method RedisModuleCommands.bf()
  • added: method RedisModuleCommands.cf()
  • added: method RedisModuleCommands.cms()
  • added: method RedisModuleCommands.ft(index_name=…)
  • added: method RedisModuleCommands.graph(index_name=…)
  • added: method RedisModuleCommands.json(encoder=…, decoder=…)
  • added: method RedisModuleCommands.tdigest()
  • added: method RedisModuleCommands.topk()
  • added: method RedisModuleCommands.ts()
  • added: async method AsyncSearch.BatchIndexer.add_document(doc_id, nosave=…, score=…, payload=…, replace=…, partial=…, no_create=…, **fields)
  • added: async method AsyncSearch.BatchIndexer.commit()
  • added: class AsyncPipeline(AsyncSearchCommands, AsyncioPipeline, Pipeline)
  • added: class AsyncSearch(Search, AsyncSearchCommands)
  • added: class AsyncSearch.BatchIndexer(Search.BatchIndexer)
  • added: class Pipeline(SearchCommands, redis.client.Pipeline)
  • added: class Search(SearchCommands)
  • added: class Search.BatchIndexer
  • added: constructor Search(client, index_name=…)
  • added: constructor Search.BatchIndexer(client, chunk_size=…)
  • added: export AsyncSearchCommands
  • added: export AsyncioPipeline
  • added: export SearchCommands
  • added: export redis
  • added: method AsyncSearch.pipeline(transaction=…, shard_hint=…)
  • added: method Search.BatchIndexer.add_document(doc_id, nosave=…, score=…, payload=…, replace=…, partial=…, no_create=…, **fields)
  • added: method Search.BatchIndexer.add_document_hash(doc_id, score=…, replace=…)
  • added: method Search.BatchIndexer.commit()
  • added: method Search.pipeline(transaction=…, shard_hint=…)
  • added: class AggregateRequest
  • added: class AggregateResult
  • added: class Asc(SortDirection)
  • added: class Cursor
  • added: class Desc(SortDirection)
  • added: class Limit
  • added: class Reducer
  • added: class SortDirection
  • added: constructor AggregateRequest(query=…)
  • added: constructor AggregateResult(rows, cursor, schema)
  • added: constructor Cursor(cid)
  • added: constructor Limit(offset=…, count=…)
  • added: constructor Reducer(*args)
  • added: constructor SortDirection(field)
  • added: field Asc.DIRSTRING
  • added: field Desc.DIRSTRING
  • added: field Reducer.NAME
  • added: field SortDirection.DIRSTRING
  • added: method AggregateRequest.apply(**kwexpr)
  • added: method AggregateRequest.build_args()
  • added: method AggregateRequest.cursor(count=…, max_idle=…)
  • added: method AggregateRequest.dialect(dialect)
  • added: method AggregateRequest.filter(expressions)
  • added: method AggregateRequest.group_by(fields, *reducers)
  • added: method AggregateRequest.limit(offset, num)
  • added: method AggregateRequest.load(*fields)
  • added: method AggregateRequest.sort_by(*fields, **kwargs)
  • added: method AggregateRequest.verbatim()
  • added: method AggregateRequest.with_schema()
  • added: method Cursor.build_args()
  • added: method Limit.build_args()
  • added: method Reducer.alias(alias)
  • added: property Reducer.args
  • added: variable FIELDNAME
  • added: async method AsyncSearchCommands.aggregate(query: Union[str, Query], query_params: Dict[str, Union[str, int, float]]=…)
  • added: async method AsyncSearchCommands.config_get(option)
  • added: async method AsyncSearchCommands.config_set(option, value)
  • added: async method AsyncSearchCommands.info()
  • added: async method AsyncSearchCommands.load_document(id)
  • added: async method AsyncSearchCommands.search(query: Union[str, Query], query_params: Dict[str, Union[str, int, float]]=…)
  • added: async method AsyncSearchCommands.spellcheck(query, distance=…, include=…, exclude=…)
  • added: async method AsyncSearchCommands.sugadd(key, *suggestions, **kwargs)
  • added: async method AsyncSearchCommands.sugget(key, prefix, fuzzy=…, num=…, with_scores=…, with_payloads=…)
  • added: class AsyncSearchCommands(SearchCommands)
  • added: class SearchCommands
  • added: method SearchCommands.add_document(doc_id, nosave=…, score=…, payload=…, replace=…, partial=…, language=…, no_create=…, **fields)
  • added: method SearchCommands.add_document_hash(doc_id, score=…, language=…, replace=…)
  • added: method SearchCommands.aggregate(query: Union[str, Query], query_params: Dict[str, Union[str, int, float]]=…)
  • added: method SearchCommands.aliasadd(alias)
  • added: method SearchCommands.aliasdel(alias)
  • added: method SearchCommands.aliasupdate(alias)
  • added: method SearchCommands.alter_schema_add(fields)
  • added: method SearchCommands.batch_indexer(chunk_size=…)
  • added: method SearchCommands.config_get(option)
  • added: method SearchCommands.config_set(option, value)
  • added: method SearchCommands.create_index(fields, no_term_offsets=…, no_field_flags=…, stopwords=…, definition=…, max_text_fields=…, temporary=…, no_highlight=…, no_term_frequencies=…, skip_initial_scan=…)
  • added: method SearchCommands.delete_document(doc_id, conn=…, delete_actual_document=…)
  • added: method SearchCommands.dict_add(name, *terms)
  • added: method SearchCommands.dict_del(name, *terms)
  • added: method SearchCommands.dict_dump(name)
  • added: method SearchCommands.dropindex(delete_documents=…)
  • added: method SearchCommands.explain(query: Union[str, Query], query_params: Dict[str, Union[str, int, float]]=…)
  • added: method SearchCommands.explain_cli(query: Union[str, Query])
  • added: method SearchCommands.get(*ids)
  • added: method SearchCommands.get_params_args(query_params: Union[Dict[str, Union[str, int, float]], None])
  • added: method SearchCommands.info()
  • added: method SearchCommands.load_document(id)
  • added: method SearchCommands.profile(query: Union[str, Query, AggregateRequest], limited: bool=…, query_params: Optional[Dict[str, Union[str, int, float]]]=…)
  • added: method SearchCommands.search(query: Union[str, Query], query_params: Dict[str, Union[str, int, float]]=…)
  • added: method SearchCommands.spellcheck(query, distance=…, include=…, exclude=…)
  • added: method SearchCommands.sugadd(key, *suggestions, **kwargs)
  • added: method SearchCommands.sugdel(key, string)
  • added: method SearchCommands.sugget(key, prefix, fuzzy=…, num=…, with_scores=…, with_payloads=…)
  • added: method SearchCommands.suglen(key)
  • added: method SearchCommands.syndump()
  • added: method SearchCommands.synupdate(groupid, skipinitial=…, *terms)
  • added: method SearchCommands.tagvals(tagfield)
  • added: variable ADDHASH_CMD
  • added: variable ADD_CMD
  • added: variable AGGREGATE_CMD
  • added: variable ALIAS_ADD_CMD
  • added: variable ALIAS_DEL_CMD
  • added: variable ALIAS_UPDATE_CMD
  • added: variable ALTER_CMD
  • added: variable CONFIG_CMD
  • added: variable CREATE_CMD
  • added: variable CURSOR_CMD
  • added: variable DEL_CMD
  • added: variable DICT_ADD_CMD
  • added: variable DICT_DEL_CMD
  • added: variable DICT_DUMP_CMD
  • added: variable DROPINDEX_CMD
  • added: variable DROP_CMD
  • added: variable EXPLAINCLI_CMD
  • added: variable EXPLAIN_CMD
  • added: variable FUZZY
  • added: variable GET_CMD
  • added: variable INFO_CMD
  • added: variable MAXTEXTFIELDS
  • added: variable MGET_CMD
  • added: variable NOFIELDS
  • added: variable NOFREQS
  • added: variable NOHL
  • added: variable NOOFFSETS
  • added: variable NUMERIC
  • added: variable PROFILE_CMD
  • added: variable SEARCH_CMD
  • added: variable SKIPINITIALSCAN
  • added: variable SPELLCHECK_CMD
  • added: variable STOPWORDS
  • added: variable SUGADD_COMMAND
  • added: variable SUGDEL_COMMAND
  • added: variable SUGGET_COMMAND
  • added: variable SUGLEN_COMMAND
  • added: variable SYNDUMP_CMD
  • added: variable SYNUPDATE_CMD
  • added: variable TAGVALS_CMD
  • added: variable TEMPORARY
  • added: variable WITHPAYLOADS
  • added: variable WITHSCORES
  • added: class Document
  • added: constructor Document(id, payload=…, **fields)
  • added: class Field
  • added: class GeoField(Field)
  • added: class NumericField(Field)
  • added: class TagField(Field)
  • added: class TextField(Field)
  • added: class VectorField(Field)
  • added: constructor Field(name: str, args: List[str]=…, sortable: bool=…, no_index: bool=…, as_name: str=…)
  • added: constructor GeoField(name: str, **kwargs)
  • added: constructor NumericField(name: str, **kwargs)
  • added: constructor TagField(name: str, separator: str=…, case_sensitive: bool=…, withsuffixtrie: bool=…, **kwargs)
  • added: constructor TextField(name: str, weight: float=…, no_stem: bool=…, phonetic_matcher: str=…, withsuffixtrie: bool=…, **kwargs)
  • added: constructor VectorField(name: str, algorithm: str, attributes: dict, **kwargs)
  • added: field Field.AS
  • added: field Field.GEO
  • added: field Field.NOINDEX
  • added: field Field.NUMERIC
  • added: field Field.SORTABLE
  • added: field Field.TAG
  • added: field Field.TEXT
  • added: field Field.VECTOR
  • added: field Field.WEIGHT
  • added: field TagField.CASESENSITIVE
  • added: field TagField.SEPARATOR
  • added: field TextField.NOSTEM
  • added: field TextField.PHONETIC
  • added: method Field.append_arg(value)
  • added: method Field.redis_args()
  • added: class IndexDefinition
  • added: class IndexType(Enum)
  • added: constructor IndexDefinition(prefix=…, filter=…, language_field=…, language=…, score_field=…, score=…, payload_field=…, index_type=…)
  • added: field IndexType.HASH
  • added: field IndexType.JSON
  • added: class Filter
  • added: class GeoFilter(Filter)
  • added: class NumericFilter(Filter)
  • added: class Query
  • added: class SortbyField
  • added: constructor Filter(keyword, field, *args)
  • added: constructor GeoFilter(field, lon, lat, radius, unit=…)
  • added: constructor NumericFilter(field, minval, maxval, minExclusive=…, maxExclusive=…)
  • added: constructor Query(query_string)
  • added: constructor SortbyField(field, asc=…)
  • added: field GeoFilter.FEET
  • added: field GeoFilter.KILOMETERS
  • added: field GeoFilter.METERS
  • added: field GeoFilter.MILES
  • added: field NumericFilter.INF
  • added: field NumericFilter.NEG_INF
  • added: method Query.add_filter(flt)
  • added: method Query.dialect(dialect: int) -> Query
  • added: method Query.expander(expander)
  • added: method Query.get_args()
  • added: method Query.highlight(fields=…, tags=…)
  • added: method Query.in_order()
  • added: method Query.language(language)
  • added: method Query.limit_fields(*fields)
  • added: method Query.limit_ids(*ids)
  • added: method Query.no_content()
  • added: method Query.no_stopwords()
  • added: method Query.paging(offset, num)
  • added: method Query.query_string()
  • added: method Query.return_field(field, as_field=…)
  • added: method Query.return_fields(*fields)
  • added: method Query.scorer(scorer)
  • added: method Query.slop(slop)
  • added: method Query.sort_by(field, asc=…)
  • added: method Query.summarize(fields=…, context_len=…, num_frags=…, sep=…)
  • added: method Query.timeout(timeout)
  • added: method Query.verbatim()
  • added: method Query.with_payloads()
  • added: method Query.with_scores()
  • added: class BaseNode(Node)
  • added: class DisjunctNode(IntersectNode)
  • added: class DistjunctUnion(DisjunctNode)
  • added: class GeoValue(Value)
  • added: class IntersectNode(Node)
  • added: class Node
  • added: class OptionalNode(IntersectNode)
  • added: class RangeValue(Value)
  • added: class ScalarValue(Value)
  • added: class TagValue(Value)
  • added: class UnionNode(Node)
  • added: class Value
  • added: constructor BaseNode(s)
  • added: constructor GeoValue(lon, lat, radius, unit=…)
  • added: constructor Node(*children, **kwparams)
  • added: constructor RangeValue(a, b, inclusive_min=…, inclusive_max=…)
  • added: constructor ScalarValue(v)
  • added: constructor TagValue(*tags)
  • added: field DistjunctUnion.JOINSTR
  • added: field IntersectNode.JOINSTR
  • added: field RangeValue.combinable
  • added: field ScalarValue.combinable
  • added: field TagValue.combinable
  • added: field UnionNode.JOINSTR
  • added: function between(a, b, inclusive_min=…, inclusive_max=…)
  • added: function disjunct(*args, **kwargs)
  • added: function disjunct_union(*args, **kwargs)
  • added: function equal(n)
  • added: function ge(n)
  • added: function geo(lat, lon, radius, unit=…)
  • added: function gt(n)
  • added: function intersect(*args, **kwargs)
  • added: function le(n)
  • added: function lt(n)
  • added: function querystring(*args, **kwargs)
  • added: function tags(*t)
  • added: function union(*args, **kwargs)
  • added: method BaseNode.to_string(with_parens=…)
  • added: method DisjunctNode.to_string(with_parens=…)
  • added: method GeoValue.to_string()
  • added: method Node.join_fields(key, vals)
  • added: method Node.to_string(with_parens=…)
  • added: method OptionalNode.to_string(with_parens=…)
  • added: method RangeValue.to_string()
  • added: method ScalarValue.to_string()
  • added: method TagValue.to_string()
  • added: method Value.to_string()
  • added: property Node.JOINSTR
  • added: property Value.combinable
  • added: static method Node.to_node(obj)
  • added: static method Value.make_value(v)
  • added: class FieldOnlyReducer(Reducer)
  • added: class avg(FieldOnlyReducer)
  • added: class count(Reducer)
  • added: class count_distinct(FieldOnlyReducer)
  • added: class count_distinctish(FieldOnlyReducer)
  • added: class first_value(Reducer)
  • added: class max(FieldOnlyReducer)
  • added: class min(FieldOnlyReducer)
  • added: class quantile(Reducer)
  • added: class random_sample(Reducer)
  • added: class stddev(FieldOnlyReducer)
  • added: class sum(FieldOnlyReducer)
  • added: class tolist(FieldOnlyReducer)
  • added: constructor FieldOnlyReducer(field)
  • added: constructor avg(field)
  • added: constructor count()
  • added: constructor count_distinct(field)
  • added: constructor first_value(field, *byfields)
  • added: constructor max(field)
  • added: constructor min(field)
  • added: constructor quantile(field, pct)
  • added: constructor random_sample(field, size)
  • added: constructor stddev(field)
  • added: constructor sum(field)
  • added: constructor tolist(field)
  • added: field avg.NAME
  • added: field count.NAME
  • added: field count_distinct.NAME
  • added: field count_distinctish.NAME
  • added: field first_value.NAME
  • added: field max.NAME
  • added: field min.NAME
  • added: field quantile.NAME
  • added: field random_sample.NAME
  • added: field stddev.NAME
  • added: field sum.NAME
  • added: field tolist.NAME
  • added: class Result
  • added: constructor Result(res, hascontent, duration=…, has_payload=…, with_scores=…)
  • added: class Suggestion
  • added: class SuggestionParser
  • added: constructor Suggestion(string, score=…, payload=…)
  • added: constructor SuggestionParser(with_scores, with_payloads, ret)
  • added: async method AsyncSentinelCommands.sentinel(*args) -> None
  • added: class AsyncSentinelCommands(SentinelCommands)
  • added: class SentinelCommands
  • added: method SentinelCommands.sentinel(*args)
  • added: method SentinelCommands.sentinel_ckquorum(new_master_name)
  • added: method SentinelCommands.sentinel_failover(new_master_name)
  • added: method SentinelCommands.sentinel_flushconfig()
  • added: method SentinelCommands.sentinel_get_master_addr_by_name(service_name)
  • added: method SentinelCommands.sentinel_master(service_name)
  • added: method SentinelCommands.sentinel_masters()
  • added: method SentinelCommands.sentinel_monitor(name, ip, port, quorum)
  • added: method SentinelCommands.sentinel_remove(name)
  • added: method SentinelCommands.sentinel_reset(pattern)
  • added: method SentinelCommands.sentinel_sentinels(service_name)
  • added: method SentinelCommands.sentinel_set(name, option, value)
  • added: method SentinelCommands.sentinel_slaves(service_name)
  • added: class ClusterPipeline(TimeSeriesCommands, redis.cluster.ClusterPipeline)
  • added: class Pipeline(TimeSeriesCommands, redis.client.Pipeline)
  • added: class TimeSeries(TimeSeriesCommands)
  • added: constructor TimeSeries(client=…, **kwargs)
  • added: export ALTER_CMD
  • added: export CREATERULE_CMD
  • added: export CREATE_CMD
  • added: export DELETERULE_CMD
  • added: export DEL_CMD
  • added: export GET_CMD
  • added: export INFO_CMD
  • added: export MGET_CMD
  • added: export MRANGE_CMD
  • added: export MREVRANGE_CMD
  • added: export QUERYINDEX_CMD
  • added: export RANGE_CMD
  • added: export REVRANGE_CMD
  • added: export TSInfo
  • added: export TimeSeriesCommands
  • added: export parse_get
  • added: export parse_m_get
  • added: export parse_m_range
  • added: export parse_range
  • added: export parse_to_list
  • added: export redis
  • added: method TimeSeries.pipeline(transaction=…, shard_hint=…)
  • added: class TimeSeriesCommands
  • added: method TimeSeriesCommands.add(key: KeyT, timestamp: Union[int, str], value: Number, retention_msecs: Optional[int]=…, uncompressed: Optional[bool]=…, labels: Optional[Dict[str, str]]=…, chunk_size: Optional[int]=…, duplicate_policy: Optional[str]=…)
  • added: method TimeSeriesCommands.alter(key: KeyT, retention_msecs: Optional[int]=…, labels: Optional[Dict[str, str]]=…, chunk_size: Optional[int]=…, duplicate_policy: Optional[str]=…)
  • added: method TimeSeriesCommands.create(key: KeyT, retention_msecs: Optional[int]=…, uncompressed: Optional[bool]=…, labels: Optional[Dict[str, str]]=…, chunk_size: Optional[int]=…, duplicate_policy: Optional[str]=…)
  • added: method TimeSeriesCommands.createrule(source_key: KeyT, dest_key: KeyT, aggregation_type: str, bucket_size_msec: int, align_timestamp: Optional[int]=…)
  • added: method TimeSeriesCommands.decrby(key: KeyT, value: Number, timestamp: Optional[Union[int, str]]=…, retention_msecs: Optional[int]=…, uncompressed: Optional[bool]=…, labels: Optional[Dict[str, str]]=…, chunk_size: Optional[int]=…)
  • added: method TimeSeriesCommands.delete(key: KeyT, from_time: int, to_time: int)
  • added: method TimeSeriesCommands.deleterule(source_key: KeyT, dest_key: KeyT)
  • added: method TimeSeriesCommands.get(key: KeyT, latest: Optional[bool]=…)
  • added: method TimeSeriesCommands.incrby(key: KeyT, value: Number, timestamp: Optional[Union[int, str]]=…, retention_msecs: Optional[int]=…, uncompressed: Optional[bool]=…, labels: Optional[Dict[str, str]]=…, chunk_size: Optional[int]=…)
  • added: method TimeSeriesCommands.info(key: KeyT)
  • added: method TimeSeriesCommands.madd(ktv_tuples: List[Tuple[KeyT, Union[int, str], Number]])
  • added: method TimeSeriesCommands.mget(filters: List[str], with_labels: Optional[bool]=…, select_labels: Optional[List[str]]=…, latest: Optional[bool]=…)
  • added: method TimeSeriesCommands.mrange(from_time: Union[int, str], to_time: Union[int, str], filters: List[str], count: Optional[int]=…, aggregation_type: Optional[str]=…, bucket_size_msec: Optional[int]=…, with_labels: Optional[bool]=…, filter_by_ts: Optional[List[int]]=…, filter_by_min_value: Optional[int]=…, filter_by_max_value: Optional[int]=…, groupby: Optional[str]=…, reduce: Optional[str]=…, sel…
  • added: method TimeSeriesCommands.mrevrange(from_time: Union[int, str], to_time: Union[int, str], filters: List[str], count: Optional[int]=…, aggregation_type: Optional[str]=…, bucket_size_msec: Optional[int]=…, with_labels: Optional[bool]=…, filter_by_ts: Optional[List[int]]=…, filter_by_min_value: Optional[int]=…, filter_by_max_value: Optional[int]=…, groupby: Optional[str]=…, reduce: Optional[str]=…,…
  • added: method TimeSeriesCommands.queryindex(filters: List[str])
  • added: method TimeSeriesCommands.range(key: KeyT, from_time: Union[int, str], to_time: Union[int, str], count: Optional[int]=…, aggregation_type: Optional[str]=…, bucket_size_msec: Optional[int]=…, filter_by_ts: Optional[List[int]]=…, filter_by_min_value: Optional[int]=…, filter_by_max_value: Optional[int]=…, align: Optional[Union[int, str]]=…, latest: Optional[bool]=…, bucket_timestamp: Optional[str]=……
  • added: method TimeSeriesCommands.revrange(key: KeyT, from_time: Union[int, str], to_time: Union[int, str], count: Optional[int]=…, aggregation_type: Optional[str]=…, bucket_size_msec: Optional[int]=…, filter_by_ts: Optional[List[int]]=…, filter_by_min_value: Optional[int]=…, filter_by_max_value: Optional[int]=…, align: Optional[Union[int, str]]=…, latest: Optional[bool]=…, bucket_timestamp: Optional[str…
  • added: variable ADD_CMD
  • added: variable ALTER_CMD
  • added: variable CREATERULE_CMD
  • added: variable CREATE_CMD
  • added: variable DECRBY_CMD
  • added: variable DELETERULE_CMD
  • added: variable DEL_CMD
  • added: variable GET_CMD
  • added: variable INCRBY_CMD
  • added: variable INFO_CMD
  • added: variable MADD_CMD
  • added: variable MGET_CMD
  • added: variable MRANGE_CMD
  • added: variable MREVRANGE_CMD
  • added: variable QUERYINDEX_CMD
  • added: variable RANGE_CMD
  • added: variable REVRANGE_CMD
  • added: class TSInfo
  • added: constructor TSInfo(args)
  • added: field TSInfo.chunk_count
  • added: field TSInfo.chunk_size
  • added: field TSInfo.duplicate_policy
  • added: field TSInfo.first_time_stamp
  • added: field TSInfo.labels
  • added: field TSInfo.last_time_stamp
  • added: field TSInfo.max_samples_per_chunk
  • added: field TSInfo.memory_usage
  • added: field TSInfo.retention_msecs
  • added: field TSInfo.rules
  • added: field TSInfo.sourceKey
  • added: field TSInfo.total_samples
  • added: function list_to_dict(aList)
  • added: function parse_get(response)
  • added: function parse_m_get(response)
  • added: function parse_m_range(response)
  • added: function parse_range(response)
  • removed: method Connection.can_read(timeout=…)
  • removed: method Connection.check_health()
  • removed: method Connection.clear_connect_callbacks()
  • removed: method Connection.connect()
  • removed: method Connection.disconnect()
  • removed: method Connection.on_connect()
  • removed: method Connection.pack_command(*args)
  • removed: method Connection.pack_commands(commands)
  • removed: method Connection.read_response()
  • removed: method Connection.register_connect_callback(callback)
  • removed: method Connection.send_command(*args, **kwargs)
  • removed: method Connection.send_packed_command(command, check_health=…)
  • removed: property SocketBuffer.length
  • removed: variable HIREDIS_SUPPORTS_BYTE_BUFFER
  • removed: variable HIREDIS_SUPPORTS_CALLABLE_ERRORS
  • removed: variable HIREDIS_SUPPORTS_ENCODING_ERRORS
  • removed: variable HIREDIS_USE_BYTE_BUFFER
  • removed: variable hiredis_version
  • removed: variable msg
  • changed: class BaseParser(object) → class BaseParser
  • changed: class Connection(object) → class Connection(AbstractConnection)
  • changed: class ConnectionPool(object) → class ConnectionPool
  • changed: class Encoder(object) → class Encoder
  • changed: class SocketBuffer(object) → class SocketBuffer
  • changed: class UnixDomainSocketConnection(Connection) → class UnixDomainSocketConnection(AbstractConnection)
  • changed: constructor Connection(host=…, port=…, db=…, password=…, socket_timeout=…, socket_connect_timeout=…, socket_keepalive=…, socket_keepalive_options=…, socket_type=…, retry_on_timeout=…, encoding=…, encoding_errors=…, decode_responses=…, parser_class=…, socket_read_size=…, health_check_interval=…, client_name=…, username=…) → constructor Connection(host=…, port=…, socket_keepalive=…, socket_keepalive_options=…, socket_type=…, **kwargs)
  • changed: constructor SSLConnection(ssl_keyfile=…, ssl_certfile=…, ssl_cert_reqs=…, ssl_ca_certs=…, ssl_check_hostname=…, **kwargs) → constructor SSLConnection(ssl_keyfile=…, ssl_certfile=…, ssl_cert_reqs=…, ssl_ca_certs=…, ssl_ca_data=…, ssl_check_hostname=…, ssl_ca_path=…, ssl_password=…, ssl_validate_ocsp=…, ssl_validate_ocsp_stapled=…, ssl_ocsp_context=…, ssl_ocsp_expected_cert=…, **kwargs)
  • changed: constructor SocketBuffer(socket, socket_read_size, socket_timeout) → constructor SocketBuffer(socket: socket.socket, socket_read_size: int, socket_timeout: float)
  • changed: constructor UnixDomainSocketConnection(path=…, db=…, username=…, password=…, socket_timeout=…, encoding=…, encoding_errors=…, decode_responses=…, retry_on_timeout=…, parser_class=…, socket_read_size=…, health_check_interval=…, client_name=…) → constructor UnixDomainSocketConnection(path=…, **kwargs)
  • changed: method BaseParser.parse_error(response) → static method BaseParser.parse_error(response)
  • changed: method HiredisParser.on_connect(connection) → method HiredisParser.on_connect(connection, **kwargs)
  • changed: method HiredisParser.read_response() → method HiredisParser.read_response(disable_decoding=…)
  • changed: method PythonParser.read_response() → method PythonParser.read_response(disable_decoding=…)
  • changed: method SocketBuffer.can_read(timeout) → method SocketBuffer.can_read(timeout: float) -> bool
  • changed: method SocketBuffer.close() → method SocketBuffer.close() -> None
  • changed: method SocketBuffer.purge() → method SocketBuffer.purge() -> None
  • changed: method SocketBuffer.read(length) → method SocketBuffer.read(length: int) -> bytes
  • changed: method SocketBuffer.readline() → method SocketBuffer.readline() -> bytes
  • changed: static method ConnectionPool.from_url(url, db=…, decode_components=…, **kwargs) → static method ConnectionPool.from_url(url, **kwargs)
  • added: class AbstractConnection
  • added: class HiredisRespSerializer
  • added: class PythonRespSerializer
  • added: constructor AbstractConnection(db=…, password=…, socket_timeout=…, socket_connect_timeout=…, retry_on_timeout=…, retry_on_error=…, encoding=…, encoding_errors=…, decode_responses=…, parser_class=…, socket_read_size=…, health_check_interval=…, client_name=…, username=…, retry=…, redis_connect_func=…, credential_provider: Optional[CredentialProvider]=…, command_packer=…)
  • added: constructor PythonRespSerializer(buffer_cutoff, encode) -> None
  • added: function parse_url(url)
  • added: method AbstractConnection.can_read(timeout=…)
  • added: method AbstractConnection.check_health()
  • added: method AbstractConnection.clear_connect_callbacks()
  • added: method AbstractConnection.connect()
  • added: method AbstractConnection.disconnect(*args)
  • added: method AbstractConnection.on_connect()
  • added: method AbstractConnection.pack_command(*args)
  • added: method AbstractConnection.pack_commands(commands)
  • added: method AbstractConnection.read_response(disable_decoding=…, *, disconnect_on_error: bool=…)
  • added: method AbstractConnection.register_connect_callback(callback)
  • added: method AbstractConnection.repr_pieces()
  • added: method AbstractConnection.send_command(*args, **kwargs)
  • added: method AbstractConnection.send_packed_command(command, check_health=…)
  • added: method AbstractConnection.set_parser(parser_class)
  • added: method ConnectionPool.set_retry(retry: Retry) -> None
  • added: method HiredisRespSerializer.pack(*args)
  • added: method PythonRespSerializer.pack(*args)
  • added: method SocketBuffer.get_pos() -> int
  • added: method SocketBuffer.rewind(pos: int) -> None
  • added: method SocketBuffer.unread_bytes() -> int
  • added: variable DefaultParser: BaseParser
  • added: variable MODULE_EXPORTS_DATA_TYPES_ERROR
  • added: variable MODULE_LOAD_ERROR
  • added: variable MODULE_UNLOAD_NOT_POSSIBLE_ERROR
  • added: variable NO_AUTH_SET_ERROR
  • added: variable NO_SUCH_MODULE_ERROR
  • added: function key_slot(key: EncodedT, bucket: int=…) -> int
  • added: variable REDIS_CLUSTER_HASH_SLOTS
  • added: class CredentialProvider
  • added: class UsernamePasswordCredentialProvider(CredentialProvider)
  • added: constructor UsernamePasswordCredentialProvider(username: Optional[str]=…, password: Optional[str]=…)
  • added: method CredentialProvider.get_credentials() -> Union[Tuple[str], Tuple[str, str]]
  • added: method UsernamePasswordCredentialProvider.get_credentials()
  • added: class AskError(ResponseError)
  • added: class AuthorizationError(ConnectionError)
  • added: class ClusterCrossSlotError(ResponseError)
  • added: class ClusterDownError(ClusterError, ResponseError)
  • added: class ClusterError(RedisError)
  • added: class MasterDownError(ClusterDownError)
  • added: class MaxConnectionsError(ConnectionError)
  • added: class ModuleError(ResponseError)
  • added: class MovedError(AskError)
  • added: class OutOfMemoryError(ResponseError)
  • added: class RedisClusterException(Exception)
  • added: class SlotNotCoveredError(RedisClusterException)
  • added: class TryAgainError(ResponseError)
  • added: constructor AskError(resp)
  • added: constructor ClusterDownError(resp)
  • added: constructor TryAgainError(*args, **kwargs)
  • added: field ClusterCrossSlotError.message
  • changed: class Lock(object) → class Lock
  • changed: constructor Lock(redis, name, timeout=…, sleep=…, blocking=…, blocking_timeout=…, thread_local=…) → constructor Lock(redis, name: str, timeout: Optional[Number]=…, sleep: Number=…, blocking: bool=…, blocking_timeout: Optional[Number]=…, thread_local: bool=…)
  • changed: method Lock.acquire(blocking=…, blocking_timeout=…, token=…) → method Lock.acquire(sleep: Optional[Number]=…, blocking: Optional[bool]=…, blocking_timeout: Optional[Number]=…, token: Optional[str]=…)
  • changed: method Lock.do_acquire(token) → method Lock.do_acquire(token: str) -> bool
  • changed: method Lock.do_extend(additional_time, replace_ttl) → method Lock.do_extend(additional_time: int, replace_ttl: bool) -> bool
  • changed: method Lock.do_reacquire() → method Lock.do_reacquire() -> bool
  • changed: method Lock.do_release(expected_token) → method Lock.do_release(expected_token: str) -> None
  • changed: method Lock.extend(additional_time, replace_ttl=…) → method Lock.extend(additional_time: int, replace_ttl: bool=…) -> bool
  • changed: method Lock.locked() → method Lock.locked() -> bool
  • changed: method Lock.owned() → method Lock.owned() -> bool
  • changed: method Lock.reacquire() → method Lock.reacquire() -> bool
  • changed: method Lock.register_scripts() → method Lock.register_scripts() -> None
  • changed: method Lock.release() → method Lock.release() -> None
  • added: class OCSPVerifier
  • added: constructor OCSPVerifier(sock, host, port, ca_certs=…)
  • added: function ocsp_staple_verifier(con, ocsp_bytes, expected=…)
  • added: method OCSPVerifier.build_certificate_url(server, cert, issuer_cert)
  • added: method OCSPVerifier.check_certificate(server, cert, issuer_url)
  • added: method OCSPVerifier.components_from_direct_connection()
  • added: method OCSPVerifier.components_from_socket()
  • added: method OCSPVerifier.is_valid()
  • added: class Retry
  • added: constructor Retry(backoff, retries, supported_errors=…)
  • added: method Retry.call_with_retry(do, fail)
  • added: method Retry.update_supported_errors(specified_errors: list)
  • changed: class Sentinel(object) → class Sentinel(SentinelCommands)
  • changed: method SentinelManagedConnection.read_response() → method SentinelManagedConnection.read_response(disable_decoding=…, *, disconnect_on_error: Optional[bool]=…)
  • added: class SentinelConnectionPoolProxy
  • added: class SentinelManagedSSLConnection(SentinelManagedConnection, SSLConnection)
  • added: constructor SentinelConnectionPoolProxy(connection_pool, is_master, check_connection, service_name, sentinel_manager)
  • added: method Sentinel.execute_command(*args, **kwargs)
  • added: method SentinelConnectionPoolProxy.get_master_address()
  • added: method SentinelConnectionPoolProxy.reset()
  • added: method SentinelConnectionPoolProxy.rotate_slaves()
  • added: property SentinelConnectionPool.master_address
  • added: class ClusterCommandsProtocol(CommandsProtocol, Protocol)
  • added: class CommandsProtocol(Protocol)
  • added: field ClusterCommandsProtocol.encoder: Union[AsyncEncoder, Encoder]
  • added: field CommandsProtocol.connection_pool: Union[AsyncConnectionPool, ConnectionPool]
  • added: method ClusterCommandsProtocol.execute_command(*args, **options) -> Union[Any, Awaitable]
  • added: method CommandsProtocol.execute_command(*args, **options)
  • added: variable AbsExpiryT
  • added: variable AnyChannelT
  • added: variable AnyFieldT
  • added: variable AnyKeyT
  • added: variable BitfieldOffsetT
  • added: variable ChannelT
  • added: variable ConsumerT
  • added: variable DecodedT
  • added: variable EncodableT
  • added: variable EncodedT
  • added: variable ExpiryT
  • added: variable FieldT
  • added: variable GroupT
  • added: variable KeyT
  • added: variable KeysT
  • added: variable Number
  • added: variable PatternT
  • added: variable ScriptTextT
  • added: variable StreamIdT
  • added: variable TimeoutSecT
  • added: variable ZScoreBoundT
  • removed: class dummy(object)
  • changed: function from_url(url, db=…, **kwargs) → function from_url(url, **kwargs)
  • added: function deprecated_function(reason=…, version=…, name=…)
  • added: function dict_merge(*dicts: Mapping[str, Any]) -> Dict[str, Any]
  • added: function list_keys_to_dict(key_list, callback)
  • added: function merge_result(command, res)
  • added: function safe_str(value)
  • added: function str_if_bytes(value: Union[str, bytes]) -> str
  • added: function warn_deprecated(name, reason=…, version=…, stacklevel=…)
  • added: variable CRYPTOGRAPHY_AVAILABLE
  • added: variable HIREDIS_PACK_AVAILABLE