def rpoplpush(self, destination): """ 在一个原子时间内,完成以下三件事: 1.对self进行rpop, 2.将弹出的元素返回客户端, 3.将该元素副本lpush到destination。 Args: destination: 另一个列表,或列表名字。 Time: O(1) Returns: None: 当列表为空时返回。 value: 当列表不为空时,返回被弹出的元素。 Raises: TypeError: 尝试对非list类型的对象进行操作时抛出。 """ try: destination = get_key_name_from_single_value(destination) value = self._client.rpoplpush(self.name, destination) return self._type_case.to_python(value) except redispy_exception.ResponseError: raise TypeError
def brpoplpush(self, destination, timeout=INDEFINITELY): """ rpoplpush的阻塞版本。 接受一个timeout参数作为阻塞超时时间。 Args: destination: 另一个列表,或列表名字。 timeout: 阻塞等待时间,默认为0。 Time: O(1) Returns: None: 当列表为空时返回。 value: 当列表不为空时,返回被弹出的元素。 Raises: TypeError: 尝试对非list类型的对象进行操作时抛出。 """ try: destination = get_key_name_from_single_value(destination) value = self._client.brpoplpush(self.name, destination, timeout) return self._type_case.to_python(value) except redispy_exception.ResponseError: raise TypeError