平台和协议

1.概述

Ignite为主要的语言和技术,以原生库的形式提供了一套API,包括Java,.NET和C++,还支持包括REST、Memcached以及Redis在内的多种协议。

2.REST API

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

2.1.入门

要启用HTTP连接,确保在类路径中包含ignite-rest-http模块,在发布版中,这意味着将其从IGNITE_HOME/libs/optional/拷贝到IGNITE_HOME/libs中。

不需要显式地进行配置,连接器就会自动启动,然后监听8080端口,可以通过curl检测其是否工作正常。

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

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

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

安全

通过REST协议,可以与集群建立安全的连接,怎么做呢,首先要通过IgniteConfiguration.setAuthenticationEnabled(true)方法开启集群的认证功能,注意目前只有开启持久化时认证功能才可用。

服务端开启认证之后,就可以在REST连接串中提供user=[user]&password=[password]参数进行用户认证了,成功之后会生成一个会话令牌,该令牌可以在该会话有效期内的任意命令中使用。

请求认证有两种方式:

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

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

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

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

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

在浏览器中执行上面的字符串都会返回一个会话令牌,大概向下面这样:

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

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

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

上面的例子中,需要将[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.2.数据类型

对于put/get操作,REST API还可以通过keyTypevalueType参数支持Java的内置类型,注意除非显式指定了下面提到的数据类型,REST协议会将键-值数据转换为String类型,这意味着集群中对数据的读写都是作为String的。

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
1

对应的get命令为:

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

2.3.API参考

在内部,Ignite使用Jetty来提供HTTP服务的功能,HTTP REST客户端可以使用ConnectorConfiguration进行配置。

2.3.1.返回值

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

2.3.2.log

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

URL:

http://host:port/ignite?cmd=log&from=10&to=100&path=/var/log/ignite.log
1

请求参数

名称 类型 可选 描述 示例
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
}
1
2
3
4
5
名称 类型 描述 示例
response string 日志 ["[14:01:56,626][INFO ][test-runner][GridDiscoveryManager] Topology snapshot [ver=1, nodes=1, CPUs=8, heap=1.8GB]"]

2.3.3.version

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

URL:

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

请求参数

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

响应示例

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

2.3.4.decr

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

URL:

http://host:port/ignite?cmd=decr&cacheName=partionedCache&key=decrKey&init=15&delta=10
1

请求参数

名称 类型 可选 描述 示例
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
}
1
2
3
4
5
6
名称 类型 描述 示例
response long 操作之后的值 -42

2.3.5.incr

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

URL:

http://host:port/ignite?cmd=incr&cacheName=partionedCache&key=incrKey&init=15&delta=10
1

请求参数

名称 类型 可选 描述 示例
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
}
1
2
3
4
5
6
名称 类型 描述 示例
response long 操作之后的值 42

2.3.6.cache

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

URL:

http://host:port/ignite?cmd=cache&cacheName=partionedCache&destId=8daab5ea-af83-4d91-99b6-77ed2ca06647
1

请求参数

名称 类型 可选 描述 示例
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
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
名称 类型 描述 示例
response jsonObject JSON对象包含了缓存的指标,比如创建时间,读计数等 {"createTime": 1415179251551, "hits": 0, "misses": 0, "readTime":1415179251551, "reads": 0,"writeTime": 1415179252198, "writes": 2
}

2.3.7.cas

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

URL:

http://host:port/ignite?cmd=cas&key=casKey&val2=casOldVal&val1=casNewVal&cacheName=partionedCache&destId=8daab5ea-af83-4d91-99b6-77ed2ca06647
1

请求参数

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

响应示例

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

2.3.8.prepend

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

URL:

http://host:port/ignite?cmd=prepend&key=prependKey&val=prefix_&cacheName=partionedCache&destId=8daab5ea-af83-4d91-99b6-77ed2ca06647
1

请求参数

名称 类型 可选 描述 示例
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
}
1
2
3
4
5
6
名称 类型 描述 示例
response boolean 如果替换发生则为true,否则false true

2.3.9.append

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

URL:

http://host:port/ignite?cmd=append&key=appendKey&val=_suffix&cacheName=partionedCache&destId=8daab5ea-af83-4d91-99b6-77ed2ca06647
1

请求参数

