<?xml version="1.0" encoding="UTF-8"?>

<xs:schema xmlns:mule="http://www.mulesoft.org/schema/mule/core" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" targetNamespace="http://www.mulesoft.org/schema/mule/redis">
  <xs:import namespace="http://www.w3.org/XML/1998/namespace"></xs:import>
  <xs:import schemaLocation="http://www.springframework.org/schema/beans/spring-beans-3.0.xsd" namespace="http://www.springframework.org/schema/beans"></xs:import>
  <xs:import schemaLocation="http://www.mulesoft.org/schema/mule/core/current/mule.xsd" namespace="http://www.mulesoft.org/schema/mule/core"></xs:import>
  <xs:import schemaLocation="http://www.mulesoft.org/schema/mule/devkit/current/mule-devkit.xsd" namespace="http://www.mulesoft.org/schema/mule/devkit"></xs:import>
  <xs:simpleType name="integerType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:integer"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="(\#\[[^\]]+\]|\$\{[^\}]+\})"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="decimalType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:decimal"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="(\#\[[^\]]+\]|\$\{[^\}]+\})"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="floatType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:float"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="(\#\[[^\]]+\]|\$\{[^\}]+\})"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="doubleType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:double"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="(\#\[[^\]]+\]|\$\{[^\}]+\})"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="dateTimeType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:dateTime"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="(\#\[[^\]]+\]|\$\{[^\}]+\})"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="longType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:long"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="(\#\[[^\]]+\]|\$\{[^\}]+\})"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="byteType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:byte"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="(\#\[[^\]]+\]|\$\{[^\}]+\})"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="booleanType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:boolean"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="(\#\[[^\]]+\]|\$\{[^\}]+\})"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="anyUriType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:anyURI"></xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="(\#\[[^\]]+\]|\$\{[^\}]+\})"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="charType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:minLength value="1"></xs:minLength>
          <xs:maxLength value="1"></xs:maxLength>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="(\#\[[^\]]+\]|\$\{[^\}]+\})"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:complexType name="XmlType">
    <xs:sequence>
      <xs:any maxOccurs="unbounded" minOccurs="0" processContents="lax"></xs:any>
    </xs:sequence>
    <xs:attribute name="ref" use="optional" type="xs:string">
      <xs:annotation>
        <xs:documentation>The reference object for this parameter</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>
  <xs:element xmlns:devkit="http://www.mulesoft.org/schema/mule/devkit" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="config" substitutionGroup="mule:abstract-extension" devkit:javaClass="org.mule.module.redis.adapters.RedisModuleLifecycleAdapter">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="mule:abstractExtensionType">
          <xs:annotation>
            <xs:documentation>Redis is an open-source, networked, in-memory, persistent, journaled, key-value data store. Provides Redis
connectivity to Mule:
&lt;ul&gt;
&lt;li&gt;Supports Redis Publish/Subscribe model for asynchronous message exchanges,&lt;/li&gt;
&lt;li&gt;Allows direct reading and writing operations in Redis collections,&lt;/li&gt;
&lt;li&gt;Allows using Redis as a datastore for Mule components that require persistence.&lt;/li&gt;
&lt;/ul&gt;</xs:documentation>
          </xs:annotation>
          <xs:attribute name="name" use="optional" type="xs:string">
            <xs:annotation>
              <xs:documentation>Give a name to this configuration so it can be later referenced by config-ref.</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="host" default="localhost" use="optional" type="xs:string">
            <xs:annotation>
              <xs:documentation>Redis host</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/redis" name="port" default="6379" use="optional" type="integerType">
            <xs:annotation>
              <xs:documentation>Redis port</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/redis" name="connectionTimeout" default="2000" use="optional" type="integerType">
            <xs:annotation>
              <xs:documentation>Connection timeout in milliseconds</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/redis" name="reconnectionFrequency" default="5000" use="optional" type="integerType">
            <xs:annotation>
              <xs:documentation>Reconnection frequency in milliseconds</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="password" use="optional" type="xs:string">
            <xs:annotation>
              <xs:documentation>Redis password</xs:documentation>
            </xs:annotation>
          </xs:attribute>
          <xs:attribute name="poolConfig-ref" use="optional" type="xs:string">
            <xs:annotation>
              <xs:documentation>Object pool configuration</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/redis" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="set" substitutionGroup="mule:abstract-message-processor" type="SetType">
    <xs:annotation>
      <xs:documentation>Set key to hold the payload. If key already holds a value, it is overwritten, regardless of its type as long as
