@@ -50,55 +50,40 @@ class RedisCache(
5050 typeRef : TypeReference <T >,
5151 supplier : (suspend () -> T ? )? ,
5252 ): T ? {
53- try {
54- log.debug(" [CACHE GET] {}" , builtKey.key)
55- val redisValue = redisTemplate.opsForValue().getAndAwait(builtKey.key)
56- redisValue?.let {
57- return objectMapper.readValue(it, typeRef)
53+ val redisValue = runCatching { redisTemplate.opsForValue().getAndAwait(builtKey.key) }.getOrNull()
54+ return if (redisValue != null ) {
55+ objectMapper.readValue(redisValue, typeRef)
56+ } else {
57+ if (supplier == null ) return null
58+ supplier().also { value ->
59+ coroutineScope.launch {
60+ set(builtKey, value)
61+ }
5862 }
59- } catch (e: Exception ) {
60- log.error(e.message, e)
6163 }
62-
63- if (supplier == null ) return null
64-
65- val value = supplier()
66-
67- coroutineScope.launch { set(builtKey, value) }
68-
69- return value
7064 }
7165
7266 override suspend fun <T : Any > set (
7367 builtKey : BuiltCacheKey ,
7468 value : T ? ,
7569 ) {
76- try {
77- val redisValue = objectMapper.writeValueAsString(value)
78-
79- log.debug(" [CACHE SET] {}" , builtKey.key)
80- redisTemplate.opsForValue().setAndAwait(builtKey.key, redisValue, builtKey.ttl)
81- } catch (_: Exception ) {
82- }
70+ val redisValue = objectMapper.writeValueAsString(value)
71+ runCatching { redisTemplate.opsForValue().setAndAwait(builtKey.key, redisValue, builtKey.ttl) }
8372 }
8473
8574 override suspend fun delete (builtKey : BuiltCacheKey ) {
86- try {
87- log.debug(" [CACHE DEL] {}" , builtKey.key)
88- redisTemplate.deleteAndAwait(builtKey.key)
89- } catch (_: Exception ) {
90- }
75+ runCatching { redisTemplate.deleteAndAwait(builtKey.key) }
9176 }
9277
93- override suspend fun acquireLock (builtKey : BuiltCacheKey ): Boolean {
94- log.debug( " [CACHE SETNX] {} " , builtKey.key)
95- return redisTemplate.opsForValue().setIfAbsentAndAwait(builtKey.key, " true" , builtKey.ttl)
96- }
78+ override suspend fun acquireLock (builtKey : BuiltCacheKey ): Boolean =
79+ runCatching {
80+ redisTemplate.opsForValue().setIfAbsentAndAwait(builtKey.key, " true" , builtKey.ttl)
81+ }.getOrDefault( false )
9782
98- override suspend fun releaseLock (builtKey : BuiltCacheKey ): Boolean {
99- log.debug( " [CACHE DEL] {} " , builtKey.key)
100- return redisTemplate.deleteAndAwait(builtKey.key) > 0
101- }
83+ override suspend fun releaseLock (builtKey : BuiltCacheKey ): Boolean =
84+ runCatching {
85+ redisTemplate.deleteAndAwait(builtKey.key) > 0
86+ }.getOrDefault( false )
10287}
10388
10489suspend inline fun <reified T : Any > Cache.get (
0 commit comments