Redis Py Cluster Versions Save

Python cluster client for the official redis cluster. Redis 3.0+.

2.1.3

2 years ago

2.1.3 (May 30 2021)

* Add example script pipelin-readonly-replica.py to show how to use replica nodes to offload read commands from primary node
* max_connection now defaults to 50 in ClusterBlockingConnectionPool to avoid issue with infinite loop in queue mechanism
* Using read replica for read commands inside pipeline is now better supported. Feature might be unstable to use as own risk.
* Fixed that in some cases where ConnectionError is raised, a non existing connection was attempted to be disconnected and caused a sub exception to be raised.

2.1.2

3 years ago

2.1.2 (Apr 18 2021)

This content can also be found in docs/release-notes.rst

* Fixed bug where "from rediscluster import *" would not work correct

2.1.1

3 years ago

2.1.1 (Apr 18 - 2021)

This content can also be found in docs/release-notes.rst

* ClusterPipeline is now exposed when doing "from rediscluster import *"
* Fix issue where connection would be None in some cases when connection pool fails to initialize
* Ported in a fix from redis-py where it now checks if a connection is ready or not before returning the connection for usage
* ClusterFailover command option is no longer mandatory but optional as it is intended
* Fixed "SLOWLOG GET" kwarg command where it failed on decode_responses
* BaseException is now caught when executing commands and it will disconnect and the connection before raising the exception.
* Logging exception on ReseponseError when doing the initial connection to the startup_nodes instances

2.1.0

3 years ago

2.1.0 (September 26, 2020)

This content can also be found in docs/release-notes.rst

* Add new config option for Client and Pipeline classes to controll how many attempts will be made before bailing out from a ClusterDownError.
  Use "cluster_down_retry_attempts=<int>" when creating the client class to controll this behaviour.
