def memoize()

in plugin/src/main/groovy/grails/plugins/redis/RedisService.groovy [146:168]


    def memoize(String key, Map options = [:], Closure closure) {
        log.debug('using key {}', key)
        def result = withOptionalRedis { Jedis redis ->
            if (redis) return redis.get(key)
        }

        if (!result) {
            log.debug('cache miss: {}', key)
            result = closure()
            if (result) withOptionalRedis { Jedis redis ->
                if (redis) {
                    if (options?.expire) {
                        redis.setex(key, options.expire, result as String)
                    } else {
                        redis.set(key, result as String)
                    }
                }
            }
        } else {
            log.debug('cache hit : {} = {}', key, result)
        }
        result
    }