名称 类型 可选 描述 示例
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
}
1
2
3
4
5
6
名称 类型 描述 示例
response boolean 如果替换发生则为true,否则false true

2.3.10.rep

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

URL:

http://host:port/ignite?cmd=rep&key=repKey&val=newValue&cacheName=partionedCache&destId=8daab5ea-af83-4d91-99b6-77ed2ca06647
1

请求参数

名称 类型 可选 描述 示例
cmd string rep,小写
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
}
1
2
3
4
5
6
名称 类型 描述 示例
response boolean 如果替换发生则为true,否则false true

2.3.11.getrep

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

URL:

http://host:port/ignite?cmd=getrep&key=repKey&val=newValue&cacheName=partionedCache&destId=8daab5ea-af83-4d91-99b6-77ed2ca06647
1

请求参数

名称 类型 可选 描述 示例
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
}
1
2
3
4
5
6
名称 类型 描述 示例
response jsonObject 给定键的原值 {"name": "Bob"}

2.3.12.repval

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

URL:

http://host:port/ignite?cmd=repval&key=repKey&val=newValue&val2=oldVal&cacheName=partionedCache&destId=8daab5ea-af83-4d91-99b6-77ed2ca06647
1

请求参数

名称 类型 可选 描述 示例
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
}
1
2
3
4
5
6
名称 类型 描述 示例
response boolean 如果替换发生则为true,否则false true

2.3.13.rmvall

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

URL:

http://host:port/ignite?cmd=rmvall&k1=rmKey1&k2=rmKey2&k3=rmKey3&cacheName=partionedCache&destId=8daab5ea-af83-4d91-99b6-77ed2ca06647
1

请求参数

名称 类型 可选 描述 示例
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
}
1
2
3
4
5
6
名称 类型 描述 示例
response boolean 如果删除发生则为true,否则false true

2.3.14.rmvval

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

URL:

http://host:port/ignite?cmd=rmvval&key=rmvKey&val=rmvVal&cacheName=partionedCache&destId=8daab5ea-af83-4d91-99b6-77ed2ca06647
1

请求参数

名称 类型 可选 描述 示例
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
}
1
2
3
4
5
6
名称 类型 描述 示例
response boolean false,如果没有映射的键 true

2.3.15.rmv

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

URL:

http://host:port/ignite?cmd=rmv&key=rmvKey&cacheName=partionedCache&destId=8daab5ea-af83-4d91-99b6-77ed2ca06647
1

请求参数

名称 类型 可选 描述 示例
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
}
1
2
3
4
5
6
名称 类型 描述 示例
response boolean true,如果删除发生,否则,false true

2.3.16.getrmv

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

URL:

http://host:port/ignite?cmd=getrmv&cacheName=partionedCache&destId=8daab5ea-af83-4d91-99b6-77ed2ca06647&key=name
1

请求参数

名称 类型 可选 描述 示例
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
}
1
2
3
4
5
6
名称 类型 描述 示例
response jsonObject 给定键的原值 {"name": "Bob"}

2.3.17.add

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

URL:

http://host:port/ignite?cmd=add&key=newKey&val=newValue&cacheName=partionedCache&destId=8daab5ea-af83-4d91-99b6-77ed2ca06647
1

请求参数

名称 类型 可选 描述 示例
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
}
1
2
3
4
5
6
名称 类型 描述 示例
response boolean true,如果成功存储,否则,false true

2.3.18.putall

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

URL:

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
1

请求参数

名称 类型 可选 描述 示例
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
}
1
2
3
4
5
6
名称 类型 描述 示例
response boolean 如果成功保存则为true,否则false true

2.3.19.put

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

URL:

http://host:port/ignite?cmd=put&key=newKey&val=newValue&cacheName=partionedCache&destId=8daab5ea-af83-4d91-99b6-77ed2ca06647
1

请求参数

名称 类型 可选 描述 示例
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
}
1
2
3
4
5
6
名称 类型 描述 示例
response boolean true,如果成功存储,否则,false true

2.3.20.getall

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

URL:

http://host:port/ignite?cmd=getall&k1=getKey1&k2=getKey2&k3=getKey3&cacheName=partionedCache&destId=8daab5ea-af83-4d91-99b6-77ed2ca06647
1

请求参数

名称 类型 可选 描述 示例
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
}
1
2
3
4
5
6
7
8
9
名称 类型 描述 示例
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”}]}

