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)``

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))