Release Date: 2023-08-30
- Bug fix
- Fix intermittent errors due to mismatched responses when multiple couroutines access a new connection pool.
- Compatibility
- Remove support for python 3.7
- Remove Redis 6.0 from CI
- Disable RedisGraph tests in CI as the module is now not part of Redis Stack
- Fix RESP3 compatibility for RedisSearch
- Mark json.resp as deprecated
Release Date: 2023-08-11
- Bug fix
- Fix intermittent errors due to mismatched responses when multiple couroutines access a new connection pool.
Release Date: 2023-08-10
- Bug fix
- Handle edge case of clearing a closed socket buffer during object destruction.
- Chores
- Re-enable CI for dragonfly
Release Date: 2023-08-09
- Bug fix
- Improve cleanup on socket disconnect by clearing internal response buffer
- Chores
- Add typing overload for
lpop
method - Remove python 3.7 from CI due to EOL.
- Temporarily disable pre-release python 3.12 from CI due to dependency resolution issues.
- Update development dependencies
- Add typing overload for
Release Date: 2023-05-22
- Features
- Improve parsing of
TS.INFO
response forrules
section - Broaden input parameter type annotations when
expecting a mapping to use
Mapping
instead ofDict
- Improve parsing of
- Compatibility
- Update parsing of timeseries module responses to be compatible with RESP3 responses
- Chores
- Update CI to test against 7.2-rc2
- Update mypy dependency
Release Date: 2023-05-10
- Feature
- Add
json.mset
command
- Add
- Bug Fix
- Remove caching for
json.mget
- Ensure hint from moved errors are used on next attempt
- Remove caching for
Release Date: 2023-05-08
- Feature
- Add
json.merge
command
- Add
- Bug fix
- Fix exception message for unsupported commands
Release Date: 2023-05-03
- Hack
- Downgrade sphinx back to 6.x for theme compatibility
Release Date: 2023-05-03
- Bug Fixes
- Fix incorrect explicit command execution on cluster pipeline retries
- Fix inconsistent reset api signatures for pipeline across standalone & cluster clients
- Ensure pipeline requests respect explicit timeout
- Fix incomplete xinfo_streams response for groups/consumers details
Release Date: 2023-04-29
- Chores
- Expand coverage of modules tests to include RESP2
- Allow failures for "next" versions of redis in CI
Release Date: 2023-04-27
- Feature
- Add pure python wheel to release process
- Chores
- Improve redis module documentation
- Update CI to use python 3.11 as default
- Fix README formatting
Release Date: 2023-04-22
- Chore
- Clean up changelog entries
Release Date: 2023-04-22
- Bug Fix
- Ensure task cancellation results in proper cleanup of a connection that might be blocked
Release Date: 2023-04-21
- Features
- Add support for RedisBloom module
- Add support for ReJSON module
- Add support for RedisSearch module
- Add support for RedisTimeSeries module
- Add support for RedisGraph module
- Check argument versions for compatibility and raise appropriate errors if an argument is used on an older server version which doesn't support it.
- Expose :paramref:`~coredis.Redis.retry_policy` to client constructors
- Expose :paramref:`~coredis.Redis.noevict` in client constructors
- Add initial support for redis 7.2
- Expose :paramref:`~coredis.Redis.notouch` in client constructors
- Add support for :meth:`~coredis.Redis.client_no_touch`
- Add support for :meth:`~coredis.Redis.client_setinfo`
- Add support for :meth:`~coredis.Redis.waitaof`
- Add new
withscore
argument for :meth:`~coredis.Redis.zrank` & :meth:`~coredis.Redis.zrevrank` - Add new context manager :meth:`~coredis.Redis.ensure_persistence`
- Allow adding streams to stream consumers after initialization
- Improve cluster routing for commands that act on multiple slots but are handled by the same node.
- Allow overriding the default stream_timeout when using a pipeline
- Bug Fix
- Ensure multiple properties returned from info command are collapsed into an array
- Fix leaked connections when using :meth:`~coredis.Redis.ensure_replication`
- Improve handling of cancellation errors
- Improve handling of timeout errors
- Ensure cluster commands routed to random nodes use primaries by default
- Handle pause/resume callbacks from Transport and pause sending subsequent commands until the transport buffer is resumed.
- Handle RESP3 response for :meth:`~coredis.Redis.command`
- Update :meth:`~coredis.ConnectionPool.from_url` & :meth:`~coredis.ClusterConnectionPool.from_url` to support all constructor arguments
Release Date: 2023-04-19
- Features
- Add support for RedisGraph module
- Allow overriding the default stream_timeout when using a pipeline
- Check argument versions for compatibility and raise appropriate errors if an argument is used on an older server version which doesn't support it.
- Bug Fix
- Handle pause/resume callbacks from Transport and pause sending subsequent commands until the transport buffer is resumed.
- Handle RESP3 response for :meth:`~coredis.Redis.command`
- Update :meth:`~coredis.ConnectionPool.from_url` & :meth:`~coredis.ClusterConnectionPool.from_url` to support all constructor arguments
- Chores
- Add redis-stack@edge to compatibility matrix in CI
Release Date: 2023-04-10
- Features
- Add support for RedisSearch module
- Allow adding streams to stream consumers after initialization
- Chores
- Update mypy
Release Date: 2023-04-04
- Features
- Add support for RedisBloom module
- Add support for ReJSON module
- Add support for RedisTimeSeries module
- Improve cluster routing for commands that act on multiple slots but are handled by the same node.
- Bug Fix
- Ensure multiple properties returned from info command are collapsed into an array
Release Date: 2023-03-27
- Chores
- Handle external warnings in tests
- Improve docstrings & annotations for ensure_persistence
- Add reruns for test failures in CI
- Add python 3.12 to CI
Release Date: 2023-03-26
- Features
- Expose :paramref:`~coredis.Redis.retry_policy` to client constructors
- Expose :paramref:`~coredis.Redis.noevict` in client constructors
- Add initial support for redis 7.2
- Expose :paramref:`~coredis.Redis.notouch` in client constructors
- Add support for :meth:`~coredis.Redis.client_no_touch`
- Add support for :meth:`~coredis.Redis.client_setinfo`
- Add support for :meth:`~coredis.Redis.waitaof`
- Add new
withscore
argument for :meth:`~coredis.Redis.zrank` & :meth:`~coredis.Redis.zrevrank` - Add new context manager :meth:`~coredis.Redis.ensure_persistence`
- Bug Fix
- Fix leaked connections when using :meth:`~coredis.Redis.ensure_replication`
- Improve handling of cancellation errors
- Improve handling of timeout errors
- Ensure cluster commands routed to random nodes use primaries by default
Release Date: 2023-04-22
- Bug Fix
- Ensure task cancellation results in proper cleanup of a connection that might be blocked
Release Date: 2023-04-04
- Bug Fix
- Ensure
protocol_version
is parsed as an int from url
- Ensure
Release Date: 2023-04-04
- Bug Fix
- Ensure
protocol_version
is parsed as an int from url
- Ensure
Release Date: 2023-03-11
- Chores
- Update cibuildwheels action
- Update versioneer
- Migrate setup.cfg to pyproject
- Parallelize CI wheel build
- Reintroduce ruff for linting
Release Date: 2023-03-09
- Chores
- Add changelog link to pypi
Release Date: 2023-03-09
- Bug Fix
- Ensure prebuilt wheels contain compiled extensions
Release Date: 2023-03-09
- Features
- Add retries to pubsub subscribers
- Generate prebuilt wheel for aarch64 + Linux
- Bug Fix
- Use random nodes with cluster pubsub
- Trigger a refresh of cluster topology on connection errors
- Raise ConnectionError on timeout errors when establishing a connection
- Chores
- Update pyright
Release Date: 2023-03-08
- Bug Fix
- Ensure extension compilation goes through without beartype available
- Chores
- Update dependencies
- Update github actions
- Use ruff for linting
Release Date: 2022-12-24
- Chores
- Update test certificates
- Update development dependencies
Release Date: 2022-12-11
- Compatibility
- Upgrade documentation dependencies
- Relax version contraint for packaging dependency
Release Date: 2022-11-21
- Feature
- Allow using async functions as callbacks for pubsub message handlers
Release Date: 2022-11-09
- Feature
- Update implementation of transactional pipeline and the
behavior of the
transaction
method exposed by they cluster client to be consistent with the standalone client.
- Update implementation of transactional pipeline and the
behavior of the
- Breaking changes
- Pipeline instances passed into the callable
func
parameter of the clustertransaction
method will no longer automatically queue commands until a call tomulti
is issued to be consistent with the implementation in the standalone client.
- Pipeline instances passed into the callable
Release Date: 2022-11-04
- Bug Fix
- Ensure pipeline commands are written to the socket in one shot
- Chore
- Reduce package size by removing test folder
- Add a post wheel packaging import test
Release Date: 2022-10-31
- Bug Fix
- Fix wheels for macos
Release Date: 2022-10-29
- Feature
- Extend
decoding
context manager to selecting codec overrides
- Extend
Release Date: 2022-10-28
- Feature
- Add a
decoding
context manager to control decoding behavior
- Add a
- Performance
- Remove validation code paths at decoration time in optimized mode
Release Date: 2022-10-31
- Bug Fix
- Fix wheels for macos
Release Date: 2022-10-26
- Feature
- Add optimized mode to allow skipping validation code paths
- Add
lastid
parameter toxclaim
method
- Bug Fix
- Ensure
LuaLock
context manager throws an exception when a lock cannot be acquired
- Ensure
- Compatibility
- Add final python 3.11 wheels
Release Date: 2022-10-10
- Feature
- Implement early release back to connection pool to allow multiple concurrent commands to use the some connection thus significantly reducing the need to expand the connection pool when using blocking connection pools
- Bug Fix
- Add a lock when initializing the cluster client to ensure concurrent "first access" does not result in corruption of the cluster node layout or a thundering herd to initialize the layout
- Compatibility
- Enable wheel build for python 3.11
- Chores
- Improve stability of test suite
- Enable recursive response types for mypy & pyright
Release Date: 2022-08-31
- Bug Fix
- Remove duplicated initialization calls to connection pool & cache
Release Date: 2022-08-22
- Compatibility
- Add test coverage for PyPy version 3.7 & 3.9
- Bug Fix
- Ensure methods expecting iterables for an argument raise a TypeError when a single string or byte sequence is used incorrectly.
Release Date: 2022-08-08
- Bug Fix
- Fix leftover default connection pool construction in blocking cluster connection pool
- Chores
- Reduce excessive matrix in default CI
- Add scheduled compatibility CI run
- Cleanup unnecessary asyncio markers in tests
- Refactor readonly command detection to use command flags from redis documentation
- Issue warning if :meth:`Redis.select` is called directly
Release Date: 2022-08-03
- Bug Fix
- Ensure default cluster connection pools are not recreated upon access. (Issue 92)
Release Date: 2022-08-03
- Bug Fix
- Implicitly initialize cluster connection pool when pubsub subscribe is called
- Fix handling of sharded pubsub unsubscribe message
- Fix unsubscribe all for sharded pubsub
- Compatibility
- Improve surfacing underlying errors when initializing cluster
Release Date: 2022-08-02
- Bug Fix
- Fix context leak when commands issued within ensure_replication and ignore_replies context managers fail
- Recipes
- Fix LUA lock recipe to work with clusters with no replicas.
- Ensure LUA lock recipe waits on replication of lock to n/2 replicas if replicas exist in the cluster
Release Date: 2022-07-30
- Compatibility
- Bring back python 3.7 support
Release Date: 2022-07-26
- Breaking changes
- Default nodemanager_follow_cluster to True
- Deprecations
- Deprecate readonly constructor argument in cluster client in favor of read_from_replicas
- Remove invalid property setter for noreply mode
- Bug Fixes
- Fix incorrect behavior of ignore_replies context manager as it was not actually setting CLIENT REPLY and simply discarding connections
- Ensure fetching a random connection doesn't deplete the node list in the connection pool
- Ensure connection pools are disconnected on finalization to avoid leaking connections
Release Date: 2022-07-23
- Bug Fix
- Fix incorrect calculation of per node connection pool size when readonly=False
- Ensure max_connection is atleast equal to the number of nodes in the cluster and raise a warning when it is not
Release Date: 2022-07-22
- Features
- Introduced :class:`coredis.pool.BlockingClusterConnectionPool`
- Allow passing :paramref:`~coredis.Redis.connection_pool_cls` and :paramref:`~coredis.RedisCluster.connection_pool_cls` to pick the connection pool implementation during client construction
- Breaking Changes
- :class:`~coredis.RedisCluster` now raises a :exc:`~coredis.exceptions.ConnectionError`
when a connection can't be acquired due to
max_connections
being hit.
- :class:`~coredis.RedisCluster` now raises a :exc:`~coredis.exceptions.ConnectionError`
when a connection can't be acquired due to
Release Date: 2022-07-21
- Compatibility
- Add support and test coverage for PyPy 3.8.
- Bug Fix
- Ensure :meth:`coredis.RedisCluster.ensure_replication` can be used with :paramref:`~coredis.RedisCluster.ensure_replication.replicas` < total number of replicas
Release Date: 2022-07-20
- Bug Fix
- Fix routing of :meth:`coredis.Redis.script_kill` and :meth:`coredis.Redis.function_kill` to only route to primaries
- Ensure all arguments expecting collections consistently use :data:`coredis.typing.Parameters`
- Chores
- Fix ordering of keyword arguments of :meth:`coredis.Redis.set` to be consistent with command documentation
- Improve documentation regarding request routing and repsonse merging for cluster multi node and multi shard commands
- Sort all literal annotations
Release Date: 2022-07-18
- Bug Fix
- Ensure lua scripts for lock recipe are included in package
Release Date: 2022-07-18
- Features
- Reintroduce distributed lock implementation under coredis.recipes.locks
- Bug Fix
- Allow initializing a LUA library without loading the code when it already exists if replace=False
- Performance
- Reduce unnecessary calls to parser by using an async Event to signal that data is available for parsing
Release Date: 2022-07-16
- Compatibility
- Relax version checking to only warn if a server reports a non standard server version (for example with Redis-like databases)
- Raise an exception when client tracking is not available and server assisted caching cannot be used (for example with upstash provisioned redis instances)
- Documentation
- Add more detail about Sharded Pub/Sub
Release Date: 2022-07-16
- Documentation
- Added section about reliability in handbook
- Improved cross referencing
Release Date: 2022-07-15
- Features
- Added support for using
noreply
when sending commands (see :ref:`handbook/noreply:no reply mode`) - Added support for ensuring replication to
n
replicas using :meth:`~coredis.Redis.ensure_replication`. - Moved :class:`~coredis.KeyDB` client out of experimental namespace
- Added support for using
- Backward incompatible changes
- Use RESP3 as default protocol version (see :ref:`handbook/response:redis response`)
- :paramref:`~coredis.RedisCluster.non_atomic_cross_slot` is default behavior for cluster clients
- Moved exceptions out of root namespace to
coredis.exceptions
- Removed Lock implementations
- Dropped support for hiredis (see :ref:`history:parsers`)
- Removed
StrictRedis
&StrictRedisCluster
aliases
Release Date: 2022-07-13
- Chore
- Remove python 3.11 binary wheel builds
Release Date: 2022-07-09
- Bug Fix
- Fix issue with sharded pubsub not handling multiple channel subscriptions
Release Date: 2022-07-07
- Bug Fix
- Correct implementation of restore command when absttl argument is True.
Release Date: 2022-06-30
- Bug Fix
- Ignore case when comparing error strings to map to exceptions
Release Date: 2022-06-29
- Bug Fix
- Fix incorrect handling of :paramref:`~coredis.RedisCluster.non_atomic_cross_slot` commands when not all nodes are required for a command
Release Date: 2022-06-25
- Features
- Added :paramref:`coredis.Redis.noreply` and :paramref:`coredis.RedisCluster.noreply` option to Redis & RedisCluster constructors to allow using the client without waiting for response from the server
- Build wheels for all architectures supported by cibuildwheel
- Deprecations / Removals
- Remove deprecated sentinel methods
- Add warnings for :meth:`~coredis.Redis.client_setname`, :meth:`~coredis.Redis.client_reply` and :meth:`~coredis.Redis.auth` commands
- Bug Fixes
- Fix missing :data:`protocol_version` in cluster pipeline code paths
Release Date: 2022-06-18
- Chores
- Documentation tweaks
Release Date: 2022-06-18
- Features
- Expose ssl parameters in :class:`coredis.RedisCluster` constructor
- Expose :paramref:`~coredis.Redis.ssl_check_hostname` parameter in Redis/RedisCluster constructors
- Separate opt-in cache behaviors into protocols leaving :class:`~coredis.cache.AbstractCache` as the minimal implementation required
- Expose cache stats through the :data:`~coredis.cache.TrackingCache.stats` property, returning a :class:`~coredis.cache.CacheStats` dataclass.
- Allow :paramref:`~coredis.cache.TrackingCache.dynamic_confidence` to increase cache confidence up to 100% instead of capping it at the original :paramref:`~coredis.cache.TrackingCache.confidence` value provided
- Chores
- Improve documentation for caching
- Improve test coverage for ssl connections
- Add test coverage for cluster ssl clients
Release Date: 2022-06-15
- Features
- Expose :paramref:`~coredis.sentinel.Sentinel.cache` parameter to Sentinel managed clients
- Bug Fix
- Handle error parsing command not found exception
Release Date: 2022-06-14
- Features
- Add option to define confidence in cached entries
Release Date: 2022-06-13
- Features
- Extend coverage of cachable commands
- Expose option to share TrackingCache between client
Release Date: 2022-06-12
- Features
- Add support for client side caching (:ref:`handbook/caching:caching`)
Release Date: 2022-06-10
- Features
- Add support for sharded pubsub for redis 7.0.1 (:ref:`handbook/pubsub:cluster pub/sub`)
- Expose :paramref:`~coredis.Redis.from_url.verify_version` parameter to :meth:`coredis.Redis.from_url` factory function
- Experiments
- Extend CI coverage for keydb & dragonfly
Release Date: 2022-06-07
- Bug Fixes
- Fix support for HELLO SETNAME
- Fix routing of ACL SAVE in cluster mode
- Chores
- Improved test coverage for server commands
Release Date: 2022-06-07
- Features
- New
nodenames
parameter added to sentinel_info_cache
- New
- Chores
- Added redis 7.0 to sentinel test coverage matrix
Release Date: 2022-06-05
- Bug Fix
- Fix type annotation for hmget
- Experiments
- Add CI coverage for dragonflydb
Release Date: 2022-06-04
- Features
- Add support for python 3.11 (b3) builds
- Performance
- Extract python parser and optionally compile it to native code using mypyc
- Bug Fixes
- Only route PING commands to primaries in cluster mode
- Ensure connection errors for commands routed to multiple nodes are retried in case of cluster reconfiguration
- Ensure re population of startup nodes is based off latest response from cluster
Release Date: 2022-05-26
- Performance
- Inline buffering of responses in python parser
Release Date: 2022-05-25
- Features
- Refactor python parser to remove recursion
- Reduce number of async calls during response parsing
- Extract command packer and use mypyc to compile it to native code
Release Date: 2022-05-21
- Chores
- Documentation reorg
- Improved RESP error <-> exception mapping
- Bug fix
- Ignore duplicate consumer group error due to groupconsumer initialization race condition
Release Date: 2022-05-19
- Features
- Stream consumer clients (:ref:`handbook/streams:simple consumer` and :ref:`handbook/streams:group consumer`)
- Experiments
- Updated :class:`~coredis.experimental.KeyDB` command coverage
- :class:`~coredis.experimental.KeyDBCluster` client
Release Date: 2022-05-15
- Features
- Add option to enable non atomic splitting of commands in cluster mode when the commands only deal with keys (delete, exists, touch, unlink) (:paramref:`~coredis.RedisCluster.non_atomic_crossslot`)
- Add support for sharded pub sub in cluster mode (:meth:`~coredis.RedisCluster.sharded_pubsub`)
- Add support for readonly execution of LUA scripts and redis functions
- Bug Fix
- Ensure :meth:`~coredis.RedisCluster.script_load` is routed to all nodes in cluster mode
- Ensure :meth:`~coredis.RedisCluster.evalsha_ro`, :meth:`~coredis.RedisCluster.eval_ro`, :meth:`~coredis.RedisCluster.fcall_ro` are included in readonly commands for cluster readonly mode.
- Change version related warnings to use :exc:`DeprecationWarning`
- Chores
- General improvements in reliability and correctness of unit tests
Release Date: 2022-05-12
- Bug Fix
- Fix type annotation for :attr:`coredis.response.types.PubSubMessage.data` to include int for server responses to subscribe/unsubscribe/psubscribe/punsubscribe
Release Date: 2022-05-10
- Features
- Added :meth:`coredis.commands.Library.wraps` and :meth:`coredis.commands.Script.wraps` decorators for creating strict signature wrappers for lua scripts and functions.
- Add :meth:`~coredis.commands.Script.__call__` method to :class:`coredis.commands.Script` so it can be called directly without having to go through :meth:`coredis.commands.Script.execute`
- Improve type safety with regards to command methods accepting
multiple keys or values. These were previously annotated as
accepting either
Iterable[KeyT]
orIterable[ValueT]
which would allow strings or bytes to be passed. These are now changed toParameters[KeyT]
orParameter[ValueT]
respectively which only allow a restricted set of collections and reject strings and bytes.
- Breaking Changes
- Removed custom client side implementations for cross slot cluster methods. These methods will now use the regular cluster implementation and raise and error if the keys don't map to the same shard.
- :paramref:`coredis.Redis.verify_version` on both :class:`~coredis.Redis` &
:class:`~coredis.RedisCluster` constructors will
default to
True
resulting in warnings being emitted for using deprecated methods and preemptive exceptions being raised when calling methods against server versions that do not support them. - Dropped support for redis server versions less than 6.0
- A large chunk of utility / private code has been moved into private namespaces
- Chores
- Refactor response transformation to use inlined callbacks to improve type safety.
- Bug Fixes
- Ensure protocol_version, decoding arguments are consistent across different construction methods.
- Synchronize parameters for replacing library code between :class:`coredis.commands.Library` constructor and :meth:`coredis.Redis.register_library`
Release Date: 2022-05-04
- Chores
- Update CI to use official 7.0 release for redis
- Update CI to use 7.0.0-RC4 image for redis-stack
- Bug Fix
- Fix key spec extraction for commands using kw search
Release Date: 2022-04-30
- Bug Fixes
- Ensure protocol_version is captured for constructions with from_url
- Fix command name for module_loadex method
Release Date: 2022-04-22
- Chore
- Fix incorrect type annotations for primitive callbacks
- Update test matrix in CI with python 3.11 a7
- Update documentation to provide a slightly more detailed background around the project diversion
- Experiments
- Add basic support for KeyDB
Release Date: 2022-04-21
- Chore
- Fix github release workflow
Release Date: 2022-04-21
- Chore
- Fix github release workflow
Release Date: 2022-04-21
- Bug fix
- Fix error selecting database when
decode_responses
isTrue
(Issue 46)
- Fix error selecting database when
Release Date: 2022-04-12
- Chores
- Remove unmaintained examples & benchmarks
- Simplify setup/package info with respect to stubs
- Cleanup documentation landing page
Release Date: 2022-04-11
- Features
- Updates for breaking changes with
function_load
in redis 7.0 rc3 - Add
module_loadex
method
- Updates for breaking changes with
- Bug fix
- Fix installation error when building from source
Release Date: 2022-04-04
- Features
- Add explicit key extraction based on key spec for cluster clients
Release Date: 2022-04-02
- Features
- New APIs:
- Server:
Redis.latency_histogram
Redis.module_list
Redis.module_load
Redis.module_unload
- Connection:
Redis.client_no_evict
- Cluster:
Redis.cluster_shards
Redis.readonly
Redis.readwrite
- Server:
- Micro optimization to use bytestrings for all hardcoded tokens
- Add type hints for pipeline classes
- Remove hardcoded pipeline blocked commands
- New APIs:
- Bug Fix
- Disable version checking by default
- Fix incorrect key names for server commands
- Chores
- Move publishing steps to CI
- More typing related cleanups
- Refactor parsers into a separate module
- Improve test coverage to cover non decoding clients
Release Date: 2022-03-24
- Bug Fix
- Fix extracting version/protocol with binary clients
- Features
- New APIs:
Redis.cluster_addslotsrange
Redis.cluster_delslotsrange
Redis.cluster_links
Redis.cluster_myid
- New APIs:
Release Date: 2022-03-23
- Features
- Added support for functions
- Added runtime checks to bail out early if server version doesn't support the command
- Deprecate custom cluster methods
- Issue warning when a deprecated redis command is used
- Add support for
RESP3
protocol
- New APIs:
- Scripting:
Redis.fcall
Redis.fcall_ro
Redis.function_delete
Redis.function_dump
Redis.function_flush
Redis.function_kill
Redis.function_list
Redis.function_load
Redis.function_restore
Redis.function_stats
- Server:
Redis.command_docs
Redis.command_getkeysandflags
Redis.command_list
- Scripting:
Release Date: 2022-03-21
- Bug Fix
- Fix autoselection of hiredis when available
Release Date: 2022-03-21
- Bug Fix
- Fix incorrect response type for :meth:`coredis.Redis.exists` (:issue:`24`)
Release Date: 2022-03-21
- Bug Fix
- Ensure all submodules are included in package (:issue:`23`)
- Fix conversation of datetime object to pxat value for set command
- Chores
- Re-add examples folder
- Tweak type hints
- Make
scan_iter
arguments consistent withscan
Release Date: 2022-03-20
- Features:
- Added type hints to all redis commands
- Added support for experimental runtime type checking
- Updated APIs upto redis 6.2.0
- Added experimental features for redis 7.0.0
- New APIs:
- Generic:
Redis.copy
Redis.migrate
- String:
Redis.lcs
- List:
Redis.blmpop
Redis.lmpop
- Set:
Redis.sintercard
- Sorted-Set:
Redis.bzmpop
Redis.zintercard
Redis.zmpop
- Scripting:
Redis.eval_ro
Redis.evalsha_ro
Redis.script_debug
- Stream:
Redis.xautoclaim
Redis.xgroup_createconsumer
Redis.xgroup_delconsumer
Redis.xgroup_setid
- Server:
Redis.acl_cat
Redis.acl_deluser
Redis.acl_dryrun
Redis.acl_genpass
Redis.acl_getuser
Redis.acl_list
Redis.acl_load
Redis.acl_log
Redis.acl_save
Redis.acl_setuser
Redis.acl_users
Redis.acl_whoami
Redis.command
Redis.command_count
Redis.command_getkeys
Redis.command_info
Redis.failover
Redis.latency_doctor
Redis.latency_graph
Redis.latency_history
Redis.latency_latest
Redis.latency_reset
Redis.memory_doctor
Redis.memory_malloc_stats
Redis.memory_purge
Redis.memory_stats
Redis.memory_usage
Redis.replicaof
Redis.swapdb
- Connection:
Redis.auth
Redis.client_caching
Redis.client_getredir
Redis.client_id
Redis.client_info
Redis.client_reply
Redis.client_tracking
Redis.client_trackinginfo
Redis.client_unblock
Redis.client_unpause
Redis.hello
Redis.reset
Redis.select
- Cluster:
Redis.asking
Redis.cluster_bumpepoch
Redis.cluster_flushslots
Redis.cluster_getkeysinslot
- Generic:
- Breaking changes:
- Most redis command API arguments and return types have been refactored to be in sync with the official docs.
- Updated all commands accepting multiple values for an argument
to use positional var args only if the argument is optional.
For all other cases, use a positional argument accepting an
Iterable
. Affected methods:bitop
->*keys
->keys: Iterable[KeyT]
delete
->*keys
->keys: Iterable[KeyT]
exists
->*keys
->keys: Iterable[KeyT]
touch
->*keys
->keys: Iterable[KeyT]
unlink
->*keys
->keys: Iterable[KeyT]
blpop
->*keys
->keys: Iterable[KeyT]
brpop
->*keys
->keys: Iterable[KeyT]
lpush
->*elements
->elements: Iterable[ValueT]
lpushx
->*elements
->elements: Iterable[ValueT]
rpush
->*elements
->elements: Iterable[ValueT]
rpushx
->*elements
->elements: Iterable[ValueT]
mget
->*keys
->keys: Iterable[KeyT]
sadd
->*members
->members: Iterable[ValueT]
sdiff
->*keys
->keys: Iterable[KeyT]
sdiffstore
->*keys
->keys: Iterable[KeyT]
sinter
->*keys
->keys: Iterable[KeyT]
sinterstore
->*keys
->keys: Iterable[KeyT]
smismember
->*members
->members: Iterable[ValueT]
srem
->*members` -> ``members: Iterable[ValueT]
sunion
->*keys
->keys: Iterable[KeyT]
sunionstore
->*keys
->keys: Iterable[KeyT]
geohash
->*members
->members: Iterable[ValueT]
hdel
->*fields
->fields: Iterable[ValueT]
hmet
->*fields
->fields: Iterable[ValueT]
pfcount
->*keys
->keys: Iterable[KeyT]
pfmerge
->*sourcekeys
->sourcekeys: Iterable[KeyT]
zdiff
->*keys
->keys: Iterable[KeyT]
zdiffstore
->*keys
->keys: Iterable[KeyT]
zinter
->*keys
->keys: Iterable[KeyT]
zinterstore
->*keys
->keys: Iterable[KeyT]
zmscore
->*members
->members: Iterable[ValueT]
zrem
->*members
->members: Iterable[ValueT]
zunion
->*keys
->keys: Iterable[KeyT]
zunionstore
->*keys
->keys: Iterable[KeyT]
xack
->*identifiers
->identifiers: Iterable[ValueT]
xdel
->*identifiers
->identifiers: Iterable[ValueT]
xclaim
->*identifiers
->identifiers: Iterable[ValueT]
script_exists
->*sha1s
- >sha1s: Iterable[ValueT]
client_tracking
->*prefixes
- >prefixes: Iterable[ValueT]
info
->*sections
- >sections: Iterable[ValueT]
Release Date: 2023-01-09
Bug Fix:
- Fix incorrect argument (key instead of field) used for hincrby command
Release Date: 2022-01-30
- Chore:
- Standardize doc themes
- Boo doc themes
Release Date: 2022-01-23
Final release maintaining backward compatibility with aredis
- Chore:
- Add test coverage for uvloop
- Add test coverage for hiredis
- Extract tests to use docker-compose
- Add tests for basic authentication
Release Date: 2022-01-22
- Bug fix:
- Fix stalled connection when only username is provided
Release Date: 2022-01-22
- Bug fix:
- Fix failure to authenticate when just using password
Release Date: 2022-01-21
This release brings in pending pull requests from the original aredis repository and updates the signatures of all implemented methods to be synchronized (as much as possible) with the official redis documentation.
- Feature (extracted from pull requests in aredis):
* Add option to provide
client_name
* Add support for username/password authentication * Add BlockingConnectionPool
Release Date: 2022-01-15
This release attempts to update missing command
coverage for common datastructures and gets closer
to :pypi:`redis-py` version 4.1.0
- Feature:
- Added string commands
decrby
,getdel
&getex
- Added list commands
lmove
,blmove
&lpos
- Added set command
smismember
- Added sorted set commands
zdiff
,zdiffstore
,zinter
,zmscore
, zpopmin
,zpopmax
,bzpopmin
,bzpopmax
&zrandmember
- Added sorted set commands
- Added geo commands
geosearch
,geosearchstore
- Added hash command
hrandfield
- Added support for object inspection commands
object_encoding
,object_freq
,object_idletime
&object_refcount
- Added
lolwut
- Added string commands
- Chore: * Standardize linting against black * Add API documentation * Add compatibility documentation * Add CI coverage for redis 6.0
Release Date: 2022-01-15
- Bug Fix:
- Ensure installation succeeds without gcc
Release Date: 2022-01-05
- Initial import from aredis
- Add support for python 3.10
The changelog below is imported from aredis
- Fixbug: connection is disconnected before idel check, valueError will be raised if a connection(not exist) is removed from connection list
- Fixbug: abstract compat.py to handle import problem of asyncio.future
- Fixbug: When cancelling a task, CancelledError exception is not propagated to client
- Fixbug: XREAD command should accept 0 as a block argument
- Fixbug: In redis cluster mode, XREAD command does not function properly
- Fixbug: slave connection params when there are no slaves
- Fixbug: ModuleNotFoundError raised when install aredis 1.1.6 with Python3.6
- Fixbug: parsing stream messgae with empty payload will cause error(#116)
- Fixbug: Let ClusterConnectionPool handle skip_full_coverage_check (#118)
- New: threading local issue in coroutine, use contextvars instead of threading local in case of the safety of thread local mechanism being broken by coroutine (#120)
- New: support Python 3.8
- new: Dev conn pool max idle time (#111) release connection if max-idle-time exceeded
- update: discard travis-CI
- Fix bug: new stream id used for test_streams
- fix bug: fix cluster port parsing for redis 4+(node info)
- fix bug: wrong parse method of scan_iter in cluster mode
- fix bug: When using "zrange" with "desc=True" parameter, it returns a coroutine without "await"
- fix bug: do not use stream_timeout in the PubSubWorkerThread
- opt: add socket_keepalive options
- new: add ssl param in get_redis_link to support ssl mode
- new: add ssl_context to StrictRedis constructor and make it higher priority than ssl parameter
- allow use of zadd options for zadd in sorted sets
- fix bug: use inspect.isawaitable instead of typing.Awaitable to judge if an object is awaitable
- fix bug: implicitly disconnection on cancelled error (#84)
- new: add support for streams`(including commands not officially released, see `streams )
- fix bug: redis command encoding bug
- optimization: sync change on acquring lock from redis-py
- fix bug: decrement connection count on connection disconnected
- fix bug: optimize code proceed single node slots
- fix bug: initiation error of aws cluster client caused by not appropiate function list used
- fix bug: use ssl_context instead of ssl_keyfile,ssl_certfile,ssl_cert_reqs,ssl_ca_certs in intialization of connection_pool
- fix bug: connection with unread response being released to connection pool will lead to parse error, now this kind of connection will be destructed directly. #52
- fix bug: remove Connection.can_read check which may lead to block in awaiting pubsub message. Connection.can_read api will be deprecated in next release. #56
- add c extension to speedup crc16, which will speedup cluster slot hashing
- add error handling for asyncio.futures.Cancelled error, which may cause error in response parsing.
- sync optimization of client list made by swilly22 from redis-py
- add support for distributed lock using redis cluster
- sync optimization of scripting from redis-py made by bgreenberg redis-py#867
- sync bug fixed of geopos from redis-py made by categulario redis-py#888
- fix bug which makes pipeline callback function not executed
- fix error caused by byte decode issues in sentinel
- add basic transaction support for single node in cluster
- fix bug of get_random_connection reported by myrfy001
- fix bug of pubsub, in some env AssertionError is raised because connection is used again after reader stream being fed eof
- add reponse decoding related options(encoding & decode_responses), make client easier to use
- add support for command cluster forget
- add support for command option spop count
- fix initialization bug of redis cluster client
- add example to explain how to use client reply on | off | skip
- introduce loop argument to aredis
- add support for command cluster slots
- add support for redis cluster
- bitfield set/get/incrby/overflow supported
- new command hstrlen supported
- new command unlink supported
- new command touch supported
- fix bug in setup.py when using pip to install aredis
- add support for command pubsub channel, pubsub numpat and pubsub numsub
- add support for command client pause
- reconsitution of commands to make develop easier(which is transparent to user)
- add support for cache (Cache and HerdCache class)
- fix bug of PubSub.run_in_thread
- add scan_iter, sscan_iter, hscan_iter, zscan_iter and corresponding unit tests
- fix bug of PubSub.run_in_thread
- add more examples
- change Script.register to Script.execute