Skip to content

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检测其是否工作正常:

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

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

bash
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服务器参数的方法如下:

xml
<bean class="org.apache.ignite.configuration.IgniteConfiguration" id="ignite.cfg">
    <property name="connectorConfiguration">
        <bean class="org.apache.ignite.configuration.ConnectorConfiguration">
            <property name="jettyPath" value="jetty.xml"/>
        </bean>
    </property>
</bean>
java
IgniteConfiguration cfg = new IgniteConfiguration();
cfg.setConnectorConfiguration(new ConnectorConfiguration().setJettyPath("jetty.xml"));

下表列出了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
<?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]替换为实际值。

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

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

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

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

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

注意

如果服务端开启了认证,那么用户的凭据或者令牌就是必须的,如果既不提供sessionToken,也不提供userpassword会出错:{"successStatus":2,"sessionToken":null,"error":"Failed to handle request - session token not found or invalid","response":null}

会话令牌过期

会话令牌有效期只有30秒,如果使用一个过期的令牌会报错:{"successStatus":1,"error":"Failed to handle request - unknown session token (maybe expired session) [sesTok=12FFFD4827D149068E9FFF59700E5FDA]","sessionToken":null,"response":null}。 如果要自定义过期时间,可以配置IGNITE_REST_SESSION_TIMEOUT系统参数,单位为秒。

比如:-DIGNITE_REST_SESSION_TIMEOUT=3600

2.数据类型

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

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

2.1.Java类型

REST键类型/值类型对应的Java类型
booleanjava.lang.Boolean
bytejava.lang.Byte
shortjava.lang.Short
integerjava.lang.Integer
longjava.lang.Long
floatjava.lang.Float
doublejava.lang.Double
datejava.sql.Date,数值应该为valueOf(String)方法支持的格式,比如:2018-01-01
timejava.sql.Time,数值应该为valueOf(String)方法支持的格式,比如:01:01:01
timestampjava.sql.Timestamp,数值应该为valueOf(String)方法支持的格式,比如:2018-02-18%2001:01:01
uuidjava.util.UUID
IgniteUuidorg.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表示:

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类型的二进制对象;
  • 否则,将按照常规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对象,每一个命令都有一个类似的结构,这个对象有如下的结构:

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

4.REST API参考

4.1.version

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

URL:

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

请求

名称类型可选描述示例
cmdstringversion,小写

响应

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

4.2.state

返回当前集群的状态

请求:

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

响应:

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

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

4.3.setstate

setstate命令会修改集群的状态

请求:

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

响应:

json
{
  "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
名称类型可选描述示例
cmdstringincr,小写
cacheNamestring缓存名称,如果未提供,会使用默认的缓存partionedCache
keystring原子性Long类型的名称counter
initlong初始值15
deltalong增加的值42

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

json
{
  "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
名称类型可选描述示例
cmdstringdecr,小写
cacheNamestring缓存名称,如果未提供,会使用默认的缓存partionedCache
keystring原子性Long类型的名称counter
initlong初始值15
deltalong减去的值42

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

json
{
  "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
名称类型可选描述示例
cmdstringcache,小写
cacheNamestring缓存名称,如果未提供,会使用默认的缓存partionedCache
destIdstring要返回指标的节点Id8daab5ea-af83-4d91-99b6-77ed2ca06647

响应

json
{
  "affinityNodeId": "",
  "error": "",
  "response": {
    "createTime": 1415179251551,
    "hits": 0,
    "misses": 0,
    "readTime": 1415179251551,
    "reads": 0,
    "writeTime": 1415179252198,
    "writes": 2
  },
  "successStatus": 0
}
名称类型描述示例
responsejsonObjectJSON对象包含了缓存的指标,比如创建时间,读计数等`{"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
名称类型可选描述示例
cmdstringsize,小写
cacheNamestring缓存名称,如果未提供,会使用默认的缓存partionedCache

响应

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

4.8.metadata

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

请求

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

响应

json
{
  "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}
名称类型可选描述示例
cmdstringcas,小写
cacheNamestring缓存名称,如果未提供,会使用默认的缓存partionedCache
keystring缓存内要保存的键值name
valstring与给定键对应的值Jack
val2string预期值Bob
destIdstring要返回指标的节点Id8daab5ea-af83-4d91-99b6-77ed2ca06647

响应

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

json
{
  "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
名称类型可选描述示例
cmdstringappend,小写
cacheNamestring缓存名称,如果未提供,会使用默认的缓存partionedCache
keystring缓存内要保存的键值name
valstring为当前值要增加的后缀Jack
destIdstring要返回指标的节点Id8daab5ea-af83-4d91-99b6-77ed2ca06647

响应

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

4.11.prepend

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

请求

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

响应

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

4.12.rep

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

请求

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

响应

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

json
{
  "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}
名称类型可选描述示例
cmdstringget,小写
cacheNamestring缓存名称,如果未提供,会使用默认的缓存partionedCache
keystring要返回的值对应的键testKey
keyTypeJava内置类型具体可以看上面的数据类型章节。
destIdstring要返回指标的节点Id8daab5ea-af83-4d91-99b6-77ed2ca06647

响应

json
{
  "affinityNodeId": "2bd7b049-3fa0-4c44-9a6d-b5c7a597ce37",
  "error": "",
  "response": "value from cache",
  "successStatus": 0
}
名称类型描述示例
responsejsonObject给定键的值{"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
名称类型可选描述示例
cmdstringrmvall,小写
cacheNamestring缓存名称,如果未提供,会使用默认的缓存partionedCache
k1...kNstring要从缓存中获取的值对应的键key1, key2, ..., keyN
destIdstring要返回指标的节点Id8daab5ea-af83-4d91-99b6-77ed2ca06647

响应

json
{
  "affinityNodeId": "",
  "error": "",
  "response": {
    "key1": "value1",
    "key2": "value2"
  },
  "successStatus": 0
}
名称类型描述示例
responsejsonObject键-值对映射{"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
名称类型可选描述示例
cmdstringgetrep,小写
cacheNamestring缓存名称,如果未提供,会使用默认的缓存partionedCache
keystring缓存内要删除的键值name
destIdstring要返回指标的节点Id8daab5ea-af83-4d91-99b6-77ed2ca06647

响应

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

4.16.getput

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

请求

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

响应

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

4.17.getputifabs

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

请求

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

响应

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

4.18.getrep

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

请求

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

响应

json
{
  "affinityNodeId": "1bcbac4b-3517-43ee-98d0-874b103ecf30",
  "error": "",
  "response": oldValue,
  "successStatus": 0
}
名称类型描述示例
responsejsonObject给定键的原值{"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
名称类型可选描述示例
cmdstringrepval,小写
cacheNamestring缓存名称,如果未提供,会使用默认的缓存partionedCache
keystring缓存内的键值name
valstring与给定键对应的值Jack
val2string预期值oldValue
destIdstring要返回指标的节点Id8daab5ea-af83-4d91-99b6-77ed2ca06647

响应

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

4.20.rmv

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

请求

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

响应

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

4.21.rmvall

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

请求

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

响应

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

4.22.rmvval

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

请求

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

响应

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

4.23.add

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

请求

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

响应

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

4.24.put

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

请求

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

响应

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

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
名称类型可选描述示例
cmdstringputall,小写
cacheNamestring缓存名称,如果未提供,会使用默认的缓存partionedCache
k1...kNstring要在缓存中保存的键name
v1...vNstring与给定键关联的值Jack
destIdstring要返回指标的节点Id8daab5ea-af83-4d91-99b6-77ed2ca06647

响应

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

4.26.putifabs

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

请求

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

响应

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

4.27.conkey

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

请求

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

响应

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

4.28.conkeys

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

请求

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

响应

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

4.29.getorcreate

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

请求

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

响应

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

4.30.destcache

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

请求

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

响应

json
{
  "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
名称类型可选描述示例
cmdstringnode,小写
mtrboolean如果为true,返回值会包含指标信息true
attrboolean如果为true,返回值会包含属性信息true
ipstring如果传递了id参数该参数是可选的。返回值包含了指定IP对应的节点信息192.168.0.1
idstring如果传递了ip参数该参数为可选的。返回值包含了指定节点id对应的节点信息8daab5ea-af83-4d91-99b6-77ed2ca06647
cachesboolean如果配置为truenode返回的缓存信息会包括:缓存名、缓存模式和SQL模式。如果配置为falsenode命令的返回结果不包含任何缓存信息,默认值为truetrue

响应

json
{
  "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
名称类型可选描述示例
cmdstringlog,小写
frominteger开始的行号,如果传入了to参数,该参数为必须0
pathstring日志文件的路径,如果未提供会使用默认值/log/cache_server.log
tointeger结束的行号,如果传入了from参数,该参数为必须1000

响应

json
{
  "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
名称类型可选描述示例
cmdstringtop,小写
mtrboolean如果为true,返回值会包含指标信息true
attrboolean如果为true,返回值会包含属性信息true
ipstring如果传递了id参数该参数是可选的。返回值包含了指定IP对应的节点信息192.168.0.1
idstring如果传递了ip参数该参数为可选的。返回值包含了指定节点id对应的节点信息8daab5ea-af83-4d91-99b6-77ed2ca06647
cachesboolean如果配置为truetop返回的缓存信息会包括:缓存名、缓存模式和SQL模式。如果配置为falsetop命令的返回结果不包含任何缓存信息,默认值为truetrue

响应

json
{
  "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
名称类型可选描述示例
cmdstringexe,小写
namestring要执行的任务名summ
p1...pNstring任务执行的参数arg1...argN
asyncboolean任务异步执行的标志true

响应

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

json
{
  "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
名称类型可选描述示例
cmdstringres,小写
idstring要返回结果的任务id69ad0c48941-4689aae0-6b0e-4d52-8758-ce8fe26f497d~4689aae0-6b0e-4d52-8758-ce8fe26f497d

响应

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

json
{
  "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
名称类型可选描述示例
cmdstringqryexe,小写
typestring要查询的类型String
pageSizenumber查询的每页大小3
cacheNamestring缓存名称,如果未提供则使用默认的缓存testCache
arg1...argNstring查询的参数1000,2000
qrystring编码后的sqlsalary+%3E+%3F+and+salary+%3C%3D+%3F

响应

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

json
{
  "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
名称类型可选描述示例
cmdstringqryfldexe,小写
pageSizenumber查询的每页大小3
cacheNamestring缓存名称,如果未提供则使用默认的缓存testCache
arg1...argNstring查询的参数1000,2000
qrystring编码后的sqlselect+firstName%2C+lastName+from+Person

响应

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

json
{
  "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
名称类型可选描述示例
cmdstringqryscanexe,小写
pageSizenumber查询的每页大小3
cacheNamestring缓存名称,如果未提供,会使用默认的缓存testCache
classNamestring扫描查询的谓词类名,应该实现IgniteBiPredicate 接口org.apache.ignite.filters.PersonPredicate

响应

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

json
{
  "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
名称类型可选描述示例
cmdstringqryfetch,小写
pageSizenumber查询的每页大小3
qryIdnumberqryexe,qryfldexe,qryfetch命令执行返回的查询id0

响应

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

json
{
  "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
名称类型可选描述示例
cmdstringqrycls,小写
qryIdnumberqryexe,qryfldexe,qryfetch命令执行返回的查询id0

响应

如果成功关闭则返回true

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

18624049226