ifNotExists is false.
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="SetType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="key" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>Key used to store payload</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/redis" name="expire" use="optional" type="integerType">
          <xs:annotation>
            <xs:documentation>Set a timeout on the specified key. After the timeout the key will be automatically deleted by the server. A key with an associated timeout is said to be volatile in Redis terminology.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/redis" name="ifNotExists" default="false" use="optional" type="booleanType">
          <xs:annotation>
            <xs:documentation>If true, then execute SETNX on the Redis server, otherwise execute SET</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/redis" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="get" substitutionGroup="mule:abstract-message-processor" type="GetType">
    <xs:annotation>
      <xs:documentation>Get the value of the specified key. If the key does not exist null is returned. If the value stored at key is not
a string an error is returned because GET can only handle string values.
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="GetType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="key" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>Key that will be used for GET</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/redis" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="hash-set" substitutionGroup="mule:abstract-message-processor" type="Hash-setType">
    <xs:annotation>
      <xs:documentation>Set the specified hash field to the message payload. If key does not exist, a new key holding a hash is created
as long as ifNotExists is true.
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="Hash-setType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="key" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>Key that will be used for HSET</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="field" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>Field that will be used for HSET</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/redis" name="ifNotExists" default="false" use="optional" type="booleanType">
          <xs:annotation>
            <xs:documentation>If true execute HSETNX otherwise HSET</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/redis" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="hash-get" substitutionGroup="mule:abstract-message-processor" type="Hash-getType">
    <xs:annotation>
      <xs:documentation>Get the value stored at the specified field in the hash at the specified key. If the field or the hash don't
exist, null is returned.
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="Hash-getType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="key" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>Key that will be used for HGET</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="field" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>Field that will be used for HGET</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/redis" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="list-push" substitutionGroup="mule:abstract-message-processor" type="List-pushType">
    <xs:annotation>
      <xs:documentation>Push the message payload to the desired side (LEFT or RIGHT) of the list stored at the specified key. If key does
not exist, a new key holding a list is created as long as ifExists is not true.
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="List-pushType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="key" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>Key that will be used for LPUSH/RPUSH/LPUSHX/RPUSH</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/redis" name="side" use="required" type="ListPushSideEnumType">
          <xs:annotation>
            <xs:documentation>The side where to push the payload, either LEFT or RIGHT</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/redis" name="ifExists" default="false" use="optional" type="booleanType">
          <xs:annotation>
            <xs:documentation>If true execute LPUSHX/RPUSH otherwise LPUSH/RPUSH</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/redis" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="list-pop" substitutionGroup="mule:abstract-message-processor" type="List-popType">
    <xs:annotation>
      <xs:documentation>Pop a value from the desired side of the list stored at the specified key.
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="List-popType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="key" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>Key that will be used for LPOP/RPOP</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/redis" name="side" use="required" type="ListPushSideEnumType">
          <xs:annotation>
            <xs:documentation>The side where to pop the value from, either LEFT or RIGHT</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/redis" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="set-add" substitutionGroup="mule:abstract-message-processor" type="Set-addType">
    <xs:annotation>
      <xs:documentation>Add the message payload to the set stored at the specified key. If key does not exist, a new key holding a set is
created.
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="Set-addType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="key" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>Key that will be used for SADD</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/redis" name="mustSucceed" default="false" use="optional" type="booleanType">
          <xs:annotation>
            <xs:documentation>If true, ensures that adding to the set was successful (ie no pre-existing identical value in the set)</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/redis" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="set-pop" substitutionGroup="mule:abstract-message-processor" type="Set-popType">
    <xs:annotation>
      <xs:documentation>Pops a random value from the set stored at the specified key.
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="Set-popType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="key" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>Key that will be used for SPOP</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/redis" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="set-fetch-random-member" substitutionGroup="mule:abstract-message-processor" type="Set-fetch-random-memberType">
    <xs:annotation>
      <xs:documentation>Reads a random value from the set stored at the specified key.
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="Set-fetch-random-memberType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="key" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>Key that will be used for SRANDMEMBER</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/redis" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="sorted-set-add" substitutionGroup="mule:abstract-message-processor" type="Sorted-set-addType">
    <xs:annotation>
      <xs:documentation>Add the message payload with the desired score to the sorted set stored at the specified key. If key does not
