def METHOD_NAME(ttl, *args, is_method=True, cache_falsy=True, **kwargs):
    pool = get_redis_pool(decode_responses=False)
    if not pool:
        logger.debug("REDIS_URL is not set falling back to memory cache")
        return cachetools_ttl_cache(*args, ttl=ttl, **kwargs)
    def decorator(func):
        cached_func = RedisCached(
            pool,
            ttl,
            function=func,
            is_method=is_method,
            cache_falsy=cache_falsy,
            serializer=pickle.dumps,
            deserializer=pickle.loads,
        )
        def wrapper(*args, **kwargs):
            # Re-wrapping to preserve function signature
            return cached_func(*args, **kwargs)
        functools.update_wrapper(wrapper, func)
        wrapper.cache_clear = cached_func.clear_all
        wrapper.get_cached_value_for = cached_func.get_cached_value_for
        wrapper.clear_for = cached_func.clear_for
        wrapper.cache = cached_func
        return wrapper
    return decorator