Perform an upsert on the cache

        Returns CACHE_DISABLED if the cache is disabled
        Returns True on successful operation

        :param key: key to store the value under
        :param value: value to cache
        :param ttl: optional expiry in seconds (defaults to None)

def upsert(self, key, value, ttl=None):
        """
        Perform an upsert on the cache

        Returns CACHE_DISABLED if the cache is disabled
        Returns True on successful operation

        :param key: key to store the value under
        :param value: value to cache
        :param ttl: optional expiry in seconds (defaults to None)
        """
        if not self.options.enabled:
            return CACHE_DISABLED
        logger.debug('upsert({}, {}, ttl={})'.format(repr(key), repr(value), ttl))
        self._dict[key] = MicrocacheItem(value, ttl)
        return True