We now expose CacheStatistics for RedisCache. Each cache tracks its statistics (retrievals, hits, misses, stores, removals, lock wait) locally. CacheStatistics is exposed through RedisCacheWriter to allow for statistics customization depending on the cache writer strategy. The statistic object is a singleton per cache instance that gets updated with as the cache operates.
RedisCache cache = …;
CacheStatistics statistics = cache.getStatistics();
statistics.getRetrievals();
statistics.getHits();
Original Pull Request: #545
Set MKSTREAM by default when calling createGroup on the operations API as that should be the default behavior in the first place. Reformat code. Add since tags.
Original pull request: #527.
We now correctly check if a BLOCK option is configured using a timeout of zero or higher. Previously we only checked if the configured value is greater than zero and didn't consider that a timeout of zero blocks indefinitely.
Original Pull Request: #528
Replace condition-based polling/waiting with Awaitility. Improve assertions for timing-based checks. Increase number of HyperLogLog samples to reduce probability of clashing elements.
Remove long-waiting sleeps that did not lead to an assertion.
Original Pull Request: #525
Rename PendingMessage.getStringId to PendingMessage.getIdAsString for consistent naming scheme. Remove getElapsedTimeSinceLastDeliveryMS method for now in favor of getElapsedTimeSinceLastDelivery.
Use primitive long instead of boxed wrapper to avoid nullability where possible. Move PendingMessage* converters to StreamConverters.
Add assertions.
Original pull request: #512.
We now allow customization of flushing when using pipelining with Lettuce. Lettuce flushes each command by default. To optimize for performance, flushing behavior can be customized using a PipeliningFlushPolicy. Flush each command, flush on close and flush after n commands are the bundled implementations that can be configured on LettuceConnectionFactory.
Original Pull Request: #511
We revised our imperative Template API by accepting Duration and Instant types in addition to methods accepting timeout/TimeUnit respective Date.
Original Pull Request: #501
We now select the database on dedicated connection acquisition only if the current database is different from the default database. Database connections are expected to use the default database index when they are acquired so the database index may be changed for the duration when a connection is in use.
We also reset dedicated connections to use the default database index on connection cleanup to bring the connection back into its initial state.
Add author tag and tests.
Original pull request: #496.
Remove data node password reuse for sentinel as we favor explicit configuration over implicit.
Use RedisURI builder and not sentinel URI builder to configure the SentinelURI correctly.
Associate masterId with outermost RedisURI.
Original pull request: #495.
We now expose two separate properties in RedisSentinelConfiguration to configure the data password individually from the sentinel password.
Original pull request: #495.
We now apply the password to all Sentinel endpoints described through RedisURI.
We also apply all remaining settings to all Sentinel endpoints to ensure configuration propagation.
Original Pull Request: #490
Empty Strings changed to be considered null throwing an exception on getRequiredAttribute so we now set the value explicitly for this attribute when considered empty.
Original pull request: #491.
Cleanup publishers are now subscribed to instead of setting the subscribeOn Scheduler to ensure connections get closed after canceling the stream.
Original Pull Request: #488