# 平台和协议

# 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

安全 通过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]

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

 http://[host]:[port]/ignite?cmd=version&user=[user]&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]替换为实际值。

注意如果服务端开启了认证,那么用户的凭据或者令牌就是必须的,如果不提供会出错:{"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

对应的get命令为:

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

# 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

请求参数

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

请求参数

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

返回值示例

{
  "error": "",
  "response": "1.0.0",
  "successStatus": 0
}
名称 类型 描述 示例
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

请求参数

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

# 2.3.5.incr

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

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
}
名称 类型 描述 示例
response long 操作之后的值 42

# 2.3.6.cache

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

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

# 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

请求参数

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

请求参数

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

# 2.3.9.append

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

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

# 2.3.10.rep

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

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

返回值示例

{
  "affinityNodeId": "1bcbac4b-3517-43ee-98d0-874b103ecf30",
  "error": "",
  "response": true,
  "successStatus": 0
}
名称 类型 描述 示例
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

请求参数

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

# 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

请求参数

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

# 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

请求参数

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

# 2.3.14.rmvval

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

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

# 2.3.15.rmv

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

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

# 2.3.16.getrmv

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

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

请求参数

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

# 2.3.17.add

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

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

# 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

请求参数

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

# 2.3.19.put

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

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

# 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

请求参数

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

# 2.3.21.get

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

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

也可以获取通过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

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

请求参数

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

# 2.3.22.conkey

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

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

# 2.3.23.conkeys

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

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

# 2.3.24.getput

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

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

# 2.3.25.putifabs

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

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 true

# 2.3.26.getputifabs

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

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"}

# 2.3.27.size

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

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

请求参数

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

返回值示例

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

# 2.3.28.getorcreate

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

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

请求参数

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

返回值示例

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

# 2.3.29.destcache

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

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

请求参数

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

返回值示例

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

# 2.3.30.node

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

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

返回值示例

{
  "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
}
名称 类型 描述 示例
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

请求参数

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

请求参数

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

请求参数

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

返回值示例

{
  "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
}
名称 类型 描述 示例
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

请求参数

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

请求参数

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

请求参数

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

返回值示例

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

# 2.3.38.metadata

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

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
}
名称 类型 描述 示例
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命令在缓存中执行SQL扫描查询。 URL:

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

请求参数

名称 类型 可选 描述 示例
cmd string qryscanexe,小写
pageSize number 查询的每页大小 3
cacheName string 缓存名称,如果未提供,会使用默认的缓存 testCache
className string 扫描查询的类名 org.apache.ignite.schema.Person

返回值示例

{
  "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
}
名称 类型 描述 示例
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.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>

# 3.Memcached

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

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

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

  • PHP
  • Java
  • Python
  • Ruby

# 3.1.PHP

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

  • 启动配置有缓存的Ignite,比如:
bin/ignite.sh examples/config/example-cache.xml
  • 通过二进制协议用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");

# 3.2.Java

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

  • 启动配置有缓存的Ignite,比如:
bin/ignite.sh examples/config/example-cache.xml
  • 通过二进制协议用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"));

# 3.3.Python

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

  • 启动配置有缓存的Ignite,比如:
bin/ignite.sh examples/config/example-cache.xml
  • 通过二进制协议用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")

# 3.4.Ruby

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

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

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

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

client.set('key', 'value')

value = client.get('key')

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

配置默认缓存 需要配置一个默认的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();

# 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'

# 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/12/2022, 4:58:07 PM