docs: async def set(
          self, key, value, ttl=SENTINEL, dumps_fn=None, namespace=None, _cas_token=None, _conn=None
      ):
          """
          Stores the value in the given key with ttl if specified
  
          :param key: str
          :param value: obj
          :param ttl: int the expiration time in seconds. Due to memcached
              restrictions if you want compatibility use int. In case you
              need miliseconds, redis and memory support float ttls
          :param dumps_fn: callable alternative to use as dumps function
          :param namespace: str alternative namespace to use
          :param timeout: int or float in seconds specifying maximum timeout
              for the operations to last
          :returns: True if the value was set
          :raises: :class:`asyncio.TimeoutError` if it lasts more than self.timeout
          """
          start = time.monotonic()
          dumps = dumps_fn or self._serializer.dumps
          ns_key = self.build_key(key, namespace=namespace)
  
          res = await self._set(
              ns_key, dumps(value), ttl=self._get_ttl(ttl), _cas_token=_cas_token, _conn=_conn
          )
  
          logger.debug("SET %s %d (%.4f)s", ns_key, True, time.monotonic() - start)
          return res