Releases: redis/lettuce
3.2.Beta1
This release features Unix domain sockets on linux-x86_64 systems. Local connections to a Redis instance are now possible without the use of the network. A second feature with a huge impact is client options. Client options allow to control behavior on a fine-grained base. It is now possible to turn off auto-reconnect, validate the connection with a PING before activating the connection for client usage and many more.
We tested lettuce using YourKit for performance. Subtracting all IO the most time is spent on constructing the return futures and command objects.
The async API can issue about 300Kops/sec whereas the sync API performs about 13Kops/sec (GET's, PING's) on a single thread.
Sync performance depends on the Redis performance (tested on a Mac, 2,7 GHz Intel Core i7).
lettuce provides now also base functionality for building clients using the Redis protocol. An example is spinach (https://github.com/mp911de/spinach).
lettuce is built with Java 8 but can be used with Java 6, 7 and 8. Java 6 and 7 support will be dropped with lettuce 4.0.
The new lettuce-testcontainer project ensures until then. You can find the build results at https://travis-ci.org/mp911de/lettuce-testcontainer
If you need any support, meet lettuce at https://gitter.im/mp911de/lettuce
Unix Domain Sockets
Unix Domain Sockets are useful only if connecting locally and maintaining the connection point on your own.
Using RedisClusterClient with Unix Domain Sockets would connect to the local node using a socket and then open
TCP connection to all the other hosts. A good example is connecting locally to a standalone or a single cluster node
to gain performance.
Unix Domain Socket connections are currently only available to Linux x86_64 systems with a minimum netty version of
4.0.26.Final. You can, however, port the native library to your system. The netty guys would appreciate.
See https://github.com/mp911de/lettuce/wiki/Unix-Domain-Sockets
Enhancements
- Provide an option to connect to Redis via Unix Domain Sockets #52
- Add new cluster command MYID #53 (Thanks to @taer)
- Expose futures of re-subscription on reconnect #62 (Thanks to @kichik)
- Ping before connect #61 (Thanks to @kichik)
- Introduce ClientOptions to control specific behavior #58
- Enhance stability when reconnecting #56
- Extract and use interfaces for improved extensibility
Fixes
- RedisPubSubConnectionImpl.activated does not call super.activated() #55
- RedisPubSubConnectionImpl.activated() deadlock #57
Other
- Inspect lettuce using YourKit #54
lettuce requires a minimum of Java 8 to build and Java 6 run. It is tested continuously against Redis 3.0.
3.1.Final
This release introduces support for SSL, enables lambda expressions on streaming channels and a lot of bugfixes and resilience changes.
lettuce extensibility is improved. You can override certain parts of the client to supply classes (connection classes) that behave the way you need by extending RedisClient or RedisClusterClient.
You can reset the internal connection state in case you run into broken connections (invalid connection state due to SSL tunneling or others) by calling the reset() method on your connection.
lettuce is now built with Java 8 but can be used with Java 6, 7 and 8. Java 6 and 7 support will be dropped with lettuce 4.0. The new lettuce-testcontainer project ensures until then. You can find the build results at https://travis-ci.org/mp911de/lettuce-testcontainer
lettuce is also now on Gitter. If you need any support, meet lettuce at https://gitter.im/mp911de/lettuce
SSL Support
SSL support for Redis means that you need a Redis that is behind some SSL tunnel (mostly stunnel). You can use this feature with Java 6, 7 and 8. The only issue using Java 6 is that you won't be able to verify the Redis host name against the SSL certificate. Redis with SSL works only in a sane way when you use standalone Redis. Sentinel and Redis Cluster provide host and port details, and since Redis has no out-of-the-box SSL support you would always connect to the unencrypted ports even your first connection to Sentinel or Cluster was encrypted.
SSL and StartTLS are supported; Client certificates are not supported.
See https://github.com/mp911de/lettuce/wiki/SSL-Connections for details on SSL connections.
Enhancements
- Change build environment to JDK8 #49
- Allows lambda expressions on streaming channels enhancement #47
- JavaDoc compatibility with Java 8 #39
- Add cluster commands: Readonly, and clusterNodes #38 (for standalone) (Thanks to @taer)
- Add RedisFuture return to RedisPubSubConnection API enhancement #34
- Provide API and visibility in order to extend RedisClient and its connections #33
- SSL support enhancement and improved channel initialization #28
- Allow reset on internal connection state enhancement #25
- Enhance lettuce resilience enhancement #24
- Add jsr305 annotation lib #45
Fixes
- Fix synchronized issue enhancement #44 (Thanks to @taer)
- RedisClusterConnection stops operation after #42 (Thanks to @taer)
- Fix time conversion for timeout settings #36 (Thanks to @taer)
- Pool return no longer nulls connection #35 (Thanks to @taer)
- Fix Method Signature RedisClient.connectPubSub bug #23
- Fix URL parsing #32
lettuce requires a minimum of Java 8 to build and Java 6 run. It is tested continuously against Redis 3.0.
3.0.3.Final
3.0.2.Final
3.0.1.Final
This release contains:
Fixes
- Test improvements for more stability
- URI for sentinel connections
- Provide static syncHandler
- Handle premature channelInactive while ongoing close (avoid NPE)
- Fix signature of clusterSlaves #18
- Fix SCAN command with scan args
Enhancements
- Optimized CRC16 calculation (thanks to Jedis for co-working)
- Use fine grained exceptions for Timeout, CommandExecution and Connection
3.0.Final
I'm pleased to announce the lettuce 3.0.Final release. Lettuce is a scalable
thread-safe Redis client providing both synchronous and asynchronous
connections. Multiple threads may share one connection provided they avoid
blocking and transactional operations such as BLPOP, and MULTI/EXEC. Multiple
connections are efficiently managed by the excellent netty NIO framework.
Support for advanced Redis features such as Sentinel, Cluster and Redis data
models are included.
These are the changes since 2.3.3
Enhancements
- Redis Cluster support (Redis 3.0)
- Redis Sentinel support (Redis 2.x)
- Upgrade to netty 4.0.19 (from netty 3.x)
- CDI and Spring support (Bean Factory for the Redis Client)
- Database and Authentication on initial connect
- Streaming API: Instead of receiving huge lists and maps you can now provide your own StreamingChannel which is notified on every incoming key/value
- Connection-Pooling and transparent Connection-Pooling
- Listenable Futures (using Guava) for true async operations
- Extended documentation
- Standalone and shaded Jar
- Relaxed data models for external use, moved ClusterPartitionParser and models to own package
- Added shutdown with timeout, used minimal timeout for shutdown
- Minor API improvements (connect with URI), tons of docs and argument checks
- Use AssertJ for assertions #13
- Additional cluster tests (new suite) #5
- Updated documentation
- Add tests for untested code #4
- Integration on Travis CI
- Included redis test setup
- Switched coverage provider to Jacoco
- Switched from gihub site plugin to maven-scm-publish plugin
- Changed redis ports from 63xx to 64xx for testing
Fixes
- Bugfixes in reconnection and stability
- Prevent refCnt exceptions in case of parallel close & read
- Fixed PubSub API
- Fixed command leaking when client is not yet online/disconnected and commands are issued while the client is in the re-connect phase
- Changed channel handling to aviod NPE
- Fixed clientKill because of changed clientList output
- Adjusted resource cleanup to prevent memory leaks
- Fixed NPE on sync cluster connections
- Fixed CDI/Spring support and added tests for CDI/Spring
- Fixed Connections.close, Exception was thrown even if right connection object was supplied
- Support for qualified clients in case there are unqualified instances
- Code cleanup, fixing sonar violations
- Minor fixes like typos, Maven site on http://redis.paluch.biz
- Improved test stability for a stable and reproducible build
Commands
- SENTINEL MASTERS command
- DEBUG SEGFAULT command
- PUBSUB command
- Sorted Set commands ZLEXCOUNT, ZRANGEBYLEX, ZREMRANGEBYLEX
- Add support and parser for ROLE command #6
- CLUSTER SLOTS command #7
- COMMAND command #8
- COMMAND COUNT #9
- COMMAND INFO #11
- Extended CLIENT KILL #12
- Support for the latest redis commands (HyperLogLog, SCAN, TIME and many more)
lettuce 3.0.Final requires a minimum of Java 6 to build and run. It is tested against Redis 2.8 and Redis 3.0.
For complete information on lettuce see the websites:
3.0.Beta3
This release contains:
Fixes
- Fixed Connections.close, Exception was thrown even if right connection object was supplied (036d1ea)
- Support for qualified clients in case there are unqualified instances (5b49c84)
- Fixed NPE on sync cluster connections (bbba783)
- Changed channel handling to aviod NPE (707b231)
- Fixed CDI/Spring support and added tests for CDI/Spring (b5832f9)
Enhancements
- Add support and parser for ROLE command #6
- Add support for CLUSTER SLOTS command #7
- Add support for COMMAND command #8
- Add support for COMMAND COUNT #9
- Add support for COMMAND INFO #11
- Add support for extended CLIENT KILL #12
- Relaxed data models for external use, moved ClusterPartitionParser and models to own package (534ed59)
- Added shutdown with timeout, used minimal timeout for shutdown (1ac42af)
- Minor API improvements (connect with URI), tons of docs and argument checks (063e20a)
- Use AssertJ for assertions #13
- Additional cluster tests (new suite) #5
- Updated documentation
- Add tests for untested code #4
- Switched coverage provider to jacoco (ab0821d, bc14a79)
- Switched from gihub site plugin to maven-scm-publish plugin (54d0c36)
3.0.Beta2
This release contains:
- Documentation (Javadoc and Wiki, 02e384c, 15daf1d, 1a12055, 7613f72, d120ccc, 9682666, 854c9ff, 34823a6)
- Improved test stability (25577c3, 8491dd8, b8f8957, 25577c3) for a stable and reproducible build
- Changed redis ports from 63xx to 64xx for testing (9a1aa59)
- Fixed clientKill because of changed clientList output (b07a2f0)
- Adjusted resource cleanup to prevent memory leaks (807f391)
- Prevent refCnt exceptions in case of parallel close & read (590a133)
- Fixed PubSub API (f05e960)
- Fixed command leaking when client is not yet online/disconnected and commands are issued while the client is in the re-connect phase (ddce2ff, 6a6f10e)
- Code cleanup, fixing sonar violations
- Support for SENTINEL MASTERS command (b6f2fb5)
- Support for DEBUG SEGFAULT command (a47686c)
- Support for PUBSUB command (e77020e)
- Support for sorted set commands ZLEXCOUNT, ZRANGEBYLEX, ZREMRANGEBYLEX (c6722f5)
- Minor fixes like typos, maven site on http://redis.paluch.biz
3.0.Beta1
- Redis Cluster support (Redis 3.0)
- Redis Sentinel support (Redis 2.x)
- Upgrade to netty 4.0.19 (from netty 3.x)
- Support for the latest redis commands (HyperLogLog, SCAN, TIME and many more)
- CDI and Spring Support (Bean Factory for the Redis Client)
- Database and Authentication on initial connect
- Streaming API: Instead of receiving huge lists and maps you can now provide your own StreamingChannel which is notified on every incoming key/value
- Connection-Pooling and transparent Connection-Pooling
- Listenable Futures (using Guava) for true async operations
- Bugfixes in reconnection and stability
- Integration on Travis CI
- Included redis test setup (inspired by Jedis)
- Extended documentation
- Standalone and shaded Jar