docs: def rpush(self, key, *values):
          """
          Insert all the specified values at the tail of the list stored at key.
  
          :param key: The list's key
          :type key: :class:`str`, :class:`bytes`
          :param values: One or more positional arguments to insert at the
              tail of the list.
          :returns: the length of the list after push operations
          :rtype: int
          :raises: :exc:`~tredis.exceptions.TRedisException`
  
          If `key` does not exist, it is created as empty list before performing
          the push operation. When `key` holds a value that is not a list, an
          error is returned.
  
          It is possible to push multiple elements using a single command call
          just specifying multiple arguments at the end of the command.
          Elements are inserted one after the other to the tail of the list,
          from the leftmost element to the rightmost element. So for instance
          the command  ``client.rpush('mylist', 'a', 'b', 'c')`` will result
          in a list containing ``a`` as first element, ``b`` as second element
          and ``c`` as third element.
  
          .. note::
  
             **Time complexity**: ``O(1)``
  
          """
          return self._execute([b'RPUSH', key] + list(values))