reool 0.23.0

An asynchrounous connection pool for Redis based on tokio and redis-rs
Documentation
# Changelog

## 0.23.0 (BREAKING CHANGE)
    * Transition to async/await and futures 0.3.

## 0.22.3
    * When there are multiple pools, try to immediately check out on all but the last

## 0.22.2
    * reexport of `redis-rs` types

## 0.22.1 (BREAKING CHANGE)

    * DNS resolution is non-blocking now
    * Unix domain sockets are not supported currently

## 0.22.0 (BREAKING CHANGE)

    * Upgraded `metrix` feature to 0.10 which is incompatible to previous version

## 0.21.4

    * BUGFIX: In flight must be decreased if a checked out connection gets dropped.

## 0.21.3

    * REFACTOR: Avoid unnecessary checkouts

## 0.21.2

    * BUGFIX: Single pool: Inner dropped when one of multiple clones was dropped

## 0.21.1

    * BUGFIX: Pinged failed always

## 0.21.0 (BREAKING CHANGE) - Read the documentation

    * Use a stream for the internals instead of an async lock
    * Using new configuration parameters and env vars
    * Adjusted the metrics
    * Ping works directly on connections

## 0.20.0 (BREAKING CHANGE)
    * `PoolCheckoutMode` became `DefaultPoolCheckoutMode`
    * Use an `Instant` instead of a `Duration` to define a checkout timeout
    * A contention limit can be set which would prevent a pool from checking out a
    connection if the limit is reached

## 0.19.0 (BREAKING CHANGE)
    * Use a struct to configure the reservation behaviour and the pool default behaviour
    in checkout methods.
    * Remove `stats_interval` from the config
    * Add configuration parameter for the default pool checkout behaviour
    to the config. The enum is `PoolCheckoutMode`
    * `PoolPerNode` will only use the given `CheckoutMode` on the last attempt to checkout
    a connection. On previous attempts `CheckoutMode::Immediately` will be used.

## 0.18.2

    * use tokio async `Lock` instead of a blocking mutex.

## 0.18.1

    * Bugfix: recalculation of connections for pool-per-node-multiplier was not done

## 0.18.0 (BREAKING CHANGE)

    * Removed pool stats
    * Instrumentation trait changed
    * Metrix output changed
    * PoolPerNode can create more sub pools to reduce contention

## 0.17.2 (BREAKING CHANGE)

    * added instrumentation for lock contention

## 0.16.2

    * fix bug in selecting connection(was always the same)

## 0.16.1

    * log created pool type as info

## 0.16.0 (BREAKING CHANGES, metrix only)

    * fixed type in metrics label `in_fligh_max` to `in_flight_max` old value still there but wll be removed

## 0.15.0 (BREAKING CHANGES)

    * renamed `pool_size` to `connections` in PoolStats
    * metrix: renamed metric `pool_size` to `connections`

## 0.14.0 (BREAKING CHANGES)

    * Changed the overall construction logic of the pools
    * ConnectionFactory can return connections to different nodes
    * Removed `PoolMode` which was replaced by `NodePoolStrategy`(breaking change)

## 0.13.4

* Ping struct implements `Debug` trait

## 0.13.3

* each node of a pool can be pinged
* pool returns connection strings for its nodes
* added `dbsize` command

## 0.13.2

* made MetrixInstrumentation ctor public

## 0.13.1

* Allow creation of pool without nodes
* Pool without nodes triggers metrics

## 0.13.0 Update to redis 0.13

## 0.12.0 (BREAKING CHANGES)

* Updated redis-rs to 0.12
* Added `dyn`
* Added commands `set_nx` and `mset_nx`

## 0.11.0 (BREAKING CHANGES)

* Updated redis-rs to 0.11

## 0.10.2

* Added some documentation

## 0.10.1

* Builder updates from environment while maintaining the builder chain

## 0.10.0

* only use one struct `RedisPool` as the external interface
* Remove generic parameters

## 0.9.1

* update parking lot

## 0.9.0

* Support LiFo and FiFo mode for reactivating idle connections
* measure connection idle times

## 0.8.0

* BREAKING CHANGES
    * keep closer to the types of redis-rs

## 0.7.0

* BREAKING CHANGES
    * The pool is generic and modules have been reorganized

## 0.6.1

* Fixed typos in some log messages

## 0.6.0

* Metrix supports inactivity tracking for complete panels(requires metrix feature)
* Added alerts to some instrumentation of metrix

## 0.5.7

* Fixed multi node instrumentation to show the correct values

## 0.5.6

* Allow MultiNode pool to have 0 nodes (but emit a warning)
* Instrumentation can be triggered externally

## 0.5.5

* Add and report node count
* Improve accuracy of stats

## 0.5.4

* Give hint on multiplexing in documentation

## 0.5.3

* Fixed metrix checked out per second.

## 0.5.2

* Fixed name in documentation for environment variable for `STATS_INTERVAL`.

## 0.5.1

* MultiPool will fail on creation when not enough clients could be created

## 0.5.0

* Changed error message for `CONNECT_TO` environment variable check
* Pool has a configurable interval to trigger the instruments
* Metrix feature tracks peak and bottom values
* Metrix feature can be disabled completely on inactivity

## 0.4.2

* Struct `ValueTracker` should be private and now is
* Fixed bug in `ValueTracker` only checking for new min values

## 0.4.1

* added special method to finish a builder
with Strings containing the connection info

## 0.4.0

* renamed `ReplicaSetPool` to MultiNodePool(breaking)
* Made `metrix` instrumentation configurable(breaking)

## 0.3.0

* Reworked instrumentation(breaking if used)
* AtomicIsizes in inner_pool to allow "temporary underflow"
* Config from environment

## 0.2.0

* Moved SingleNodePool to its own module(breaking)
* Added a replica set pool