Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/redisson/redisson

Redisson - Easy Redis Java client and Real-Time Data Platform. Valkey compatible. Sync/Async/RxJava/Reactive API. Over 50 Redis based Java objects and services: Set, Multimap, SortedSet, Map, List, Queue, Deque, Semaphore, Lock, AtomicLong, Map Reduce, Bloom filter, Spring Cache, Tomcat, Scheduler, JCache API, Hibernate, RPC, local cache ...
https://github.com/redisson/redisson

cache distributed distributed-locks executor hibernate java list lock map mapreduce queue redis redis-client redis-cluster scheduler session set spring-cache tomcat

Last synced: about 1 month ago
JSON representation

Redisson - Easy Redis Java client and Real-Time Data Platform. Valkey compatible. Sync/Async/RxJava/Reactive API. Over 50 Redis based Java objects and services: Set, Multimap, SortedSet, Map, List, Queue, Deque, Semaphore, Lock, AtomicLong, Map Reduce, Bloom filter, Spring Cache, Tomcat, Scheduler, JCache API, Hibernate, RPC, local cache ...

Awesome Lists containing this project

README

        

# Redisson - Easy Redis Java client
and Real-Time Data Platform
[![Maven Central](https://maven-badges.herokuapp.com/maven-central/org.redisson/redisson/badge.svg)](https://maven-badges.herokuapp.com/maven-central/org.redisson/redisson)
[![JavaDoc](http://www.javadoc.io/badge/org.redisson/redisson.svg)](http://www.javadoc.io/doc/org.redisson/redisson)
[![License](http://img.shields.io/:license-apache-brightgreen.svg)](http://www.apache.org/licenses/LICENSE-2.0.html)

[Quick start](https://github.com/redisson/redisson#quick-start) | [Documentation](https://github.com/redisson/redisson/wiki/Table-of-Content) | [Changelog](https://github.com/redisson/redisson/blob/master/CHANGELOG.md) | [Code examples](https://github.com/redisson/redisson-examples) | [FAQs](https://github.com/redisson/redisson/wiki/16.-FAQ) | [Report an issue](https://github.com/redisson/redisson/issues/new)

Based on high-performance async and lock-free Java Redis client and [Netty](http://netty.io) framework.

## Features

* Thread-safe implementation
* JDK 1.8+ compatible
* Android compatible
* [Redis](https://redis.io) 3.0 - 7.4 compatible
* [Valkey](https://valkey.io) 7.2.5+ compatible
* Supported deployment types
* [Proxy](https://github.com/redisson/redisson/wiki/2.-Configuration/#29-proxy-mode)
* [Multi-Cluster](https://github.com/redisson/redisson/wiki/2.-Configuration/#210-multi-cluster-mode)
* [Multi-Sentinel](https://github.com/redisson/redisson/wiki/2.-Configuration/#211-multi-sentinel-mode)
* [Single](https://github.com/redisson/redisson/wiki/2.-Configuration/#26-single-instance-mode)
* [Cluster](https://github.com/redisson/redisson/wiki/2.-Configuration/#24-cluster-mode)
* [Sentinel](https://github.com/redisson/redisson/wiki/2.-Configuration/#27-sentinel-mode)
* [Replicated](https://github.com/redisson/redisson/wiki/2.-Configuration/#25-replicated-mode)
* [Master and Slaves](https://github.com/redisson/redisson/wiki/2.-Configuration/#28-master-slave-mode)
* Amazon Web Services compatible
* [AWS Elasticache Serverless](https://aws.amazon.com/elasticache/features/#Serverless)
* [AWS Redis Global Datastore](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Redis-Global-Datastore.html)
* [AWS ElastiCache](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/WhatIs.html)
* [Amazon MemoryDB](https://aws.amazon.com/memorydb)
* Microsoft Azure compatible
* [Azure Redis Cache](https://azure.microsoft.com/en-us/services/cache/)
* [Azure Redis Cache active-passive replication](https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-how-to-geo-replication)
* [Azure Redis Cache active-active replication](https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-how-to-active-geo-replication)
* Google Cloud Memorystore compatible
* [Google Cloud Redis](https://cloud.google.com/memorystore/docs/redis/)
* [Google Cloud Redis High availability](https://cloud.google.com/memorystore/docs/redis/high-availability)
* Redis Enterprise compatible
* [Redis Enterprise](https://redis.com/redis-enterprise/)
* [Redis Enterprise Active-Active databases](https://docs.redis.com/latest/rs/databases/active-active/get-started/)
* [Redis Enterprise Multiple Active Proxy](https://docs.redis.com/latest/rs/databases/configure/proxy-policy/#about-multiple-active-proxy-support)
* IBM Cloud compatible
* [IBM Cloud Databases for Redis](https://www.ibm.com/cloud/databases-for-redis)
* Aiven compatible
* [Aiven for Redis](https://aiven.io/redis)
* Supports auto-reconnection
* Supports failed to send command auto-retry
* Supports OSGi
* Supports SSL
* Asynchronous connection pool
* Lua scripting
* [RediSearch](https://github.com/redisson/redisson/wiki/9.-distributed-services/#96-redisearch-service)
* [JSON datatype](https://github.com/redisson/redisson/wiki/6.-distributed-objects/#615-json-object-holder)
* [JSON Store](https://github.com/redisson/redisson/wiki/7.-distributed-collections/#724-json-store)
* [Reactive Streams](https://github.com/redisson/redisson/wiki/3.-operations-execution#32-reactive-way) API
* [RxJava3](https://github.com/redisson/redisson/wiki/3.-operations-execution#32-reactive-way) API
* [Asynchronous](https://github.com/redisson/redisson/wiki/3.-operations-execution#31-async-way) API
* Local cache support including [Caffeine](https://github.com/ben-manes/caffeine)-based implementation
* [Distributed Java objects](https://github.com/redisson/redisson/wiki/6.-Distributed-objects)
Object holder, Binary stream holder, Geospatial holder, BitSet, AtomicLong, AtomicDouble, PublishSubscribe,
Bloom filter, HyperLogLog
* [Distributed Java collections](https://github.com/redisson/redisson/wiki/7.-Distributed-collections)
Map, Multimap, Set, List, SortedSet, ScoredSortedSet, LexSortedSet, Queue, Deque, Blocking Queue, Bounded Blocking Queue, Blocking Deque, Delayed Queue, Priority Queue, Priority Deque
* [Distributed Java locks and synchronizers](https://github.com/redisson/redisson/wiki/8.-Distributed-locks-and-synchronizers)
Lock, FairLock, MultiLock, RedLock, ReadWriteLock, Semaphore, PermitExpirableSemaphore, CountDownLatch
* [Distributed services](https://github.com/redisson/redisson/wiki/9.-distributed-services)
Remote service, Live Object service, Executor service, Scheduler service, MapReduce service
* [Helidon](https://github.com/redisson/redisson/tree/master/redisson-helidon) integration
* [Micronaut](https://github.com/redisson/redisson/tree/master/redisson-micronaut) integration
* [Quarkus](https://github.com/redisson/redisson/tree/master/redisson-quarkus) integration
* [Spring Cache](https://github.com/redisson/redisson/wiki/14.-Integration-with-frameworks/#142-spring-cache) implementation
* [Spring Cloud Stream](https://github.com/redisson/redisson/wiki/14.-Integration-with-frameworks/#149-spring-cloud-stream) implementation
* [Spring Transaction API](https://github.com/redisson/redisson/wiki/14.-Integration-with-frameworks/#148-spring-transaction-manager) implementation
* [Spring Data Redis](https://github.com/redisson/redisson/tree/master/redisson-spring-data) implementation
* [Spring Boot Starter](https://github.com/redisson/redisson/tree/master/redisson-spring-boot-starter) implementation
* [Hibernate Cache](https://github.com/redisson/redisson/tree/master/redisson-hibernate) implementation
* [MyBatis Cache](https://github.com/redisson/redisson/tree/master/redisson-mybatis) implementation
* [Transactions API](https://github.com/redisson/redisson/wiki/10.-Additional-features#104-transactions)
* [JCache API (JSR-107)](https://github.com/redisson/redisson/wiki/14.-Integration-with-frameworks/#144-jcache-api-jsr-107-implementation) implementation
* [Tomcat Session Manager](https://github.com/redisson/redisson/tree/master/redisson-tomcat) implementation
* [Spring Session](https://github.com/redisson/redisson/wiki/14.-Integration-with-frameworks/#147-spring-session) implementation
* [Redis pipelining](https://github.com/redisson/redisson/wiki/10.-additional-features#103-execution-batches-of-commands) (command batches)
* Supports many popular codecs ([Kryo](https://github.com/EsotericSoftware/kryo), [Jackson JSON](https://github.com/FasterXML/jackson), [Avro](http://avro.apache.org/), [Smile](http://wiki.fasterxml.com/SmileFormatSpec), [CBOR](http://cbor.io/), [MsgPack](http://msgpack.org/), [Amazon Ion](https://amzn.github.io/ion-docs/), [LZ4](https://github.com/jpountz/lz4-java), [Snappy](https://github.com/xerial/snappy-java), [Protobuf](https://github.com/protocolbuffers/protobuf) and JDK Serialization)
* 2000+ unit tests

## Comparing solutions

### [Redisson vs Jedis](https://redisson.org/feature-comparison-redisson-vs-jedis.html)
### [Redisson vs Lettuce](https://redisson.org/feature-comparison-redisson-vs-lettuce.html)
### [Redis vs Apache Ignite](https://redisson.org/feature-comparison-redis-vs-ignite.html)
### [Redis vs Hazelcast](https://redisson.org/feature-comparison-redis-vs-hazelcast.html)
### [Redis vs Ehcache](https://redisson.org/feature-comparison-redis-vs-ehcache.html)

## Success stories

### [Moving from Hazelcast to Redis / Datorama](https://engineering.datorama.com/moving-from-hazelcast-to-redis-b90a0769d1cb)
### [Migrating from Hazelcast to Redis / Halodoc](https://blogs.halodoc.io/why-and-how-we-move-from-hazelcast-to-redis-2/)
### [Distributed Locking with Redis (Migration from Hazelcast) / ContaAzul](https://carlosbecker.com/posts/distributed-locks-redis/)
### [Migrating from Coherence to Redis](https://www.youtube.com/watch?v=JF5R2ucKTEg)

## Quick start

#### Maven

org.redisson
redisson
3.34.1

#### Gradle
compile 'org.redisson:redisson:3.34.1'

#### SBT
libraryDependencies += "org.redisson" % "redisson" % "3.34.1"

#### Java

```java
// 1. Create config object
Config config = new Config();
config.useClusterServers()
// use "rediss://" for SSL connection
.addNodeAddress("redis://127.0.0.1:7181");

// or read config from file
config = Config.fromYAML(new File("config-file.yaml"));
```

```java
// 2. Create Redisson instance

// Sync and Async API
RedissonClient redisson = Redisson.create(config);

// Reactive API
RedissonReactiveClient redissonReactive = redisson.reactive();

// RxJava3 API
RedissonRxClient redissonRx = redisson.rxJava();
```

```java
// 3. Get Redis based implementation of java.util.concurrent.ConcurrentMap
RMap map = redisson.getMap("myMap");

RMapReactive mapReactive = redissonReactive.getMap("myMap");

RMapRx mapRx = redissonRx.getMap("myMap");
```

```java
// 4. Get Redis based implementation of java.util.concurrent.locks.Lock
RLock lock = redisson.getLock("myLock");

RLockReactive lockReactive = redissonReactive.getLock("myLock");

RLockRx lockRx = redissonRx.getLock("myLock");
```

```java
// 4. Get Redis based implementation of java.util.concurrent.ExecutorService
RExecutorService executor = redisson.getExecutorService("myExecutorService");

// over 50 Redis based Java objects and services ...

```

Upgrade to __[Redisson PRO](https://redisson.pro)__ with **advanced features**.

## Downloads

[Redisson 3.34.1](https://repo1.maven.org/maven2/org/redisson/redisson/3.34.1/redisson-3.34.1.jar),
[Redisson node 3.34.1](https://repo1.maven.org/maven2/org/redisson/redisson-all/3.34.1/redisson-all-3.34.1.jar)

## FAQs

[Q: What is the cause of RedisTimeoutException?](https://github.com/redisson/redisson/wiki/16.-FAQ#q-what-is-the-cause-of-redistimeoutexception)

[Q: When do I need to shut down a Redisson instance, at the end of each request or the end of the life of a thread?](https://github.com/redisson/redisson/wiki/16.-FAQ#q-when-do-i-need-to-shut-down-a-redisson-instance-at-the-end-of-each-request-or-the-end-of-the-life-of-a-thread)

[Q: In MapCache/SetCache/SpringCache/JCache, I have set an expiry time to an entry, why is it still in Redis when it should be disappeared?](https://github.com/redisson/redisson/wiki/16.-FAQ#q-in-mapcachesetcachespringcachejcache-i-have-set-an-expiry-time-to-an-entry-why-is-it-still-in-redis-when-it-should-be-disappeared)

[Q: How can I perform Pipelining/Transaction through Redisson?](https://github.com/redisson/redisson/wiki/16.-FAQ#q-how-can-i-perform-pipeliningtransaction-through-redisson)

[Q: Is Redisson thread safe? Can I share an instance of it between different threads?](https://github.com/redisson/redisson/wiki/16.-FAQ#q-is-redisson-thread-safe-can-i-share-an-instance-of-it-between-different-threads)

[Q: Can I use different encoder/decoders for different tasks?](https://github.com/redisson/redisson/wiki/16.-FAQ#q-can-i-use-different-encoderdecoders-for-different-tasks)