3.3. 从 Data Grid 控制台和 CLI 查询缓存


Data Grid Console 和 Data Grid Command Line Interface (CLI)可让您查询索引和非索引的远程缓存。您还可以使用任何 HTTP 客户端通过 REST API 索引和查询缓存。

此流程解释了如何索引和查询存储 Person 实例的远程缓存。

先决条件

  • 至少有一个正在运行的 Data Grid 服务器实例。
  • 具有具有创建权限的 Data Grid 凭据。

流程

  1. 在 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
  2. 创建名为 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
  3. 向缓存中添加条目。

    要查询远程缓存,需要包含一些数据。在本例中,创建使用以下 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

  4. 查询您的远程缓存。

    在 CLI 中,使用远程缓存上下文中的 query 命令。

    query "from org.infinispan.example.Person p WHERE p.name='Person' ORDER BY p.age ASC"

    查询返回所有名称与 Person by age 匹配的条目(以升序表示)。

其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.