2.3.21.get

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

URL:

http://host:port/ignite?cmd=get&key=getKey&cacheName=partionedCache&destId=8daab5ea-af83-4d91-99b6-77ed2ca06647
1

也可以获取通过API或者SQL插入的数据,比如,如果缓存中有一个Person对象,可以通过如下方式获取:

URL:

# If the entry in cache was inserted via API, for example
# cache.put(1, new Person(1, Alex, 300));
# you can use the following REST command to get the value

http://host:port/ignite?cmd=get&cacheName=myCacheName&keyType=int&key=1
1
2
3
4
5

SQL:

# If the entry in cache was inserted via SQL, for example -
# create table person(id integer primary key, name varchar(100), salary integer);
# insert into person(id, name, salary) values (1, Alex, 300);
# you can use the following REST command to get the value

http://host:port/ignite?cmd=get&cacheName=SQL_PUBLIC_PERSON&keyType=int&key=1
1
2
3
4
5
6

请求参数

名称 类型 可选 描述 示例
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
}
1
2
3
4
5
6
名称 类型 描述 示例
response jsonObject 给定键的值 {"name": "Alex","id":1,"salary":2000}

2.3.22.conkey

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

URL:

http://host:port/ignite?cmd=conkey&key=getKey&cacheName=partionedCache
1

请求参数

名称 类型 可选 描述 示例
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
}
1
2
3
4
5
6
名称 类型 描述 示例
response boolean 存在给定键对应的映射则为true true

2.3.23.conkeys

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

URL:

http://host:port/ignite?cmd=conkeys&k1=getKey1&k2=getKey2&k3=getKey3&cacheName=partionedCache
1

请求参数

名称 类型 可选 描述 示例
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
}
1
2
3
4
5
6
名称 类型 描述 示例
response boolean 存在给定键对应的映射则为true true

2.3.24.getput

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

URL:

http://host:port/ignite?cmd=getput&key=getKey&val=newVal&cacheName=partionedCache
1

请求参数

名称 类型 可选 描述 示例
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": "value",
  "successStatus": 0
}
1
2
3
4
5
6
名称 类型 描述 示例
response jsonObject 给定键的原值 {"name": "bob"}

2.3.25.putifabs

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

URL:

http://host:port/ignite?cmd=putifabs&key=getKey&val=newVal&cacheName=partionedCache
1

请求参数

名称 类型 可选 描述 示例
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
}
1
2
3
4
5
6
名称 类型 描述 示例
response boolean 成功存储则为true true

2.3.26.getputifabs

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

URL:

http://host:port/ignite?cmd=getputifabs&key=getKey&val=newVal&cacheName=partionedCache
1

请求参数

名称 类型 可选 描述 示例
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
}
1
2
3
4
5
6
名称 类型 描述 示例
response jsonObject 给定键对应的原值 {"name": "bob"}

2.3.27.size

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

URL:

http://host:port/ignite?cmd=size&cacheName=partionedCache
1

请求参数

名称 类型 可选 描述 示例
cmd string size,小写
cacheName string 缓存名称,如果未提供,会使用默认的缓存 partionedCache

响应示例

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

2.3.28.getorcreate

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

URL:

http://host:port/ignite?cmd=getorcreate&cacheName=myPartionedCache
1

请求参数

名称 类型 可选 描述
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
}
1
2
3
4
5

2.3.29.destcache

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

URL:

http://host:port/ignite?cmd=destcache&cacheName=partionedCache
1

请求参数

名称 类型 可选 描述 示例
cmd string destcache,小写
cacheName string 缓存名称,如果未提供,会使用默认的缓存 partionedCache

响应示例

{
  "error": "",
  "response": null,
  "successStatus": 0
}
1
2
3
4
5

2.3.30.node

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

URL:

http://host:port/ignite?cmd=node&attr=true&mtr=true&id=c981d2a1-878b-4c67-96f6-70f93a4cd241
1

请求参数

名称 类型 可选 描述 示例
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

响应示例

