Lettuce alternatives and similar libraries
Based on the "Database" category.
Alternatively, view lettuce alternatives based on common mentions on social networks and blogs.
-
OpenDJ
OpenDJ is an LDAPv3 compliant directory service, which has been developed for the Java platform, providing a high performance, highly available, and secure store for the identities managed by your organization. Its easy installation process, combined with the power of the Java platform makes OpenDJ the simplest, fastest directory to deploy and manage. -
Spring Data JPA MongoDB Expressions
Use the MongoDB query language to query your relational database, typically from frontend.
SaaSHub - Software Alternatives and Reviews
Do you think we are missing an alternative of Lettuce or a related project?
README
Lettuce - Advanced Java Redis client
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.
- 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
- Support for Native Transports
- Compatible with Java 8++ (implicit automatic module w/o descriptors)
See the reference documentation and Wiki for more details.
Communication
- GitHub Discussions (Q&A, Ideas, General discussion)
- Stack Overflow (Questions): https://stackoverflow.com/questions/tagged/lettuce
- Gitter (chat):
- Twitter: @LettuceDriver
- GitHub Issues (Bug reports, feature requests)
Documentation
Binaries/Download
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 Releases.
Example for Maven:
<dependency>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
<version>x.y.z</version>
</dependency>
If you'd rather like the latest snapshots of the upcoming major version, use our Maven snapshot repository and declare the appropriate dependency version.
<dependency>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
<version>x.y.z.BUILD-SNAPSHOT</version>
</dependency>
<repositories>
<repository>
<id>sonatype-snapshots</id>
<name>Sonatype Snapshot Repository</name>
<url>https://oss.sonatype.org/content/repositories/snapshots/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
Basic Usage
RedisClient client = RedisClient.create("redis://localhost");
StatefulRedisConnection<String, String> connection = client.connect();
RedisStringCommands sync = connection.sync();
String value = sync.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.
Asynchronous API
StatefulRedisConnection<String, String> connection = client.connect();
RedisStringAsyncCommands<String, String> async = connection.async();
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.
Reactive API
StatefulRedisConnection<String, String> connection = client.connect();
RedisStringReactiveCommands<String, String> reactive = connection.reactive();
Mono<String> set = reactive.set("key", "value");
Mono<String> get = reactive.get("key");
set.subscribe();
get.block() == "value"
See Reactive API for further details.
Pub/Sub
RedisPubSubCommands<String, String> connection = client.connectPubSub().sync();
connection.getStatefulConnection().addListener(new RedisPubSubListener<String, String>() { ... })
connection.subscribe("channel")
Cloud Provider Compatibility
While we're not actively testing Lettuce against various cloud offerings, we've verified initial compatibility with the following services (or have seen folks using Lettuce there):
- AWS Elasticache (Operated in replica- and Redis Cluster mode)
- Azure Redis
- IBM Cloud Databases for Redis
- Google Cloud Memorystore for Redis
- RedisLabs Enterprise Redis Cluster
Note: Some providers operate Redis in non-standard modes that aren't fully supported by Lettuce.
Building
Lettuce is built with Apache Maven. The tests require multiple running Redis instances for different test cases which
are configured using a Makefile
. Tests run by default against Redis unstable
.
To build:
$ git clone https://github.com/lettuce-io/lettuce-core.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
Bugs and Feedback
For bugs, questions and discussions please use the GitHub Issues.
License
Contributing
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
*Note that all licence references and agreements mentioned in the Lettuce README section above
are relevant to that project's source code only.