exist, a new key holding a sorted set is created.
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="Sorted-set-addType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="key" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>Key that will be used for ZADD</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/redis" name="score" use="required" type="doubleType">
          <xs:annotation>
            <xs:documentation>Score to use for the value</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/redis" name="mustSucceed" default="false" use="optional" type="booleanType">
          <xs:annotation>
            <xs:documentation>If true, ensures that adding to the sorted set was successful (ie no pre-existing identical value in the set)</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/redis" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="sorted-set-select-range-by-index" substitutionGroup="mule:abstract-message-processor" type="Sorted-set-select-range-by-indexType">
    <xs:annotation>
      <xs:documentation>Retrieve a range of values from the sorted set stored at the specified key. The range of values is defined by
indices in the sorted set and sorted as desired.
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="Sorted-set-select-range-by-indexType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="key" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>Key that will be used for ZRANGE/ZREVRANGE</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/redis" name="start" use="required" type="integerType">
          <xs:annotation>
            <xs:documentation>Range start index</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/redis" name="end" use="required" type="integerType">
          <xs:annotation>
            <xs:documentation>Range end index</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/redis" name="order" default="ASCENDING" use="optional" type="SortedSetOrderEnumType">
          <xs:annotation>
            <xs:documentation>Index order for sorting the range, either ASCENDING or DESCENDING</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/redis" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="sorted-set-select-range-by-score" substitutionGroup="mule:abstract-message-processor" type="Sorted-set-select-range-by-scoreType">
    <xs:annotation>
      <xs:documentation>Retrieve a range of values from the sorted set stored at the specified key. The range of values is defined by
scores in the sorted set and sorted as desired.
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="Sorted-set-select-range-by-scoreType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="key" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>Key that will be used for ZRANGEBYSCORE/ZREVRANGEBYSCORE</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/redis" name="min" use="required" type="doubleType">
          <xs:annotation>
            <xs:documentation>Range start score</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/redis" name="max" use="required" type="doubleType">
          <xs:annotation>
            <xs:documentation>Range end score</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/redis" name="order" default="ASCENDING" use="optional" type="SortedSetOrderEnumType">
          <xs:annotation>
            <xs:documentation>Score order for sorting the range, either ASCENDING or DESCENDING</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/redis" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="publish" substitutionGroup="mule:abstract-message-processor" type="PublishType">
    <xs:annotation>
      <xs:documentation>Publish the message payload to the specified channel.
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="PublishType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractMessageProcessorType">
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="channel" use="required" type="xs:string">
          <xs:annotation>
            <xs:documentation>Destination of the published message</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute xmlns="http://www.mulesoft.org/schema/mule/redis" name="mustSucceed" default="false" use="optional" type="booleanType">
          <xs:annotation>
            <xs:documentation>Enforces the fact that the message must have been delivered to at least one consumer</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element xmlns="http://www.mulesoft.org/schema/mule/redis" xmlns:mule="http://www.mulesoft.org/schema/mule/core" name="subscribe" substitutionGroup="mule:abstract-inbound-endpoint" type="SubscribeType">
    <xs:annotation>
      <xs:documentation>Subscribe to the specified channels.
&lt;p/&gt;</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="SubscribeType">
    <xs:complexContent>
      <xs:extension xmlns:mule="http://www.mulesoft.org/schema/mule/core" base="mule:abstractInboundEndpointType">
        <xs:sequence>
          <xs:element name="channels" maxOccurs="1" minOccurs="1">
            <xs:annotation>
              <xs:documentation>A list of channel names or globbing patterns.</xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:sequence>
                <xs:element name="channel" maxOccurs="unbounded" minOccurs="0">
                  <xs:complexType>
                    <xs:simpleContent>
                      <xs:extension base="xs:string">
                        <xs:attribute name="value-ref" use="optional" type="xs:string"></xs:attribute>
                      </xs:extension>
                    </xs:simpleContent>
                  </xs:complexType>
                </xs:element>
              </xs:sequence>
              <xs:attribute name="ref" use="optional" type="xs:string">
                <xs:annotation>
                  <xs:documentation>The reference object for this parameter</xs:documentation>
                </xs:annotation>
              </xs:attribute>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
        <xs:attribute name="config-ref" use="optional" type="xs:string">
          <xs:annotation>
            <xs:documentation>Specify which configuration to use for this invocation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:simpleType name="ListPushSideEnumType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="LEFT"></xs:enumeration>
          <xs:enumeration value="RIGHT"></xs:enumeration>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="\#\[[^\]]+\]"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
  <xs:simpleType name="SortedSetOrderEnumType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="ASCENDING"></xs:enumeration>
          <xs:enumeration value="DESCENDING"></xs:enumeration>
        </xs:restriction>
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="\#\[[^\]]+\]"></xs:pattern>
        </xs:restriction>
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>
</xs:schema>