code: async def multi_set(self, pairs, ttl=SENTINEL, dumps_fn=None, namespace=None, _conn=None):
          
          start = time.monotonic()
          dumps = dumps_fn or self._serializer.dumps
  
          tmp_pairs = []
          for key, value in pairs:
              tmp_pairs.append((self.build_key(key, namespace=namespace), dumps(value)))
  
          await self._multi_set(tmp_pairs, ttl=self._get_ttl(ttl), _conn=_conn)
  
          logger.debug(
              "MULTI_SET %s %d (%.4f)s",
              [key for key, value in tmp_pairs],
              len(pairs),
              time.monotonic() - start,
          )
          return True
docs: Stores multiple values in the given keys.
  
          :param pairs: list of two element iterables. First is key and second is value
          :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
          :raises: :class:`asyncio.TimeoutError` if it lasts more than self.timeout