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
}