diff --git a/redisson-micronaut/redisson-micronaut-40/src/main/java/org/redisson/micronaut/RedissonFactory.java b/redisson-micronaut/redisson-micronaut-40/src/main/java/org/redisson/micronaut/RedissonFactory.java index 7e81c3dda..0db19cbfc 100644 --- a/redisson-micronaut/redisson-micronaut-40/src/main/java/org/redisson/micronaut/RedissonFactory.java +++ b/redisson-micronaut/redisson-micronaut-40/src/main/java/org/redisson/micronaut/RedissonFactory.java @@ -20,13 +20,16 @@ import io.micronaut.core.convert.ConversionService; import io.micronaut.scheduling.TaskExecutors; import jakarta.inject.Named; import jakarta.inject.Singleton; +import org.redisson.MapCacheNativeWrapper; import org.redisson.Redisson; import org.redisson.api.RMap; import org.redisson.api.RMapCache; +import org.redisson.api.RMapCacheNative; import org.redisson.api.RedissonClient; import org.redisson.client.codec.Codec; import org.redisson.config.Config; import org.redisson.micronaut.cache.RedissonCacheConfiguration; +import org.redisson.micronaut.cache.RedissonCacheNativeConfiguration; import org.redisson.micronaut.cache.RedissonSyncCache; import java.util.Optional; @@ -64,5 +67,16 @@ public class RedissonFactory { return new RedissonSyncCache(conversionService, null, map, executorService, configuration); } + @EachBean(RedissonCacheNativeConfiguration.class) + public RedissonSyncCache cache(@Parameter RedissonCacheNativeConfiguration configuration, + RedissonClient redisson, + ConversionService conversionService, + @Named(TaskExecutors.IO) ExecutorService executorService) { + Codec codec = Optional.ofNullable(configuration.getCodec()) + .orElse(redisson.getConfig().getCodec()); + RMapCacheNative mapCache = redisson.getMapCacheNative(configuration.getName(), codec); + return new RedissonSyncCache(conversionService, new MapCacheNativeWrapper<>(mapCache, (Redisson) redisson), mapCache, executorService, configuration); + } + } diff --git a/redisson-micronaut/redisson-micronaut-40/src/main/java/org/redisson/micronaut/cache/RedissonCacheNativeConfiguration.java b/redisson-micronaut/redisson-micronaut-40/src/main/java/org/redisson/micronaut/cache/RedissonCacheNativeConfiguration.java new file mode 100644 index 000000000..46e573707 --- /dev/null +++ b/redisson-micronaut/redisson-micronaut-40/src/main/java/org/redisson/micronaut/cache/RedissonCacheNativeConfiguration.java @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2013-2024 Nikita Koksharov + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.redisson.micronaut.cache; + +import io.micronaut.context.annotation.EachProperty; +import io.micronaut.context.annotation.Parameter; + +/** + * Micronaut Cache settings. + * + * @author Nikita Koksharov + * + */ +@EachProperty("redisson.caches-native") +public class RedissonCacheNativeConfiguration extends BaseCacheConfiguration { + + public RedissonCacheNativeConfiguration(@Parameter String name) { + super(name); + } + +} diff --git a/redisson-micronaut/redisson-micronaut-40/src/main/java/org/redisson/micronaut/cache/RedissonSyncCache.java b/redisson-micronaut/redisson-micronaut-40/src/main/java/org/redisson/micronaut/cache/RedissonSyncCache.java index 8db8a0ecf..cc75bbada 100644 --- a/redisson-micronaut/redisson-micronaut-40/src/main/java/org/redisson/micronaut/cache/RedissonSyncCache.java +++ b/redisson-micronaut/redisson-micronaut-40/src/main/java/org/redisson/micronaut/cache/RedissonSyncCache.java @@ -37,7 +37,7 @@ public class RedissonSyncCache extends AbstractMapBasedSyncCache mapCache; private final RMap map; @@ -45,7 +45,7 @@ public class RedissonSyncCache extends AbstractMapBasedSyncCache mapCache, RMap map, ExecutorService executorService, - RedissonCacheConfiguration configuration) { + BaseCacheConfiguration configuration) { super(conversionService, map); this.executorService = executorService; this.configuration = configuration;