3.3. 从 Data Grid 控制台和 CLI 查询缓存
Data Grid Console 和 Data Grid Command Line Interface (CLI)可让您查询索引和非索引的远程缓存。您还可以使用任何 HTTP 客户端通过 REST API 索引和查询缓存。
此流程解释了如何索引和查询存储 Person
实例的远程缓存。
先决条件
- 至少有一个正在运行的 Data Grid 服务器实例。
- 具有具有创建权限的 Data Grid 凭据。
流程
在 Protobuf 模式中添加索引注解,如下例所示:
package org.infinispan.example; /* @Indexed */ message Person { /* @Basic */ optional int32 id = 1; /* @Keyword(projectable = true) */ required string name = 2; /* @Keyword(projectable = true) */ required string surname = 3; /* @Basic(projectable = true, sortable = true) */ optional int32 age = 6; }
在 Data Grid CLI 中,使用带有
--upload=
参数的schema
命令,如下所示:schema --upload=person.proto person.proto
创建名为 people 的缓存,它使用 ProtoStream 编码并将 Data Grid 配置为索引您的 Protobuf 模式中声明的实体。
以下缓存索引上一步中的
Person
实体:<distributed-cache name="people"> <encoding media-type="application/x-protostream"/> <indexing> <indexed-entities> <indexed-entity>org.infinispan.example.Person</indexed-entity> </indexed-entities> </indexing> </distributed-cache>
在 CLI 中,使用带有
--file=
参数的create cache
命令,如下所示:create cache --file=people.xml people
向缓存中添加条目。
要查询远程缓存,需要包含一些数据。在本例中,创建使用以下 JSON 值的条目:
PersonOne
{ "_type":"org.infinispan.example.Person", "id":1, "name":"Person", "surname":"One", "age":44 }
PersonTwo
{ "_type":"org.infinispan.example.Person", "id":2, "name":"Person", "surname":"Two", "age":27 }
PersonThree
{ "_type":"org.infinispan.example.Person", "id":3, "name":"Person", "surname":"Three", "age":35 }
在 CLI 中,使用带有
--file=
参数的put
命令来添加每个条目,如下所示:put --encoding=application/json --file=personone.json personone
提示在 Data Grid Console 中,当使用自定义类型添加 JSON 格式的值时,您必须为 Value 内容类型 字段选择 Custom Type。
查询您的远程缓存。
在 CLI 中,使用远程缓存上下文中的
query
命令。query "from org.infinispan.example.Person p WHERE p.name='Person' ORDER BY p.age ASC"
查询返回所有名称与
Person
by age 匹配的条目(以升序表示)。
其他资源