diff --git a/surf-redis-core/src/main/kotlin/dev/slne/surf/redis/util/LuaScriptExecutor.kt b/surf-redis-core/src/main/kotlin/dev/slne/surf/redis/util/LuaScriptExecutor.kt index 00ccf5b..a5f4647 100644 --- a/surf-redis-core/src/main/kotlin/dev/slne/surf/redis/util/LuaScriptExecutor.kt +++ b/surf-redis-core/src/main/kotlin/dev/slne/surf/redis/util/LuaScriptExecutor.kt @@ -12,12 +12,11 @@ import java.util.concurrent.ConcurrentHashMap class LuaScriptExecutor private constructor(private val api: RedisApi, private val registry: LuaScriptRegistry) { - private val scriptShas = ConcurrentHashMap>() + private val scriptShas = ConcurrentHashMap() private val script by lazy { api.redissonReactive.getScript(StringCodec.INSTANCE) } - private fun getSha(id: String): Mono = scriptShas.computeIfAbsent(id) { - script.scriptLoad(registry.get(id)).cache() - } + private fun getSha(id: String): Mono = scriptShas[id]?.let { Mono.just(it) } + ?: script.scriptLoad(registry.get(id)).doOnNext { scriptShas[id] = it } fun execute( id: String,