* Updated redis-py compatbile version to support any version in the major version 3.0.x, 3.1.x, 3.2.x, 3.3.x., 3.4.x, 3.5.x (#326)
  It is always recommended to use the latest version of redis-py to avoid issues and compatiblity problems.
* Fixed bug preventing reinitialization after getting MOVED errors
* Add testing of redis-esrver 6.0 versions to travis and unit tests
* Add python 2.7 compatiblity note about deprecation and upcomming changes in python 2.7 support for this lib
* Updated tests and cluster tests versions of the same methods to latest tests from upstream redis-py package
* Reorganized tests and how cluster specific tests is written and run over the upstream version of the same test to make it easier
  and much faster to update and keep them in sync over time going into the future (#368)
* Python 3.5.x or higher is now required if running on a python 3 version
* Removed the monkeypatching of RedisCluster, ClusterPubSub & ClusterPipeline class names into the "redis" python package namespace during runtime.
  They are now exposed in the "rediscluster" namespace to mimic the same feature from redis-py
* cluster_down_retry_attempts can now be configured to any value when creating RedisCluster instance
* Creating RedisCluster from unix socket url:s has been disabled
* Patch the from_url method to use the corret cluster version of the same Connection class
* ConnectionError and TimeoutError is now handled seperately in the main execute loop to better handle each case (#363)
* Update scan_iter custom cluster implementation
* Improve description_format handling for connection classes to simplify how they work
* Implement new connection pool ClusterBlockingConnectionPool (#347)
* Nodemanager initiailize should now handle usernames properly (#365)
* PubSub tests has been all been disabled
* New feature, host_port_remap. Send in a remapping configuration to RedisCluster instance where the nodes configuration recieved from the redis cluster can be altered to allow for connection in certain circumstances. See new section in client.rst in docs/ for usage example.
* When a slot is not covered by the cluster, it will not raise SlotNotCoveredError instead of the old generic RedisClusterException. The client will not attempt to rebuild the cluster layout a few times before giving up and raising that exception to the user. (#350)
* CLIENT SETNAME is now possible to use from the client instance. For setting the name for all connections from the client by default, see issue #802 in redis-py repo for the change that was implemented in redis-py 3.4.0.
* Rewrote implemented commands documentation to mimic the redis.io commands documentation and describe each command and any additional implementation that has been made.
* Added RTD theme to the rendered output when running the documentation in local dev mode. 
* Added some basic logging to the client that should make it easier to debug and track down minor issues around the main execution loop. See docs/logging.rst for implementation example into your own code.
* Seperated some of the exception handling inside the main execution loop to get more fine grained controll what to do at certain errors.

2.0.99

3 years ago
  • This is a release candidate for 2.1.0 release.
  • This release will be built from commit 2605ed0adf58c4540dda0d9121a9767238be76e8 from the master branch.
  • The version number will be set to 2.0.99 to allow for upgrade but not to collide with 2.1.0 release.
  • This release will NOT be uploaded to pypi. It is only accessible here.
  • This RC release will be out for about 1 week and then a proper release will be cut and pushed.
  • All changes and commits can be inspected here https://github.com/Grokzen/redis-py-cluster/compare/2.0.0...master

Release notes for release

2.1.0 (May **, 2020)

* Add new config option for Client and Pipeline classes to controll how many attempts will be made before bailing out from a ClusterDownError.
  Use "cluster_down_retry_attempts=<int>" when creating the client class to controll this behaviour.
* Updated redis-py compatbile version to support any version in the major version 3.0.x, 3.1.x, 3.2.x, 3.3.x., 3.4.x, 3.5.x (#326)
  It is always recommended to use the latest version of redis-py to avoid issues and compatiblity problems.
* Fixed bug preventing reinitialization after getting MOVED errors
* Add testing of redis-esrver 6.0 versions to travis and unit tests
* Add python 2.7 compatiblity note about deprecation and upcomming changes in python 2.7 support for this lib
* Updated tests and cluster tests versions of the same methods to latest tests from upstream redis-py package
* Reorganized tests and how cluster specific tests is written and run over the upstream version of the same test to make it easier
  and much faster to update and keep them in sync over time going into the future (#368)
* Python 3.5.x or higher is now required if running on a python 3 version
* Removed the monkeypatching of RedisCluster, ClusterPubSub & ClusterPipeline class names into the "redis" python package namespace during runtime.
  They are now exposed in the "rediscluster" namespace to mimic the same feature from redis-py
* cluster_down_retry_attempts can now be configured to any value when creating RedisCluster instance
* Creating RedisCluster from unix socket url:s has been disabled
* Patch the from_url method to use the corret cluster version of the same Connection class
* ConnectionError and TimeoutError is now handled seperately in the main execute loop to better handle each case (#363)
* Update scan_iter custom cluster implementation
* Improve description_format handling for connection classes to simplify how they work
* Implement new connection pool ClusterBlockingConnectionPool (#347)
* Nodemanager initiailize should now handle usernames properly (#365)
* PubSub tests has been all been disabled
* New feature, host_port_remap. Send in a remapping configuration to RedisCluster instance where the nodes configuration recieved from the redis cluster can be altered to allow for connection in certain circumstances. See new section in clients.rst in docs/ for usage example.
* When a slot is not covered by the cluster, it will not raise SlotNotCoveredError instead of the old generic RedisClusterException. The client will not attempt to rebuild the cluster layout a few times before giving up and raising that exception to the user. (#350)
* CLIENT SETNAME is now possible to use from the client instance. For setting the name for all connections from the client by default, see issue #802 in redis-py repo for the change that was implemented in redis-py 3.4.0.

2.0.0

4 years ago

2.0.0 (Aug 19, 2019)

  • Update entire code base to now support all redis-py version in the 3.0.x version line. Any future redis-py version will be supported at a later time.
  • Major update to all tests to mirror the code of the same tests from redis-py
  • Dropped support for the 2.10.6 redis-py release.
  • Add pythoncodestyle lint validation check to travis-ci runs to check for proper linting before accepting PR:s
  • Class StrictRedisCluster was renamed to RedisCluster
  • Class StrictRedis has been removed to mirror upstream class structure
  • Class StrictClusterPipeline was renamed to ClusterPipeline
  • Fixed travis-ci tests not running properly on python 3.7
  • Fixed documentation regarding threads in pipelines
  • Update lit of command callbacks and parsers. Added in "CLIENT ID"
  • Removed custom implementation of SORT and revert back to use same-slot mechanism for that command.
  • Added better exception message to get_master_node_by_slot command to help the user understand the error.
  • Improved the exception object message parsing when running on python3

1.3.6

5 years ago
  • Pin upstream redis-py package to release 2.10.6 to avoid issues with incompatible version 3.0.0

1.3.5

5 years ago
  • Add Redis 4 compatability fix to CLUSTER NODES command (See issue #217)
  • Fixed bug with command "CLUSTER GETKEYSINSLOT" that was throwing exceptions
  • Added new methods cluster_get_keys_in_slot() to client
  • Fixed bug with StrictRedisCluster.from_url that was ignoring the readonly_mode parameter
  • NodeManager will now ignore nodes showing cluster errors when initializing the cluster
  • Fix bug where RedisCluster wouldn't refresh the cluster table when executing commands on specific nodes
  • Add redis 5.0 to travis-ci tests
  • Change default redis version from 3.0.7 to 4.0.10
  • Increase accepted ranges of dependencies specefied in dev-requirements.txt
  • Several major and minor documentation updates and tweaks
  • Add example script "from_url_password_protected.py"
  • command "CLUSTER GETKEYSINSLOT" is now returned as a list and not int
  • Improve support for ssl connections
  • Retry on Timeout errors when doing cluster discovery
  • Added new error class "MasterDownError"
  • Updated requirements for dependency of redis-py to latest version

1.3.4

7 years ago
  • Package is now built as a wheel and source package when releases is built.
  • Fixed issues with some key types in NodeManager.keyslot().
  • Add support for PUBSUB subcommands CHANNELS, NUMSUB [arg] [args...] and NUMPAT.
  • Add method set_result_callback(command, callback) allowing the default reply callbacks to be changed, in the same way set_response_callback(command, callback) inherited from Redis-Py does for responses.
  • Node manager now honors defined max_connections variable so connections that is emited from that class uses the same variable.
  • Fixed a bug in cluster detection when running on python 3.x and decode_responses=False was used. Data back from redis for cluster structure is now converted no matter what the data you want to set/get later is using.
  • Add SSLClusterConnection for connecting over TLS/SSL to Redis Cluster
  • Add new option to make the nodemanager to follow the cluster when nodes move around by avoiding to query the original list of startup nodes that was provided when the client object was first created. This could make the client handle drifting clusters on for example AWS easier but there is a higher risk of the client talking to the wrong group of nodes during split-brain event if the cluster is not consistent. This feature is EXPERIMENTAL and use it with care.

1.3.3

7 years ago
  • Remove print statement that was faulty commited into release 1.3.2 that case logs to fill up with unwanted data.