Redis integration with Micronaut
Integrates Redisson with Micronaut framework.
Supports Micronaut 2.0.x - 4.x.x
1. Add redisson-micronaut
dependency into your project:
Maven
<dependency >
<groupId >org.redisson</groupId >
<!-- for Micronaut v2.0.x - v2.5.x -->
<artifactId >redisson-micronaut-20</artifactId >
<!-- for Micronaut v3.x.x -->
<artifactId >redisson-micronaut-30</artifactId >
<!-- for Micronaut v4.x.x -->
<artifactId >redisson-micronaut-40</artifactId >
<version >3.25.2</version >
</dependency >
Gradle
// for Micronaut v2.0.x - v2.5.x
compile ' org.redisson:redisson-micronaut-20:3.25.2'
// for Micronaut v3.x.x
compile ' org.redisson:redisson-micronaut-30:3.25.2'
// for Micronaut v4.x.x
compile ' org.redisson:redisson-micronaut-40:3.25.2'
2. Add settings into application.yml
file
Config structure is a Redisson YAML configuration -
single mode ,
replicated mode ,
cluster mode ,
sentinel mode ,
proxy mode
NOTE: Setting names in camel case should be joined with hyphens (-).
Config example:
redisson :
single-server-config :
address : " redis://127.0.0.1:6379"
threads : 16
netty-threads : 32
Setting prefix
Local cache
Data partitioning
Ultra-fast read/write
redisson.caches.*open-source version
❌
❌
❌
redisson.caches.*Redisson PRO version
❌
❌
✔️
redisson.local-caches.*available only in Redisson PRO
✔️
❌
✔️
redisson.clustered-caches.*available only in Redisson PRO
❌
✔️
✔️
redisson.clustered-local-caches.*available only in Redisson PRO
✔️
✔️
✔️
Map Cache settings. Click to expand!
Setting name
redisson.caches.[CACHE_NAME].max-size
Type
java.lang.Integer
Description
Max size of this cache. Superfluous elements are evicted using LRU algorithm. If 0
the cache is unbounded.
Default value
0
Setting name
redisson.caches.[CACHE_NAME].codec
Type
java.lang.Class
Description
Redis data codec applied to cache entries.
Default value
Kryo5Codec
Setting name
redisson.caches.[CACHE_NAME].expire-after-write
Type
java.time.Duration
Description
Cache entry time to live duration applied after each write operation. Disabled if value is 0
.
Default value
0
Setting name
redisson.caches.[CACHE_NAME].expire-after-access
Type
java.time.Duration
Description
Cache entry time to live duration applied after each read operation. Disabled if value is 0
.
Default value
0
Setting name
redisson.caches.[CACHE_NAME].write-behind-batch-size
Type
java.lang.Integer
Description
Write behind tasks batch size. During MapWriter
methods execution all updates accumulated into a batch of specified size.
Default value
50
Setting name
redisson.caches.[CACHE_NAME].write-behind-delay
Type
java.time.Duration
Description
Write behind tasks execution delay. All updates would be applied with lag not more than specified delay.
Default value
1000ms
Setting name
redisson.caches.[CACHE_NAME].writer
Type
java.lang.Class
Description
MapWriter
object used for write-through operations
Default value
null
Setting name
redisson.caches.[CACHE_NAME].write-mode
Type
java.lang.String
Description
Write mode. Default is WRITE_THROUGH
Default value
null
Setting name
redisson.caches.[CACHE_NAME].loader
Type
java.lang.Class
Description
MapLoader
object used to load entries during read-operations execution
Default value
null
Config example:
redisson :
single-server-config :
address : " redis://127.0.0.1:6379"
caches :
my-cache1 :
expire-after-write : 10s
expire-after-access : 3s
max-size : 1000
codec : org.redisson.codec.Kryo5Codec
my-cache2 :
expire-after-write : 200s
expire-after-access : 30s
Clustered Map Cache settings. Click to expand!
This feature is available only in Redisson PRO
Setting name
redisson.clustered-caches.[CACHE_NAME].max-size
Type
java.lang.Integer
Description
Max size of this cache. Superfluous elements are evicted using LRU algorithm. If 0
the cache is unbounded.
Default value
0
Setting name
redisson.clustered-caches.[CACHE_NAME].codec
Type
java.lang.Class
Description
Redis data codec applied to cache entries.
Default value
Kryo5Codec
Setting name
redisson.clustered-caches.[CACHE_NAME].expire-after-write
Type
java.time.Duration
Description
Cache entry time to live duration applied after each write operation. Disabled if value is 0
.
Default value
0
Setting name
redisson.clustered-caches.[CACHE_NAME].expire-after-access
Type
java.time.Duration
Description
Cache entry time to live duration applied after each read operation. Disabled if value is 0
.
Default value
0
Setting name
redisson.clustered-caches.[CACHE_NAME].write-behind-batch-size
Type
java.lang.Integer
Description
Write behind tasks batch size. During MapWriter
methods execution all updates accumulated into a batch of specified size.
Default value
50
Setting name
redisson.clustered-caches.[CACHE_NAME].write-behind-delay
Type
java.time.Duration
Description
Write behind tasks execution delay. All updates would be applied with lag not more than specified delay.
Default value
1000ms
Setting name
redisson.clustered-caches.[CACHE_NAME].writer
Type
java.lang.Class
Description
MapWriter
object used for write-through operations
Default value
null
Setting name
redisson.clustered-caches.[CACHE_NAME].write-mode
Type
java.lang.String
Description
Write mode. Default is WRITE_THROUGH
Default value
null
Setting name
redisson.clustered-caches.[CACHE_NAME].loader
Type
java.lang.Class
Description
MapLoader
object used to load entries during read-operations execution
Default value
null
Config example:
redisson :
single-server-config :
address : " redis://127.0.0.1:6379"
clustered-caches :
my-cache1 :
expire-after-write : 10s
expire-after-access : 3s
max-size : 1000
codec : org.redisson.codec.Kryo5Codec
my-cache2 :
expire-after-write : 200s
expire-after-access : 30s
Clustered Local Cached Map Cache settings. Click to expand!
This feature is available only in Redisson PRO
Setting name
redisson.clustered-local-caches.[CACHE_NAME].max-size
Type
java.lang.Integer
Description
Max size of this cache. Superfluous elements are evicted using LRU algorithm. If 0
the cache is unbounded.
Default value
0
Setting name
redisson.clustered-local-caches.[CACHE_NAME].codec
Type
java.lang.Class
Description
Redis data codec applied to cache entries.
Default value
Kryo5Codec
Setting name
redisson.clustered-local-caches.[CACHE_NAME].expire-after-write
Type
java.time.Duration
Description
Cache entry time to live duration applied after each write operation. Disabled if value is 0
.
Default value
0
Setting name
redisson.clustered-local-caches.[CACHE_NAME].expire-after-access
Type
java.time.Duration
Description
Cache entry time to live duration applied after each read operation. Disabled if value is 0
.
Default value
0
Setting name
redisson.clustered-local-caches.[CACHE_NAME].write-behind-batch-size
Type
java.lang.Integer
Description
Write behind tasks batch size. During MapWriter
methods execution all updates accumulated into a batch of specified size.
Default value
50
Setting name
redisson.clustered-local-caches.[CACHE_NAME].write-behind-delay
Type
java.time.Duration
Description
Write behind tasks execution delay. All updates would be applied with lag not more than specified delay.
Default value
1000ms
Setting name
redisson.clustered-local-caches.[CACHE_NAME].writer
Type
java.lang.Class
Description
MapWriter
object used for write-through operations
Default value
null
Setting name
redisson.clustered-local-caches.[CACHE_NAME].write-mode
Type
java.lang.String
Description
Write mode. Default is WRITE_THROUGH
Default value
null
Setting name
redisson.clustered-local-caches.[CACHE_NAME].loader
Type
java.lang.Class
Description
MapLoader
object used to load entries during read-operations execution
Default value
null
Setting name
redisson.clustered-local-caches.[CACHE_NAME].cache-size
Type
java.lang.Integer
Description
Local cache size. If size is 0
then local cache is unbounded.
Default value
0
Setting name
redisson.clustered-local-caches.[CACHE_NAME].reconnection-strategy
Type
java.lang.String
Description
Used to load missed updates during any connection failures to Redis. Since, local cache updates can't be executed in absence of connection to Redis. CLEAR
- Clear local cache if map instance has been disconnected for a while. LOAD
- Store invalidated entry hash in invalidation log for 10 minutes. Cache keys for stored invalidated entry hashes will be removed if LocalCachedMap instance has been disconnected less than 10 minutes or whole cache will be cleaned otherwise. NONE
- No reconnection handling
Default value
NONE
Setting name
redisson.clustered-local-caches.[CACHE_NAME].sync-strategy
Type
java.lang.String
Description
Used to synchronize local cache changes. INVALIDATE
- Invalidate cache entry across all LocalCachedMap instances on map entry change. UPDATE
- Insert/update cache entry across all LocalCachedMap instances on map entry change. NONE
- No synchronizations on map changes.
Default value
NONE
Setting name
redisson.clustered-local-caches.[CACHE_NAME].eviction-policy
Type
java.lang.String
Description
Used to synchronize local cache changes. LRU
- uses local cache with LRU (least recently used) eviction policy. LFU
- uses local cache with LFU (least frequently used) eviction policy. SOFT
- uses local cache with soft references. The garbage collector will evict items from the local cache when the JVM is running out of memory. WEAK
- uses local cache with weak references. The garbage collector will evict items from the local cache when it became weakly reachable. NONE
- doesn't use eviction policy, but timeToLive and maxIdleTime params are still working.
Default value
NONE
Setting name
redisson.clustered-local-caches.[CACHE_NAME].time-to-live
Type
java.lang.String
Description
Time to live duration of each map entry in local cache. If value equals to 0
then timeout is not applied.
Default value
0
Setting name
redisson.clustered-local-caches.[CACHE_NAME].max-idle
Type
java.lang.String
Description
Defines max idle time duration of each map entry in local cache. If value equals to 0
then timeout is not applied.
Default value
0
Setting name
redisson.clustered-local-caches.[CACHE_NAME].cache-provider
Type
java.lang.String
Description
Defines Cache provider used as local cache store.REDISSON
- uses Redisson own implementation.CAFFEINE
- uses Caffeine implementation.
Default value
0
Setting name
redisson.clustered-local-caches.[CACHE_NAME].store-сache-miss
Type
java.lang.String
Description
Defines whether to store a cache miss into the local cache.
Default value
false
Config example:
redisson :
single-server-config :
address : " redis://127.0.0.1:6379"
clustered-local-caches :
my-cache1 :
expire-after-write : 10s
expire-after-access : 3s
max-size : 1000
codec : org.redisson.codec.Kryo5Codec
store-сache-miss : true
eviction-policy : ` WEAK`
cache-size : 5000
my-cache2 :
expire-after-write : 200s
expire-after-access : 30s
Local Cached Map Cache settings. Click to expand!
This feature is available only in Redisson PRO
Setting name
redisson.local-caches.[CACHE_NAME].max-size
Type
java.lang.Integer
Description
Max size of this cache. Superfluous elements are evicted using LRU algorithm. If 0
the cache is unbounded.
Default value
0
Setting name
redisson.local-caches.[CACHE_NAME].codec
Type
java.lang.Class
Description
Redis data codec applied to cache entries.
Default value
Kryo5Codec
Setting name
redisson.local-caches.[CACHE_NAME].expire-after-write
Type
java.time.Duration
Description
Cache entry time to live duration applied after each write operation. Disabled if value is 0
.
Default value
0
Setting name
redisson.local-caches.[CACHE_NAME].expire-after-access
Type
java.time.Duration
Description
Cache entry time to live duration applied after each read operation. Disabled if value is 0
.
Default value
0
Setting name
redisson.local-caches.[CACHE_NAME].write-behind-batch-size
Type
java.lang.Integer
Description
Write behind tasks batch size. During MapWriter
methods execution all updates accumulated into a batch of specified size.
Default value
50
Setting name
redisson.local-caches.[CACHE_NAME].write-behind-delay
Type
java.time.Duration
Description
Write behind tasks execution delay. All updates would be applied with lag not more than specified delay.
Default value
1000ms
Setting name
redisson.local-caches.[CACHE_NAME].writer
Type
java.lang.Class
Description
MapWriter
object used for write-through operations
Default value
null
Setting name
redisson.local-caches.[CACHE_NAME].write-mode
Type
java.lang.String
Description
Write mode. Default is WRITE_THROUGH
Default value
null
Setting name
redisson.local-caches.[CACHE_NAME].loader
Type
java.lang.Class
Description
MapLoader
object used to load entries during read-operations execution
Default value
null
Setting name
redisson.local-caches.[CACHE_NAME].cache-size
Type
java.lang.Integer
Description
Local cache size. If size is 0
then local cache is unbounded.
Default value
0
Setting name
redisson.local-caches.[CACHE_NAME].reconnection-strategy
Type
java.lang.String
Description
Used to load missed updates during any connection failures to Redis. Since, local cache updates can't be executed in absence of connection to Redis. CLEAR
- Clear local cache if map instance has been disconnected for a while. LOAD
- Store invalidated entry hash in invalidation log for 10 minutes. Cache keys for stored invalidated entry hashes will be removed if LocalCachedMap instance has been disconnected less than 10 minutes or whole cache will be cleaned otherwise. NONE
- No reconnection handling
Default value
NONE
Setting name
redisson.local-caches.[CACHE_NAME].sync-strategy
Type
java.lang.String
Description
Used to synchronize local cache changes. INVALIDATE
- Invalidate cache entry across all LocalCachedMap instances on map entry change. UPDATE
- Insert/update cache entry across all LocalCachedMap instances on map entry change. NONE
- No synchronizations on map changes.
Default value
NONE
Setting name
redisson.local-caches.[CACHE_NAME].eviction-policy
Type
java.lang.String
Description
Used to synchronize local cache changes. LRU
- uses local cache with LRU (least recently used) eviction policy. LFU
- uses local cache with LFU (least frequently used) eviction policy. SOFT
- uses local cache with soft references. The garbage collector will evict items from the local cache when the JVM is running out of memory. WEAK
- uses local cache with weak references. The garbage collector will evict items from the local cache when it became weakly reachable. NONE
- doesn't use eviction policy, but timeToLive and maxIdleTime params are still working.
Default value
NONE
Setting name
redisson.local-caches.[CACHE_NAME].time-to-live
Type
java.lang.String
Description
Time to live duration of each map entry in local cache. If value equals to 0
then timeout is not applied.
Default value
0
Setting name
redisson.local-caches.[CACHE_NAME].max-idle
Type
java.lang.String
Description
Defines max idle time duration of each map entry in local cache. If value equals to 0
then timeout is not applied.
Default value
0
Setting name
redisson.local-caches.[CACHE_NAME].cache-provider
Type
java.lang.String
Description
Defines Cache provider used as local cache store.REDISSON
- uses Redisson own implementation.CAFFEINE
- uses Caffeine implementation.
Default value
0
Setting name
redisson.local-caches.[CACHE_NAME].store-сache-miss
Type
java.lang.String
Description
Defines whether to store a cache miss into the local cache.
Default value
false
Config example:
redisson :
single-server-config :
address : " redis://127.0.0.1:6379"
local-caches :
my-cache1 :
expire-after-write : 10s
expire-after-access : 3s
max-size : 1000
codec : org.redisson.codec.Kryo5Codec
store-сache-miss : true
eviction-policy : ` WEAK`
cache-size : 5000
my-cache2 :
expire-after-write : 200s
expire-after-access : 30s
Session store implementation.
Additional settings to HttpSessionConfiguration object:
Setting name
Type
Description
micronaut.session.http.redisson.enabled
java.lang.Boolean
Enables Session store
micronaut.session.http.redisson.key-prefix
java.lang.Integer
Defines string prefix applied to all objects stored in Redis.
micronaut.session.http.redisson.codec
java.lang.Class
Redis data codec applied to cache entries. Default is Kryo5Codec codec.
micronaut.session.http.redisson.update-mode
java.lang.String
Defines session attributes update mode.WRITE_BEHIND
- session changes stored asynchronously.AFTER_REQUEST
- session changes stored only on SessionStore#save(Session)
method invocation. Default value.
micronaut.session.http.redisson.broadcastSessionUpdates
java.lang.Boolean
Defines broadcasting of session updates across all micronaut services.
Config example:
micronaut :
session :
http :
redisson :
enabled : true
update-mode : " WRITE_BEHIND"
broadcast-session-updates : false
@ Inject
private RedissonClient redisson ;
@ Singleton
@ CacheConfig ("my-cache1" )
public class CarsService {
@ Cacheable
public List <String > listAll () {
// ...
}
@ CachePut (parameters = {"type" })
public List <String > addCar (String type , String description ) {
// ...
}
@ CacheInvalidate (parameters = {"type" })
public void removeCar (String type , String description ) {
// ...
}
}