# REST API

Ignite提供了一个HTTP REST客户端,可以以REST的方式通过HTTP或者HTTPS协议与集群进行通信。REST API可以用于执行不同的操作,比如对缓存进行读/写,执行任务,获取各种指标等等。

从内部来说,Ignite使用Jetty来提供HTTP服务,关于如何配置Jetty,请参见下面的配置章节的介绍。

# 1.入门

要启用HTTP连接,确保在类路径中包含ignite-rest-http模块,在二进制包中,这意味着将其从IGNITE_HOME/libs/optional/拷贝到IGNITE_HOME/libs中,具体请参见启用模块章节的介绍。

不需要特别的配置,连接器就会自动启动,然后监听8080端口,可以通过curl检测其是否工作正常:

curl 'http://localhost:8080/ignite?cmd=version'

请求参数可以通过URL传递,也可以通过表单数据提交方式传递:

curl 'http://localhost:8080/ignite?cmd=put&cacheName=myCache' -X POST -H 'Content-Type: application/x-www-form-urlencoded' -d 'key=testKey&val=testValue'

# 1.1.配置

修改HTTP服务器参数的方法如下:

    下表列出了ConnectorConfiguration中和HTTP服务器有关的参数:

    参数名 描述 可选 默认值
    setSecretKey(String) 定义用于客户端认证的密钥,如果进行了设定,客户端请求必须包含HTTP头X-Signature,值为:[1]:[2],这里[1]为毫秒值的时间戳,[2]为密钥的Base64格式的SHA1哈希值。 null
    setPortRange(int) Jetty服务的端口范围,如果在Jetty配置文件中或者IGNITE_JETTY_PORT系统属性中配置的端口已被占用,Ignite会将该端口加1然后再做一次绑定直到设定的范围上限。 100
    setJettyPath(String) Jetty配置文件的路径,要么是绝对路径,要么是相对于IGNITE_HOME,如果未指定,Ignite会用简单的HTTP连接器启动Jetty服务,这个连接器会分别使用IGNITE_JETTY_HOSTIGNITE_JETTY_PORT系统参数作为主机和端口,如果IGNITE_JETTY_HOST未设定,会使用localhost,如果IGNITE_JETTY_PORT未设定,默认会使用8080。 null
    setMessageInterceptor(ConnectorMessageInterceptor) 转换通过REST协议进行交换的所有对象的拦截器。比如在客户端使用自定义的序列化,那么可以写一个拦截器来将从客户端收到的二进制数据转换为Java对象,然后就可以直接访问。 null

    Jetty XML示例配置

    配置文件的路径通过ConnectorConfiguration.setJettyPath(String)设定,如上所述:

    <?xml version="1.0"?>
    <!--
      Licensed to the Apache Software Foundation (ASF) under one or more
      contributor license agreements.  See the NOTICE file distributed with
      this work for additional information regarding copyright ownership.
      The ASF licenses this file to You under the Apache License, Version 2.0
      (the "License"); you may not use this file except in compliance with
      the License.  You may obtain a copy of the License at
    
           http://www.apache.org/licenses/LICENSE-2.0
    
      Unless required by applicable law or agreed to in writing, software
      distributed under the License is distributed on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      See the License for the specific language governing permissions and
      limitations under the License.
    -->
    <!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
    <Configure id="Server" class="org.eclipse.jetty.server.Server">
        <Arg name="threadpool">
            <!-- Default queued blocking thread pool -->
            <New class="org.eclipse.jetty.util.thread.QueuedThreadPool">
                <Set name="minThreads">20</Set>
                <Set name="maxThreads">200</Set>
            </New>
        </Arg>
        <New id="httpCfg" class="org.eclipse.jetty.server.HttpConfiguration">
            <Set name="secureScheme">https</Set>
            <Set name="securePort">8443</Set>
            <Set name="sendServerVersion">true</Set>
            <Set name="sendDateHeader">true</Set>
        </New>
        <Call name="addConnector">
            <Arg>
                <New class="org.eclipse.jetty.server.ServerConnector">
                    <Arg name="server"><Ref refid="Server"/></Arg>
                    <Arg name="factories">
                        <Array type="org.eclipse.jetty.server.ConnectionFactory">
                            <Item>
                                <New class="org.eclipse.jetty.server.HttpConnectionFactory">
                                    <Ref refid="httpCfg"/>
                                </New>
                            </Item>
                        </Array>
                    </Arg>
                    <Set name="host">
                      <SystemProperty name="IGNITE_JETTY_HOST" default="localhost"/>
                    </Set>
                    <Set name="port">
                      <SystemProperty name="IGNITE_JETTY_PORT" default="8080"/>
                    </Set>
                    <Set name="idleTimeout">30000</Set>
                    <Set name="reuseAddress">true</Set>
                </New>
            </Arg>
        </Call>
        <Set name="handler">
            <New id="Handlers" class="org.eclipse.jetty.server.handler.HandlerCollection">
                <Set name="handlers">
                    <Array type="org.eclipse.jetty.server.Handler">
                        <Item>
                            <New id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/>
                        </Item>
                    </Array>
                </Set>
            </New>
        </Set>
        <Set name="stopAtShutdown">false</Set>
    </Configure>
    

    # 1.2.安全

    当集群配置认证后,所有的REST API访问都需要提供凭据来做认证,认证成功后会返回一个会话令牌,该令牌可以在该会话的任意命令中使用。

    请求认证有两种方式:

    1.使用带有ignite.login=[user]&ignite.password=[password]参数的authenticate命令:

    https://[host]:[port]/ignite?cmd=authenticate&ignite.login=[user]&ignite.password=[password]
    

    2.在任意REST命令的连接串中,加上ignite.login=[user]&ignite.password=[password]参数,下面使用version命令举例:

      http://[host]:[port]/ignite?cmd=version&ignite.login=[user]&ignite.password=[password]
    

    上面的示例中,需要将[host][port][user][password]替换为实际值。

    在浏览器中执行上面的字符串都会返回一个会话令牌,如下所示:

    {"successStatus":0,"error":null,"sessionToken":"EF6013FF590348CE91DEAE9870183BEF","response":true}
    

    获得这个令牌之后,就可以像下面这样,在连接串中加上sessionToken参数:

    http://[host]:[port]/ignite?cmd=top&sessionToken=[sessionToken]
    

    上面的示例中,需要将[host][port][sessionToken]替换为实际值。

    警告

    如果服务端开启了认证,那么用户的凭据或者令牌就是必须的,如果REST连接串中既不提供sessionToken,也不提供userpassword会出错。

    会话令牌过期

    会话令牌有效期只有30秒,如果使用一个过期的令牌会报错。

    如果要自定义过期时间,可以配置IGNITE_REST_SESSION_TIMEOUT系统参数,单位为秒,比如:-DIGNITE_REST_SESSION_TIMEOUT=3600

    # 2.数据类型

    REST API默认以String格式交换查询参数,集群也是按照String对象来处理参数。

    如果一个参数的类型不是String,可以使用keyTypevalueType来指定参数的真实类型,REST API同时支持Java类型和自定义类型:

    # 2.1.Java类型

    REST键类型/值类型 对应的Java类型
    boolean java.lang.Boolean
    byte java.lang.Byte
    short java.lang.Short
    integer java.lang.Integer
    long java.lang.Long
    float java.lang.Float
    double java.lang.Double
    date java.sql.Date,数值应该为valueOf(String)方法支持的格式,比如:2018-01-01
    time java.sql.Time,数值应该为valueOf(String)方法支持的格式,比如:01:01:01
    timestamp java.sql.Timestamp,数值应该为valueOf(String)方法支持的格式,比如:2018-02-18%2001:01:01
    uuid java.util.UUID
    IgniteUuid org.apache.ignite.lang.IgniteUuid

    下面的put命令,带有keyType=intvalueType=date参数。

    http://[host]:[port]/ignite?cmd=put&key=1&val=2018-01-01&cacheName=myCache&keyType=int&valueType=date
    

    类似的带有keyType=intvalueType=date参数的get命令为:

    http://[host]:[port]/ignite?cmd=get&key=1&cacheName=myCache&keyType=int&valueType=date
    

    # 2.2.自定义类型

    通过Ignite的REST协议,JSON格式可以用于交换复杂的自定义对象。

    比如,假定有一个Person类,下面是要发给集群的实例对象的JSON表示:

     {
      "uid": "7e51118b",
      "name": "John Doe",
      "orgId": 5678901,
      "married": false,
      "salary": 156.1
     }
    

    下一步,使用下面的REST请求,通过配置valueType参数为Personval参数为JSON对象,来将对象写入集群:

    http://[host]:[port]/ignite?cacheName=testCache&cmd=put&keyType=int&key=1&valueType=Person
    &val=%7B%0A+++++%22uid%22%3A+%227e51118b%22%2C%0A+++++%22name%22%3A+%22John+Doe%22%2C%0A+++++%22orgId%22%3A+5678901%2C%0A+++++%22married%22%3A+false%2C%0A+++++%22salary%22%3A+156.1%0A++%7D&
    

    服务端接收到这个请求后,将按照以下转换过程将对象从JSON转换为内部二进制对象格式:

    • 如果Person类存在并且在服务端的类路径上可用,则JSON对象将解析为Person类的实例;

    • 如果Person类在服务端的类路径上不可用,但是有一个QueryEntity对象定义了Person,则将JSON对象解析为Person类型的二进制对象;

      QueryEntity

      <bean class="org.apache.ignite.cache.QueryEntity">
        <property name="keyType" value="java.lang.Integer"/>
        <property name="valueType" value="Person"/>
        <property name="fields">
          <map>
            <entry key="uid"     value="java.util.UUID"/>
            <entry key="name"    value="java.lang.String"/>
            <entry key="orgId"   value="java.lang.Long"/>
            <entry key="married" value="java.lang.Boolean"/>
            <entry key="salary"  value="java.lang.Float"/>
          </map>
        </property>
      </bean>
      

      BinaryObject(Person)

      "uid": "7e51118b",  // UUID
      "name": "John Doe", // string
      "orgId": 5678901,   // long
      "married": false,   // boolean
      "salary": 156.1     // float
      
    • 否则,将按照常规JSON约定解析JSON对象的字段类型:

      "uid": "7e51118b",   // string
      "name": "John Doe",  // string
      "orgId": 5678901,    // int
      "married": false,    // boolean
      "salary": 156.1      // double
      

    当通过Ignite的REST协议的keyType参数配置自定义键类型时,同样的转换规则也适用。

    # 3.返回值

    HTTP REST请求返回一个JSON对象,每一个命令都有一个类似的结构,这个对象有如下的结构:

    名字 类型 描述 示例
    affinityNodeId string 关联节点ID 2bd7b049-3fa0-4c44-9a6d-b5c7a597ce37
    error string 如果服务器无法处理请求,出现的错误的描述 每个命令单独指定
    sessionToken String 如果服务端开启认证,该字段包含了在会话有效期内可以用于其它命令的会话令牌,如果关闭认证,该字段为空。 如果认证打开,EF6013FF590348CE91DEAE9870183BEF,否则为空
    response jsonObject 该命令包含命令执行结果 每个命令单独指定
    successStatus Integer 返回状态码:
    成功:0
    失败:1
    授权失败:2
    安全检查失败:3
    0

    # 4.REST API参考

    # 4.1.version

    version命令显示当前Ignite的版本。

    URL:

    http://host:port/ignite?cmd=version
    

    请求

    名称 类型 可选 描述 示例
    cmd string version,小写

    响应

    {
      "error": "",
      "response": "1.0.0",
      "successStatus": 0
    }
    
    名称 类型 描述 示例
    response string Ignite版本 1.0.0

    # 4.2.state

    返回当前集群的状态

    请求:

    http://host:port/ignite?cmd=state
    

    响应:

    如果集群为激活状态则返回true,否则返回false

    {
      "successStatus":0,
      "error":null,
      "sessionToken":null,
      "response": "ACTIVE_READ_ONLY"
    }
    

    # 4.3.setstate

    setstate命令会修改集群的状态

    请求:

    http://host:port/ignite?cmd=setstate&state={new_state}
    
    参数 类型 描述
    state String 新的集群状态,下面值之一:
    - ACTIVE:激活状态;
    - ACTIVE_READ_ONLY:只读状态;
    - INACTIVE:冻结集群。
    **警告:**冻结会在所有集群节点上释放已分配的所有内存资源,包括应用的数据,并禁用公开的集群API。如果有未持久化(原生持久化外部存储)的缓存,则将丢失数据,并且必须重新加载这些缓存。非持久化的系统缓存也会被清理。

    响应:

    {
      "successStatus":0,
      "error":null,
      "sessionToken":null,
      "response":"setstate done"
    }
    

    # 4.4.incr

    incr命令增加然后获得给定原子性Long类型的当前值。

    请求

    http://host:port/ignite?cmd=incr&cacheName=partionedCache&key=incrKey&init=15&delta=10
    
    名称 类型 可选 描述 示例
    cmd string incr,小写
    cacheName string 缓存名称,如果未提供,会使用默认的缓存 partionedCache
    key string 原子性Long类型的名称 counter
    init long 初始值 15
    delta long 增加的值 42

    响应 响应包括了操作后的值。

    {
      "affinityNodeId": "e05839d5-6648-43e7-a23b-78d7db9390d5",
      "error": "",
      "response": 42,
      "successStatus": 0
    }
    

    # 4.5.decr

    decr命令减去然后获得给定原子性Long类型的当前值。

    请求

    http://host:port/ignite?cmd=decr&cacheName=partionedCache&key=decrKey&init=15&delta=10
    
    名称 类型 可选 描述 示例
    cmd string decr,小写
    cacheName string 缓存名称,如果未提供,会使用默认的缓存 partionedCache
    key string 原子性Long类型的名称 counter
    init long 初始值 15
    delta long 减去的值 42

    响应 响应包括了操作后的值。

    {
      "affinityNodeId": "e05839d5-6648-43e7-a23b-78d7db9390d5",
      "error": "",
      "response": -42,
      "successStatus": 0
    }
    

    # 4.6.cache

    cache命令可以获得Ignite缓存的指标。

    请求

    http://host:port/ignite?cmd=cache&cacheName=partionedCache&destId=8daab5ea-af83-4d91-99b6-77ed2ca06647
    
    名称 类型 可选 描述 示例
    cmd string cache,小写
    cacheName string 缓存名称,如果未提供,会使用默认的缓存 partionedCache
    destId string 要返回指标的节点Id 8daab5ea-af83-4d91-99b6-77ed2ca06647

    响应

    {
      "affinityNodeId": "",
      "error": "",
      "response": {
        "createTime": 1415179251551,
        "hits": 0,
        "misses": 0,
        "readTime": 1415179251551,
        "reads": 0,
        "writeTime": 1415179252198,
        "writes": 2
      },
      "successStatus": 0
    }
    
    名称 类型 描述 示例
    response jsonObject JSON对象包含了缓存的指标,比如创建时间,读计数等 {"createTime": 1415179251551, "hits": 0, "misses": 0, "readTime":1415179251551, "reads": 0,"writeTime": 1415179252198, "writes": 2
    }

    # 4.7.size

    size命令返回指定缓存的总条目的数量。

    请求

    http://host:port/ignite?cmd=size&cacheName=partionedCache
    
    名称 类型 可选 描述 示例
    cmd string size,小写
    cacheName string 缓存名称,如果未提供,会使用默认的缓存 partionedCache

    响应

    {
      "affinityNodeId": "",
      "error": "",
      "response": 1,
      "successStatus": 0
    }
    
    名称 类型 描述 示例
    response number 给定缓存的总条目数量 5

    # 4.8.metadata

    metadata命令返回指定缓存的元数据。

    请求

    http://host:port/ignite?cmd=metadata&cacheName=partionedCache
    
    名称 类型 可选 描述 示例
    cmd string metadata,小写
    cacheName string 缓存名称,如果未提供,会使用默认的缓存 partionedCache

    响应

    {
      "error": "",
      "response": {
        "cacheName": "partionedCache",
        "types": [
          "Person"
        ],
        "keyClasses": {
          "Person": "java.lang.Integer"
        },
        "valClasses": {
          "Person": "org.apache.ignite.Person"
        },
        "fields": {
          "Person": {
            "_KEY": "java.lang.Integer",
            "_VAL": "org.apache.ignite.Person",
            "ID": "java.lang.Integer",
            "FIRSTNAME": "java.lang.String",
            "LASTNAME": "java.lang.String",
            "SALARY": "double"
          }
        },
        "indexes": {
          "Person": [
            {
              "name": "ID_IDX",
              "fields": [
                "id"
              ],
              "descendings": [],
              "unique": false
            },
            {
              "name": "SALARY_IDX",
              "fields": [
                "salary"
              ],
              "descendings": [],
              "unique": false
            }
          ]
        }
      },
      "sessionToken": "",
      "successStatus": 0
    }
    

    # 4.9.cas

    cas命令在之前的值等于预期值时会在缓存中存储给定的键-值对。

    请求

    http://host:port/ignite?cmd=cas&key=casKey&val=newValue&val2=expectedValue&cacheName={cacheName}&destId={nodeId}
    
    名称 类型 可选 描述 示例
    cmd string cas,小写
    cacheName string 缓存名称,如果未提供,会使用默认的缓存 partionedCache
    key string 缓存内要保存的键值 name
    val string 与给定键对应的值 Jack
    val2 string 预期值 Bob
    destId string 要返回指标的节点Id 8daab5ea-af83-4d91-99b6-77ed2ca06647

    响应

    如果替换发生则为true,否则为false

    {
      "affinityNodeId": "1bcbac4b-3517-43ee-98d0-874b103ecf30",
      "error": "",
      "response": true,
      "successStatus": 0
    }
    

    # 4.10.append

    append命令为给定的键关联的值增加一个后缀。

    请求

    http://host:port/ignite?cmd=append&key=appendKey&val=_suffix&cacheName=partionedCache&destId=8daab5ea-af83-4d91-99b6-77ed2ca06647
    
    名称 类型 可选 描述 示例
    cmd string append,小写
    cacheName string 缓存名称,如果未提供,会使用默认的缓存 partionedCache
    key string 缓存内要保存的键值 name
    val string 为当前值要增加的后缀 Jack
    destId string 要返回指标的节点Id 8daab5ea-af83-4d91-99b6-77ed2ca06647

    响应

    {
      "affinityNodeId": "1bcbac4b-3517-43ee-98d0-874b103ecf30",
      "error": "",
      "response": true,
      "successStatus": 0
    }
    
    名称 类型 描述 示例
    response boolean 如果替换发生则为true,否则false true

    # 4.11.prepend

    prepend命令为给定的键关联的值增加一个前缀。

    请求

    http://host:port/ignite?cmd=prepend&key=prependKey&val=prefix_&cacheName=partionedCache&destId=8daab5ea-af83-4d91-99b6-77ed2ca06647
    
    名称 类型 可选 描述 示例
    cmd string prepend,小写
    cacheName string 缓存名称,如果未提供,会使用默认的缓存 partionedCache
    key string 缓存内要保存的键值 name
    val string 为当前值要增加的前缀 Name_
    destId string 要返回指标的节点Id 8daab5ea-af83-4d91-99b6-77ed2ca06647

    响应

    {
      "affinityNodeId": "1bcbac4b-3517-43ee-98d0-874b103ecf30",
      "error": "",
      "response": true,
      "successStatus": 0
    }
    
    名称 类型 描述 示例
    response boolean 如果替换发生则为true,否则false true

    # 4.12.rep

    rep命令为给定的键存储一个新值。

    请求

    http://host:port/ignite?cmd=rep&key=repKey&val=newValue&cacheName=partionedCache&destId=8daab5ea-af83-4d91-99b6-77ed2ca06647
    
    名称 类型 可选 描述 示例
    cmd string rep,小写
    cacheName string 缓存名称,如果未提供,会使用默认的缓存 partionedCache
    key string 缓存内要保存的键值 name
    val string 与给定键关联的新值 Jack
    destId string 要返回指标的节点Id 8daab5ea-af83-4d91-99b6-77ed2ca06647

    响应

    如果替换发生则为true,否则为false

    {
      "affinityNodeId": "1bcbac4b-3517-43ee-98d0-874b103ecf30",
      "error": "",
      "response": true,
      "successStatus": 0
    }
    

    # 4.13.get

    get命令在缓存中获取给定的键对应的值。

    请求

    http://host:port/ignite?cmd=get&key={getKey}&cacheName={cacheName}&destId={nodeId}
    
    名称 类型 可选 描述 示例
    cmd string get,小写
    cacheName string 缓存名称,如果未提供,会使用默认的缓存 partionedCache
    key string 要返回的值对应的键 testKey
    keyType Java内置类型 具体可以看上面的数据类型章节。
    destId string 要返回指标的节点Id 8daab5ea-af83-4d91-99b6-77ed2ca06647

    响应

    {
      "affinityNodeId": "2bd7b049-3fa0-4c44-9a6d-b5c7a597ce37",
      "error": "",
      "response": "value from cache",
      "successStatus": 0
    }
    
    名称 类型 描述 示例
    response jsonObject 给定键的值 {"name": "Alex","id":1,"salary":2000}

    # 4.14.getall

    getall命令会从缓存中获取给定键的数据。

    请求

    http://host:port/ignite?cmd=getall&k1=getKey1&k2=getKey2&k3=getKey3&cacheName=partionedCache&destId=8daab5ea-af83-4d91-99b6-77ed2ca06647
    
    名称 类型 可选 描述 示例
    cmd string rmvall,小写
    cacheName string 缓存名称,如果未提供,会使用默认的缓存 partionedCache
    k1...kN string 要从缓存中获取的值对应的键 key1, key2, ..., keyN
    destId string 要返回指标的节点Id 8daab5ea-af83-4d91-99b6-77ed2ca06647

    响应

    {
      "affinityNodeId": "",
      "error": "",
      "response": {
        "key1": "value1",
        "key2": "value2"
      },
      "successStatus": 0
    }
    
    名称 类型 描述 示例
    response jsonObject 键-值对映射 {"key1": "value1","key2": "value2"}

    数组形式输出

    要获得数组形式的输出,需要配置系统属性IGNITE_REST_GETALL_AS_ARRAYtrue,如果配置了这个属性,那么getall命令的输出格式为:{“successStatus”:0,“affinityNodeId”:null,“error”:null,“sessionToken”:null,“response”:[{“key”:“key1”,“value”:“value1”},{“key”:“key2”,“value”:“value2”}]}

    # 4.15.getrmv

    getrmv命令在缓存中删除给定键的映射,然后返回原值。

    请求

    http://host:port/ignite?cmd=getrmv&cacheName=partionedCache&destId=8daab5ea-af83-4d91-99b6-77ed2ca06647&key=name
    
    名称 类型 可选 描述 示例
    cmd string getrep,小写
    cacheName string 缓存名称,如果未提供,会使用默认的缓存 partionedCache
    key string 缓存内要删除的键值 name
    destId string 要返回指标的节点Id 8daab5ea-af83-4d91-99b6-77ed2ca06647

    响应

    {
      "affinityNodeId": "1bcbac4b-3517-43ee-98d0-874b103ecf30",
      "error": "",
      "response": value,
      "successStatus": 0
    }
    
    名称 类型 描述 示例
    response jsonObject 给定键的原值 {"name": "Bob"}

    # 4.16.getput

    getput命令在缓存中存储给定的键-值对,如果之前存在该映射,则返回原值。

    请求

    http://host:port/ignite?cmd=getput&key=getKey&val=newVal&cacheName=partionedCache
    
    名称 类型 可选 描述 示例
    cmd string getput,小写
    cacheName string 缓存名称,如果未提供,会使用默认的缓存 partionedCache
    key string 缓存内要存储的键值 name
    val string 与给定键关联的值 Jack
    destId string 要返回指标的节点Id 8daab5ea-af83-4d91-99b6-77ed2ca06647

    响应

    {
      "affinityNodeId": "2bd7b049-3fa0-4c44-9a6d-b5c7a597ce37",
      "error": "",
      "response": {"name": "bob"},
      "successStatus": 0
    }
    
    名称 类型 描述 示例
    response jsonObject 给定键的原值 {"name": "bob"}

    # 4.17.getputifabs

    getputifabs命令只有在缓存中不存在该映射时才会进行存储,否则会返回对应该键的原值。

    请求

    http://host:port/ignite?cmd=getputifabs&key=getKey&val=newVal&cacheName=partionedCache
    
    名称 类型 可选 描述 示例
    cmd string getputifabs,小写
    cacheName string 缓存名称,如果未提供,会使用默认的缓存 partionedCache
    key string 缓存内要存储的键值 name
    val string 与给定键关联的值 Jack
    destId string 要返回指标的节点Id 8daab5ea-af83-4d91-99b6-77ed2ca06647

    响应

    {
      "affinityNodeId": "2bd7b049-3fa0-4c44-9a6d-b5c7a597ce37",
      "error": "",
      "response": "value",
      "successStatus": 0
    }
    
    名称 类型 描述 示例
    response jsonObject 给定键对应的原值 {"name": "bob"}

    # 4.18.getrep

    getrep命令为给定的键存储一个新值,然后返回原值。

    请求

    http://host:port/ignite?cmd=getrep&key=repKey&val=newValue&cacheName=partionedCache&destId=8daab5ea-af83-4d91-99b6-77ed2ca06647
    
    名称 类型 可选 描述 示例
    cmd string getrep,小写
    cacheName string 缓存名称,如果未提供,会使用默认的缓存 partionedCache
    key string 缓存内要保存的键值 name
    val string 与给定键关联的新值 Jack
    destId string 要返回指标的节点Id 8daab5ea-af83-4d91-99b6-77ed2ca06647

    响应

    {
      "affinityNodeId": "1bcbac4b-3517-43ee-98d0-874b103ecf30",
      "error": "",
      "response": oldValue,
      "successStatus": 0
    }
    
    名称 类型 描述 示例
    response jsonObject 给定键的原值 {"name": "Bob"}

    # 4.19.repval

    repval命令在之前的值等于预期值时会替换给定键的值。

    请求

    http://host:port/ignite?cmd=repval&key=repKey&val=newValue&val2=oldVal&cacheName=partionedCache&destId=8daab5ea-af83-4d91-99b6-77ed2ca06647
    
    名称 类型 可选 描述 示例
    cmd string repval,小写
    cacheName string 缓存名称,如果未提供,会使用默认的缓存 partionedCache
    key string 缓存内的键值 name
    val string 与给定键对应的值 Jack
    val2 string 预期值 oldValue
    destId string 要返回指标的节点Id 8daab5ea-af83-4d91-99b6-77ed2ca06647

    响应

    {
      "affinityNodeId": "1bcbac4b-3517-43ee-98d0-874b103ecf30",
      "error": "",
      "response": true,
      "successStatus": 0
    }
    
    名称 类型 描述 示例
    response boolean 如果替换发生则为true,否则false true

    # 4.20.rmv

    rmv命令在缓存中删除给定键对应的映射。

    请求

    http://host:port/ignite?cmd=rmv&key=rmvKey&cacheName=partionedCache&destId=8daab5ea-af83-4d91-99b6-77ed2ca06647
    
    名称 类型 可选 描述 示例
    cmd string rmv,小写
    cacheName string 缓存名称,如果未提供,会使用默认的缓存 partionedCache
    key string 缓存内要删除的键值 name
    destId string 要返回指标的节点Id 8daab5ea-af83-4d91-99b6-77ed2ca06647

    响应

    {
      "affinityNodeId": "1bcbac4b-3517-43ee-98d0-874b103ecf30",
      "error": "",
      "response": true,
      "successStatus": 0
    }
    
    名称 类型 描述 示例
    response boolean true,如果删除发生,否则,false true

    # 4.21.rmvall

    rmvall命令会从缓存中删除给定键的数据。

    请求

    http://host:port/ignite?cmd=rmvall&k1=rmKey1&k2=rmKey2&k3=rmKey3&cacheName=partionedCache&destId=8daab5ea-af83-4d91-99b6-77ed2ca06647
    
    名称 类型 可选 描述 示例
    cmd string rmvall,小写
    cacheName string 缓存名称,如果未提供,会使用默认的缓存 partionedCache
    k1...kN string 要从缓存中删除的键 name
    destId string 要返回指标的节点Id 8daab5ea-af83-4d91-99b6-77ed2ca06647

    响应

    {
      "affinityNodeId": "1bcbac4b-3517-43ee-98d0-874b103ecf30",
      "error": "",
      "response": true,
      "successStatus": 0
    }
    
    名称 类型 描述 示例
    response boolean 如果删除发生则为true,否则false true

    # 4.22.rmvval

    rmvval命令当当前值等于预期值时在缓存中删除给定键对应的映射。

    请求

    http://host:port/ignite?cmd=rmvval&key=rmvKey&val=rmvVal&cacheName=partionedCache&destId=8daab5ea-af83-4d91-99b6-77ed2ca06647
    
    名称 类型 可选 描述 示例
    cmd string rmvval,小写
    cacheName string 缓存名称,如果未提供,会使用默认的缓存 partionedCache
    key string 缓存内要删除的键值 name
    val string 与给定键关联的期望值 oldValue
    destId string 要返回指标的节点Id 8daab5ea-af83-4d91-99b6-77ed2ca06647

    响应

    {
      "affinityNodeId": "1bcbac4b-3517-43ee-98d0-874b103ecf30",
      "error": "",
      "response": true,
      "successStatus": 0
    }
    
    名称 类型 描述 示例
    response boolean false,如果没有映射的键 true

    # 4.23.add

    add命令当缓存中不存在该映射时存储该映射。

    请求

    http://host:port/ignite?cmd=add&key=newKey&val=newValue&cacheName=partionedCache&destId=8daab5ea-af83-4d91-99b6-77ed2ca06647
    
    名称 类型 可选 描述 示例
    cmd string add,小写
    cacheName string 缓存名称,如果未提供,会使用默认的缓存 partionedCache
    key string 缓存内要存储的键值 name
    val string 与给定键关联的值 Jack
    destId string 要返回指标的节点Id 8daab5ea-af83-4d91-99b6-77ed2ca06647

    响应

    {
      "affinityNodeId": "1bcbac4b-3517-43ee-98d0-874b103ecf30",
      "error": "",
      "response": true,
      "successStatus": 0
    }
    
    名称 类型 描述 示例
    response boolean true,如果成功存储,否则,false true

    # 4.24.put

    put命令在缓存中存储该映射。

    请求

    http://host:port/ignite?cmd=put&key=newKey&val=newValue&cacheName=partionedCache&destId=8daab5ea-af83-4d91-99b6-77ed2ca06647
    
    名称 类型 可选 描述 示例
    cmd string put,小写
    cacheName string 缓存名称,如果未提供,会使用默认的缓存 partionedCache
    key string 缓存内要存储的键值 name
    val string 与给定键关联的值 Jack
    destId string 要返回指标的节点Id 8daab5ea-af83-4d91-99b6-77ed2ca06647

    响应

    {
      "affinityNodeId": "1bcbac4b-3517-43ee-98d0-874b103ecf30",
      "error": "",
      "response": true,
      "successStatus": 0
    }
    
    名称 类型 描述 示例
    response boolean true,如果成功存储,否则,false true

    # 4.25.putall

    putall命令会在缓存中存储给定的键-值对。

    请求

    http://host:port/ignite?cmd=putall&k1=putKey1&k2=putKey2&k3=putKey3&v1=value1&v2=value2&v3=value3&cacheName=partionedCache&destId=8daab5ea-af83-4d91-99b6-77ed2ca06647
    
    名称 类型 可选 描述 示例
    cmd string putall,小写
    cacheName string 缓存名称,如果未提供,会使用默认的缓存 partionedCache
    k1...kN string 要在缓存中保存的键 name
    v1...vN string 与给定键关联的值 Jack
    destId string 要返回指标的节点Id 8daab5ea-af83-4d91-99b6-77ed2ca06647

    响应

    {
      "affinityNodeId": "1bcbac4b-3517-43ee-98d0-874b103ecf30",
      "error": "",
      "response": true,
      "successStatus": 0
    }
    
    名称 类型 描述 示例
    response boolean 如果成功保存则为true,否则false true

    # 4.26.putifabs

    putifabs命令只有在缓存中存在该映射时才会存储给定的键-值对。

    请求

    http://host:port/ignite?cmd=putifabs&key=getKey&val=newVal&cacheName=partionedCache
    
    名称 类型 可选 描述 示例
    cmd string putifabs,小写
    cacheName string 缓存名称,如果未提供,会使用默认的缓存 partionedCache
    key string 缓存内要存储的键 name
    val string 与给定键关联的值 Jack
    destId string 要返回指标的节点Id 8daab5ea-af83-4d91-99b6-77ed2ca06647

    响应

    {
      "affinityNodeId": "2bd7b049-3fa0-4c44-9a6d-b5c7a597ce37",
      "error": "",
      "response": true,
      "successStatus": 0
    }
    
    名称 类型 描述 示例
    response boolean 成功存储则为true,否则为false true

    # 4.27.conkey

    conkey命令在缓存中检测是否有给定键对应的条目。

    请求

    http://host:port/ignite?cmd=conkey&key=getKey&cacheName=partionedCache
    
    名称 类型 可选 描述 示例
    cmd string conkey,小写
    cacheName string 缓存名称,如果未提供,会使用默认的缓存 partionedCache
    key string 在缓存中检测是否存在的键 testKey
    destId string 要返回指标的节点Id 8daab5ea-af83-4d91-99b6-77ed2ca06647

    响应

    {
      "affinityNodeId": "2bd7b049-3fa0-4c44-9a6d-b5c7a597ce37",
      "error": "",
      "response": true,
      "successStatus": 0
    }
    
    名称 类型 描述 示例
    response boolean 存在给定键对应的映射则为true true

    # 4.28.conkeys

    conkeys命令在缓存中检测是否有给定键对应的条目。

    请求

    http://host:port/ignite?cmd=conkeys&k1=getKey1&k2=getKey2&k3=getKey3&cacheName=partionedCache
    
    名称 类型 可选 描述 示例
    cmd string rmvall,小写
    cacheName string 缓存名称,如果未提供,会使用默认的缓存 partionedCache
    k1...kN string 在缓存中检测是否存在的键 key1, key2, ..., keyN
    destId string 要返回指标的节点Id 8daab5ea-af83-4d91-99b6-77ed2ca06647

    响应

    {
      "affinityNodeId": "2bd7b049-3fa0-4c44-9a6d-b5c7a597ce37",
      "error": "",
      "response": true,
      "successStatus": 0
    }
    
    名称 类型 描述 示例
    response boolean 存在给定键对应的映射则为true true

    # 4.29.getorcreate

    getorcreate命令如果不存在给定名字的缓存,则会进行缓存的创建。

    请求

    http://host:port/ignite?cmd=getorcreate&cacheName=myPartionedCache
    
    名称 类型 可选 描述
    cmd string getorcreate,小写
    cacheName string 缓存名称,如果未提供,会使用默认的缓存
    backups int 缓存数据的备份数量,默认值为0
    dataRegion string 缓存所属的内存区的名字
    templateName string Ignite中注册的用作缓存配置的缓存模板名,具体可以看缓存模板
    cacheGroup string 缓存所属的缓存组名
    writeSynchronizationMode string 配置缓存的写同步模式:FULL_SYNCFULL_ASYNCPRIMARY_SYNC

    响应

    {
      "error": "",
      "response": null,
      "successStatus": 0
    }
    

    # 4.30.destcache

    destcache命令删除给定名字的缓存。

    请求

    http://host:port/ignite?cmd=destcache&cacheName=partionedCache
    
    名称 类型 可选 描述 示例
    cmd string destcache,小写
    cacheName string 缓存名称,如果未提供,会使用默认的缓存 partionedCache

    响应

    {
      "error": "",
      "response": null,
      "successStatus": 0
    }
    

    # 4.31.node

    node命令获取一个节点的信息。

    请求

    http://host:port/ignite?cmd=node&attr=true&mtr=true&id=c981d2a1-878b-4c67-96f6-70f93a4cd241
    
    名称 类型 可选 描述 示例
    cmd string node,小写
    mtr boolean 如果为true,返回值会包含指标信息 true
    attr boolean 如果为true,返回值会包含属性信息 true
    ip string 如果传递了id参数该参数是可选的。返回值包含了指定IP对应的节点信息 192.168.0.1
    id string 如果传递了ip参数该参数为可选的。返回值包含了指定节点id对应的节点信息 8daab5ea-af83-4d91-99b6-77ed2ca06647
    caches boolean 如果配置为truenode返回的缓存信息会包括:缓存名、缓存模式和SQL模式。如果配置为falsenode命令的返回结果不包含任何缓存信息,默认值为true true

    响应

    {
      "error": "",
      "response": {
        "attributes": null,
        "caches": {},
        "consistentId": "127.0.0.1:47500",
        "defaultCacheMode": "REPLICATED",
        "metrics": null,
        "nodeId": "2d0d6510-6fed-4fa3-b813-20f83ac4a1a9",
        "replicaCount": 128,
        "tcpAddresses": ["127.0.0.1"],
        "tcpHostNames": [""],
        "tcpPort": 11211
      },
      "successStatus": 0
    }
    

    # 4.32.log

    log命令显示服务器的日志。

    请求

    http://host:port/ignite?cmd=log&from=10&to=100&path=/var/log/ignite.log
    
    名称 类型 可选 描述 示例
    cmd string log,小写
    from integer 开始的行号,如果传入了to参数,该参数为必须 0
    path string 日志文件的路径,如果未提供会使用默认值 /log/cache_server.log
    to integer 结束的行号,如果传入了from参数,该参数为必须 1000

    响应

    {
      "error": "",
      "response": ["[14:01:56,626][INFO ][test-runner][GridDiscoveryManager] Topology snapshot [ver=1, nodes=1, CPUs=8, heap=1.8GB]"],
      "successStatus": 0
    }
    

    # 4.33.top

    top命令获取一个拓扑的信息。

    请求

    http://host:port/ignite?cmd=top&attr=true&mtr=true&id=c981d2a1-878b-4c67-96f6-70f93a4cd241
    
    名称 类型 可选 描述 示例
    cmd string top,小写
    mtr boolean 如果为true,返回值会包含指标信息 true
    attr boolean 如果为true,返回值会包含属性信息 true
    ip string 如果传递了id参数该参数是可选的。返回值包含了指定IP对应的节点信息 192.168.0.1
    id string 如果传递了ip参数该参数为可选的。返回值包含了指定节点id对应的节点信息 8daab5ea-af83-4d91-99b6-77ed2ca06647
    caches boolean 如果配置为truetop返回的缓存信息会包括:缓存名、缓存模式和SQL模式。如果配置为falsetop命令的返回结果不包含任何缓存信息,默认值为true true

    响应

    {
      "error": "",
      "response": [
        {
          "attributes": {
            ...
          },
          "caches": [
            {
              name: "",
              mode: "PARTITIONED"
            },
            {
              name: "partionedCache",
              mode: "PARTITIONED",
              sqlSchema: "partionedCache"
            }
          ],
          "consistentId": "127.0.0.1:47500",
          "metrics": {
            ...
          },
          "nodeId": "96baebd6-dedc-4a68-84fd-f804ee1ed995",
          "replicaCount": 128,
          "tcpAddresses": ["127.0.0.1"],
          "tcpHostNames": [""],
          "tcpPort": 11211
       },
       {
         "attributes": {
           ...
         },
         "caches": [
           {
             name: "",
             mode: "REPLICATED"
           }
         ],
         "consistentId": "127.0.0.1:47501",
         "metrics": {
           ...
         },
         "nodeId": "2bd7b049-3fa0-4c44-9a6d-b5c7a597ce37",
         "replicaCount": 128,
         "tcpAddresses": ["127.0.0.1"],
         "tcpHostNames": [""],
         "tcpPort": 11212
       }
      ],
      "successStatus": 0
    }
    

    # 4.34.exe

    exe命令在集群中执行给定的任务。

    请求

    http://host:port/ignite?cmd=exe&name=taskName&p1=param1&p2=param2&async=true
    
    名称 类型 可选 描述 示例
    cmd string exe,小写
    name string 要执行的任务名 summ
    p1...pN string 任务执行的参数 arg1...argN
    async boolean 任务异步执行的标志 true

    响应

    响应中包含了与错误有关的信息,任务的唯一标识,计算的结果和状态。

    {
      "error": "",
      "response": {
        "error": "",
        "finished": true,
        "id": "~ee2d1688-2605-4613-8a57-6615a8cbcd1b",
        "result": 4
      },
      "successStatus": 0
    }
    

    # 4.35.res

    res命令获取指定任务的计算结果。

    请求

    http://host:port/ignite?cmd=res&id=8daab5ea-af83-4d91-99b6-77ed2ca06647
    
    名称 类型 可选 描述 示例
    cmd string res,小写
    id string 要返回结果的任务id 69ad0c48941-4689aae0-6b0e-4d52-8758-ce8fe26f497d~4689aae0-6b0e-4d52-8758-ce8fe26f497d

    响应

    响应中包含了与错误有关的信息,任务的唯一标识,计算的结果和状态。

    {
      "error": "",
      "response": {
        "error": "",
        "finished": true,
        "id": "69ad0c48941-4689aae0-6b0e-4d52-8758-ce8fe26f497d~4689aae0-6b0e-4d52-8758-ce8fe26f497d",
        "result": 4
      },
      "successStatus": 0
    }
    

    # 4.36.qryexe

    qryexe命令在缓存中执行指定的查询。

    请求

    http://host:port/ignite?cmd=qryexe&type=Person&pageSize=10&cacheName=Person&arg1=1000&arg2=2000&qry=salary+%3E+%3F+and+salary+%3C%3D+%3F
    
    名称 类型 可选 描述 示例
    cmd string qryexe,小写
    type string 要查询的类型 String
    pageSize number 查询的每页大小 3
    cacheName string 缓存名称,如果未提供则使用默认的缓存 testCache
    arg1...argN string 查询的参数 1000,2000
    qry string 编码后的sql salary+%3E+%3F+and+salary+%3C%3D+%3F

    响应

    响应中包含了查询的结果集,字段查询的元数据,最后页的标识以及查询的id。

    {
      "error":"",
      "response":{
        "fieldsMetadata":[],
        "items":[
          {"key":3,"value":{"name":"Jane","id":3,"salary":2000}},
          {"key":0,"value":{"name":"John","id":0,"salary":2000}}],
        "last":true,
        "queryId":0},
      "successStatus":0
    }
    

    # 4.37.qryfldexe

    qryfldexe命令在缓存中执行指定的有字段的查询。

    请求

    http://host:port/ignite?cmd=qryfldexe&pageSize=10&cacheName=Person&qry=select+firstName%2C+lastName+from+Person
    
    名称 类型 可选 描述 示例
    cmd string qryfldexe,小写
    pageSize number 查询的每页大小 3
    cacheName string 缓存名称,如果未提供则使用默认的缓存 testCache
    arg1...argN string 查询的参数 1000,2000
    qry string 编码后的sql select+firstName%2C+lastName+from+Person

    响应

    响应中包含了查询的结果集,字段查询的元数据,最后页的标识以及查询的id。

    {
      "error":"",
      "response":{
        "fieldsMetadata":[{"fieldName":"FIRSTNAME", "fieldTypeName":"java.lang.String", "schemaName":"person", "typeName":"PERSON"},{"fieldName":"LASTNAME","fieldTypeName":"java.lang.String","schemaName":"person","typeName":"PERSON"}],
        "items":[["Jane","Doe"],["John","Doe"]],
        "last":true,
        "queryId":0
      },
      "successStatus":0}
    

    # 4.38.qryscanexe

    qryscanexe命令在缓存中执行扫描查询。

    请求

    http://host:port/ignite?cmd=qryscanexe&pageSize=10&cacheName=Person&className=org.apache.ignite.filters.PersonPredicate
    
    名称 类型 可选 描述 示例
    cmd string qryscanexe,小写
    pageSize number 查询的每页大小 3
    cacheName string 缓存名称,如果未提供,会使用默认的缓存 testCache
    className string 扫描查询的谓词类名,应该实现IgniteBiPredicate接口 org.apache.ignite.filters.PersonPredicate

    响应

    响应中包含了扫描查询的结果集,字段查询的元数据,最后页的标识以及查询的id。

    {
      "error": "",
      "response": {
        "fieldsMetadata": [
          {
            "fieldName": "key",
            "fieldTypeName": "",
            "schemaName": "",
            "typeName": ""
          },
          {
            "fieldName": "value",
            "fieldTypeName": "",
            "schemaName": "",
            "typeName": ""
          }
        ],
        "items": [
          {
            "key": 1,
            "value": {
              "firstName": "Jane",
              "id": 1,
              "lastName": "Doe",
              "salary": 1000
            }
          },
          {
            "key": 3,
            "value": {
              "firstName": "Jane",
              "id": 3,
              "lastName": "Smith",
              "salary": 2000
            }
          }
        ],
        "last": true,
        "queryId": 0
      },
      "successStatus": 0
    }
    

    # 4.39.qryfetch

    qryfetch命令获取指定查询的下一页数据。

    请求

    http://host:port/ignite?cmd=qryfetch&pageSize=10&qryId=5
    
    名称 类型 可选 描述 示例
    cmd string qryfetch,小写
    pageSize number 查询的每页大小 3
    qryId number qryexe,qryfldexe,qryfetch命令执行返回的查询id 0

    响应

    响应中包含了查询的结果集,最后页的标识以及查询的id。

    {
      "error":"",
      "response":{
        "fieldsMetadata":[],
        "items":[["Jane","Doe"],["John","Doe"]],
        "last":true,
        "queryId":0
      },
      "successStatus":0}
    

    # 4.40.qrycls

    qrycls命令关闭查询占用的资源。

    请求

    http://host:port/ignite?cmd=qrycls&qryId=5
    
    名称 类型 可选 描述 示例
    cmd string qrycls,小写
    qryId number qryexe,qryfldexe,qryfetch命令执行返回的查询id 0

    响应

    如果成功关闭则返回true

    {
      "error":"",
      "response":true,
      "successStatus":0
    }
    

    # 4.40.probe

    probe命令返回Ignite内核是否已经启动。

    请求

    http://host:port/ignite?cmd=probe
    

    响应

    如果内核已经启动则返回HTTP状态码200,否则返回503。

    {
      "error": "",
      "response": "grid has started",
      "successStatus": 0
    }
    

    18624049226

    最后更新时间:: 11/25/2023, 3:51:28 PM