Lettuce is a scalable thread-safe Redis client for synchronous,
asynchronous and reactive usage. Multiple threads may share one connection if they avoid blocking and transactional
operations such as BLPOP
and MULTI
/EXEC
.
lettuce is built with netty.
Supports advanced Redis features such as Sentinel, Cluster, Pipelining, Auto-Reconnect and Redis data models.
This version of lettuce has been tested against the latest Redis source-build.
- lettuce 3.x works with Java 6, 7 and 8, lettuce 4.x requires Java 8
- synchronous, asynchronous and reactive usage
- Redis Sentinel
- Redis Cluster
- SSL and Unix Domain Socket connections
- Streaming API
- CDI and Spring integration
- Codecs (for UTF8/bit/JSON etc. representation of your data)
- multiple Command Interfaces
See the Wiki for more docs.
- Google Group: lettuce-redis-client-users or [email protected]
- Github Issues
Binaries and dependency information for Maven, Ivy, Gradle and others can be found at http://search.maven.org.
Releases of lettuce are available in the maven central repository. Take also a look at the Download page in the Wiki.
Example for Maven:
<dependency>
<groupId>biz.paluch.redis</groupId>
<artifactId>lettuce</artifactId>
<version>x.y.z</version>
</dependency>
Shaded JAR-File (packaged dependencies and relocated to the com.lambdaworks
package to prevent version conflicts)
<dependency>
<groupId>biz.paluch.redis</groupId>
<artifactId>lettuce</artifactId>
<version>x.y.z</version>
<classifier>shaded</classifier>
<exclusions>
<exclusion>
<groupId>io.reactivex</groupId>
<artifactId>rxjava</artifactId>
</exclusion>
<exclusion>
<groupId>org.latencyutils</groupId>
<artifactId>LatencyUtils</artifactId>
</exclusion>
<exclusion>
<groupId>io.netty</groupId>
<artifactId>netty-common</artifactId>
</exclusion>
<exclusion>
<groupId>io.netty</groupId>
<artifactId>netty-transport</artifactId>
</exclusion>
<exclusion>
<groupId>io.netty</groupId>
<artifactId>netty-handler</artifactId>
</exclusion>
<exclusion>
<groupId>io.netty</groupId>
<artifactId>netty-codec</artifactId>
</exclusion>
<exclusion>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</exclusion>
<exclusion>
<groupId>io.netty</groupId>
<artifactId>netty-transport-native-epoll</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</exclusion>
</exclusions>
</dependency>
or snapshots at https://oss.sonatype.org/content/repositories/snapshots/
RedisClient client = RedisClient.create("redis://localhost")
RedisStringsConnection<String, String> connection = client.connect()
String value = connection.get("key")
Each Redis command is implemented by one or more methods with names identical to the lowercase Redis command name. Complex commands with multiple modifiers that change the result type include the CamelCased modifier as part of the command name, e.g. zrangebyscore and zrangebyscoreWithScores.
See Basic usage for further details.
RedisStringsConnection<String, String> async = client.connectAsync()
RedisFuture<String> set = async.set("key", "value")
RedisFuture<String> get = async.get("key")
async.awaitAll(set, get) == true
set.get() == "OK"
get.get() == "value"
See Asynchronous API for further details.
RedisPubSubCommands<String, String> connection = client.connectPubSub().sync();
connection.addListener(new RedisPubSubListener<String, String>() { ... })
connection.subscribe("channel")
Lettuce is built with Apache Maven. The tests require multiple running Redis instances for different test cases which
are configured using a Makefile
. All tests run against Redis branch 3.0
To build:
$ git clone https://github.com/mp911de/lettuce.git
$ cd lettuce/
$ make prepare ssl-keys
$ make test
- Initial environment setup (clone and build
redis
):make prepare
- Setup SSL Keys:
make ssl-keys
- Run the build:
make test
- Start Redis (manually):
make start
- Stop Redis (manually):
make stop
For bugs, questions and discussions please use the Github Issues.
- [Apache License 2.0] (http://www.apache.org/licenses/LICENSE-2.0)
- Fork of https://github.com/wg/lettuce
Github is for social coding: if you want to write code, I encourage contributions through pull requests from forks of this repository. Create Github tickets for bugs and new features and comment on the ones that you are interested in and take a look into CONTRIBUTING.md