def get_from_cache_with_expiry(cache_key: str) -> Optional[Any]:
    """
    Retrieve data from cache if not expired.
    
    Args:
        cache_key: Unique identifier for the cached data
        
    Returns:
        Cached data if found and not expired, None otherwise
    """
    cache_key_full = f"cache_{cache_key}"
    serialized_data = ClientConfiguration.get(cache_key_full)

    if serialized_data is None:
        return None
    
    try:
        cache_data = cloudpickle.loads(base64.b64decode(serialized_data))
        current_time = int(time.time())
        
        if current_time > cache_data['expiry_time']:
            ClientConfiguration.delete(cache_key_full)
            return None

        return cache_data['data']
    except Exception:
        ClientConfiguration.delete(cache_key_full)
        return None

    Retrieve data from cache if not expired.
    
    Args:
        cache_key: Unique identifier for the cached data
        
    Returns:
        Cached data if found and not expired, None otherwise
    
src/upsonic/storage/caching.py