{
  "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
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
名称 类型 描述 示例
response jsonObject 一个节点的信息 {"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}

2.3.31.top

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

URL:

http://host:port/ignite?cmd=top&attr=true&mtr=true&id=c981d2a1-878b-4c67-96f6-70f93a4cd241
1

请求参数

名称 类型 可选 描述 示例
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

响应示例

{
  "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
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
名称 类型 描述 示例
response jsonObject 一个拓扑的信息 [{"attributes": {...},"caches": [{name: "",mode: "PARTITIONED"},{name: "partionedCache",mode: "PARTITIONED",sqlSchema: "partionedCache"}],"consistentId": "127.0.0.1:47500","REPLICATED","metrics": {...},"nodeId": "96baebd6-dedc-4a68-84fd-f804ee1ed995",..."tcpPort": 11211},{"attributes": {...},"caches": [{name: "",mode: "REPLICATED"}],"consistentId": "127.0.0.1:47501","metrics": {...},"nodeId": "2bd7b049-3fa0-4c44-9a6d-b5c7a597ce37",..."tcpPort": 11212}]

2.3.32.exe

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

URL:

http://host:port/ignite?cmd=exe&name=taskName&p1=param1&p2=param2&async=true
1

请求参数

名称 类型 可选 描述 示例
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
}
1
2
3
4
5
6
7
8
9
10
名称 类型 描述 示例
response jsonObject JSON对象,包含了与错误有关的信息,任务的唯一标识,计算的结果和状态 {"error": "","finished": true,"id":"~ee2d1688-2605-4613-8a57-6615a8cbcd1b","result": 4}

2.3.33.res

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

URL:

http://host:port/ignite?cmd=res&id=8daab5ea-af83-4d91-99b6-77ed2ca06647
1

请求参数

名称 类型 可选 描述 示例
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
}
1
2
3
4
5
6
7
8
9
10
名称 类型 描述 示例
response jsonObject JSON对象,包含了与错误有关的信息,任务的唯一标识,计算的结果和状态 {"error": "","finished": true,"id":"~ee2d1688-2605-4613-8a57-6615a8cbcd1b","result": 4}

2.3.34.qryexe

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

URL:

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
1

请求参数

名称 类型 可选 描述 示例
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

响应示例

{
  "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
}
1
2
3
4
5
6
7
8
9
10
11
名称 类型 描述 示例
response jsonObject JSON对象,包含了查询的结果集,最后页的标识以及查询的id {"fieldsMetadata":[],"items":[{"key":3,"value":{"name":"Jane","id":3,salary":2000}},{"key":0,"value":{"name":"John","id":0,"salary":2000}}],"last":true,"queryId":0}

2.3.35.qryfldexe

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

URL:

http://host:port/ignite?cmd=qryfldexe&pageSize=10&cacheName=Person&qry=select+firstName%2C+lastName+from+Person
1

请求参数

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

响应示例

{
  "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}
1
2
3
4
5
6
7
8
9
名称 类型 描述 示例
response jsonObject JSON对象,包含了查询的结果集,字段查询的元数据,最后页的标识以及查询的id {"fieldsMetadata":[{"fieldName":"FIRSTNAME","fieldTypeName":"java.lang.String","schemaName":"person","typeName":"PERSON"},...],"items":[["Jane","Doe"],["John","Doe"]],"last":true,"queryId":0}

2.3.36.qryfetch

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

URL:

http://host:port/ignite?cmd=qryfetch&pageSize=10&qryId=5
1

请求参数

名称 类型 可选 描述 示例
cmd string qryfetch,小写
pageSize number 查询的每页大小 3
qryId number qryexe,qryfldexe,qryfetch命令执行返回的查询id 0

响应示例

{
  "error":"",
  "response":{
    "fieldsMetadata":[],
    "items":[["Jane","Doe"],["John","Doe"]],
    "last":true,
    "queryId":0
  },
  "successStatus":0}
1
2
3
4
5
6
7
8
9
名称 类型 描述 示例
response jsonObject JSON对象,包含了查询的结果集,最后页的标识以及查询的id {"fieldsMetadata":[],"items":[["Jane","Doe"],["John","Doe"]],"last":true,"queryId":0}

2.3.37.qrycls

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

URL:

http://host:port/ignite?cmd=qrycls&qryId=5
1

请求参数

名称 类型 可选 描述 示例
cmd string qrycls,小写
qryId number qryexe,qryfldexe,qryfetch命令执行返回的查询id 0

响应示例

{
  "error":"",
  "response":true,
  "successStatus":0
}
1
2
3
4
5
名称 类型 描述 示例
response boolean 如果成功关闭则为true true

2.3.38.metadata

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

URL:

http://host:port/ignite?cmd=metadata&cacheName=partionedCache
1

请求参数

名称 类型 可选 描述 示例
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
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
名称 类型 描述 示例
response jsonObject 给定缓存的元数据 {"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}]}}

2.3.39.qryscanexe

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

URL:

http://host:port/ignite?cmd=qryscanexe&pageSize=10&cacheName=Person&className=org.apache.ignite.filters.PersonPredicate
1

请求参数

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

响应示例

{
  "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
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
名称 类型 描述 示例
response jsonObject JSON对象,包含了扫描查询的结果集,字段查询的元数据,最后页的标识以及查询的id {"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}

2.3.40.activate

activate命令针对开启持久化的集群开始集群激活过程。

URL:

http://host:port/ignite?cmd=activate
1

请求参数

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

响应示例

{
  "successStatus":0,
  "error":null,
  "sessionToken":null,
  "response":"activate started"
}
1
2
3
4
5
6
名称 类型 描述 示例
response string 开始集群的激活 activate started

2.3.41.deactivate

deactivate命令针对开启持久化的集群开始集群冻结过程。

URL:

http://host:port/ignite?cmd=deactivate
1

请求参数

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

响应示例

{
  "successStatus":0,
  "error":null,
  "sessionToken":null,
  "response":"deactivate started"
}
1
2
3
4
5
6
名称 类型 描述 示例
response string 开始集群的冻结 deactivate started

2.3.42.currentstate

currentstate命令用于显示当前集群的状态(激活/冻结)。

URL:

http://host:port/ignite?cmd=currentstate
1

请求参数

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

响应示例

{
  "successStatus":0,
  "error":null,
  "sessionToken":null,
  "response":true
}
1
2
3
4
5
6
名称 类型 描述 示例
response string 集群为激活状态则为true,否则为false true

2.4.常规配置

参数名 描述 可选 默认值
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

2.5.Jetty XML配置示例

配置文件的路径需要通过上面描述的ConnectorConfiguration.setJettyPath(String)进行设定。

<?xml version="1.0"?>
<!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
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53

3.Memcached

Ignite支持Memcached协议,可以通过任何Memcached兼容客户端从Ignite缓存中存储和获取分布化的数据。

注意

当前,Ignite只支持Memcached的二进制协议。

可以通过如下语言的Memcached客户端连接到Ignite:

  • PHP
  • Java
  • Python
  • Ruby

3.1.配置

Ignite在其REST客户端连接器端口(默认为11211)上接收Memcached请求。

对于除增量和减量之外的所有Memcached操作,Ignite使用默认缓存(缓存名为default)。它需要事先显式创建,比如使用以下配置:

<bean class="org.apache.ignite.configuration.CacheConfiguration">
    <property name="name" value="default"/>
    <property name="atomicityMode" value="ATOMIC"/>
    <property name="backups" value="1"/>
</bean>
1
2
3
4
5

注意,下面的示例使用示例examples/config/example-cache.xml配置文件,该文件声明了默认的缓存。

对于增量和减量Memcached操作,Ignite使用IgniteAtomicLong数据结构,它们也需要预先创建,代码如下:

ignite.atomicLong("key", 10, true);
1

3.2.PHP

要使用PHP客户端通过Memcached连接到Ignite,首先要下载Ignite,然后:

  • 启动配置有缓存的Ignite,比如:
bin/ignite.sh examples/config/example-cache.xml
1
  • 通过二进制协议用Memcached客户端连接到Ignite:
// Create client instance.
$client = new Memcached();

// Set localhost and port (set to correct values).
$client->addServer("localhost", 11211);

// Force client to use binary protocol.
$client->setOption(Memcached::OPT_BINARY_PROTOCOL, true);

// Put entry to cache.
if ($client->add("key", "val"))
    echo "Successfully put entry in cache.\n";

// Check entry value.
echo("Value for 'key': " . $client->get("key") . "\n");
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

3.3.Java

要使用Java客户端通过Memcached连接到Ignite,首先要下载Ignite,然后:

  • 启动配置有缓存的Ignite,比如:
bin/ignite.sh examples/config/example-cache.xml
1
  • 通过二进制协议用Memcached客户端连接到Ignite:
MemcachedClient client = null;

try {
    client = new MemcachedClient(new BinaryConnectionFactory(),
            AddrUtil.getAddresses("localhost:11211"));
} catch (IOException e) {
    e.printStackTrace();
}

client.set("key", 0, "val");

System.out.println("Value for 'key': " + client.get("key"));
1
2
3
4
5
6
7
8
9
10
11
12

3.4.Python

要使用Python客户端通过Memcached连接到Ignite,首先要下载Ignite,然后:

  • 启动配置有缓存的Ignite,比如:
bin/ignite.sh examples/config/example-cache.xml
1
  • 通过二进制协议用Memcached客户端连接到Ignite:
import pylibmc

client = memcache.Client(["127.0.0.1:11211", binary=True])

client.set("key", "val")

print "Value for 'key': %s" %

client.get("key")
1
2
3
4
5
6
7
8
9

3.5.Ruby

要使用Ruby客户端通过Memcached连接到Ignite,首先要下载Ignite,然后:

  • 启动配置有缓存的Ignite,比如:
bin/ignite.sh examples/config/example-cache.xml
1
  • 通过二进制协议用Memcached客户端连接到Ignite:
require 'dalli'

options = { :namespace => "app_v1", :compress => true }

client = Dalli::Client.new('localhost:11211', options)

client.set('key', 'value', nil, :raw => true)

value = client.get('key')
1
2
3
4
5
6
7
8
9

4.Redis

Ignite实现了对Redis的部分兼容,可以使用任何Redis兼容客户端在缓存中存储以及获取分布化的数据。 Ignite客户端支持如下的命令:

连接

字符串

  • DEL(限制:返回提交的键的数量)
  • EXISTS

服务器

集群节点通过监听特定的端口来接收Redis请求,每个Ignite节点默认都会通过监听[host]:11211来接收请求,通过ConnectorConfiguration可以覆写主机和端口:

<bean class="org.apache.ignite.configuration.IgniteConfiguration">
  	...
	<property name="connectorConfiguration">
	    <bean class="org.apache.ignite.configuration.ConnectorConfiguration">
		<property name="host" value="localhost"/>
		<property name="port" value="6379"/>
	    </bean>
	</property>
</bean>
1
2
3
4
5
6
7
8
9

配置默认缓存

需要配置一个默认的redis-ignite-internal-cache-0缓存,用于默认的Redis数据库,当切换到SELECT命令时也可以用做其它数据库的模板。

可以使用自己喜欢的Redis客户端接入Ignite,下面是是用几种语言的简单示例:

4.1.Java

要使用Redis的java客户端接入Ignite,需要先配置并启动一个Ignite集群。

要接入使用6379端口的Ignite,以Jedis为例:

JedisPoolConfig jedisPoolCfg = new JedisPoolConfig();

// your pool configurations.

JedisPool pool = new JedisPool(jedisPoolCfg, "localhost", 6379, 10000);

try (Jedis jedis = pool.getResource()) {
    jedis.set("key1", "1");
    System.out.println("Value for 'key1': " + jedis.get("key1"));
}

pool.destroy();
1
2
3
4
5
6
7
8
9
10
11
12

4.2.Python

要使用Redis的Python客户端接入Ignite,需要先配置并启动一个Ignite集群。

要接入使用6379端口的Ignite,以redis-py为例:

>>> import redis
>>> r = redis.StrictRedis(host='localhost', port=6379, db=0)
>>> r.set('k1', 1)
True
>>> r.get('k1')
'1'
1
2
3
4
5
6

4.3.PHP

要使用Redis的PHP客户端接入Ignite,需要先配置并启动一个Ignite集群。

要接入使用6379端口的Ignite,以predis为例:

// Load the library.
require 'predis/autoload.php';
Predis\Autoloader::register();

// Connect.
try {
    $redis = new Predis\Client();

    echo ">>> Successfully connected to Redis. \n";

    // Put entry to cache.
    if ($redis->set('k1', '1'))
        echo ">>> Successfully put entry in cache. \n";

    // Check entry value.
    echo(">>> Value for 'k1': " . $redis->get('k1') . "\n");
}
catch (Exception $e) {
    echo "Couldn't connected to Redis";
    echo $e->getMessage();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
最后更新时间:: 9/17/2019, 8:35:23 PM