第 1 章 配置缓存编码


了解如何使用不同的介质类型配置数据网格缓存,以及编码如何影响您可以使用 Data Grid 的方法。

1.1. 缓存编码

编码是由介质类型标识的格式,Data Grid 用来将条目(键/值对)存储在缓存中。

远程缓存

Data Grid Server 使用缓存配置中设置的编码将条目存储在远程缓存中。

热 Rod 和 REST 客户端包括一个媒体类型,以及他们向 Data Grid Server 发出的每个请求的媒体类型。为了处理具有不同介质类型的多个客户端,Data Grid Server 会将数据按需转换为缓存配置中设置的介质类型。

如果远程缓存没有任何编码配置,Data Grid 服务器将键和值存储为通用 字节[],而无需任何介质类型信息,这可能会导致在为客户端请求不同格式转换数据时导致意外结果。

使用 ProtoStream 编码

当客户端请求包含介质类型时,Data Grid Server 会返回一个错误,它无法转换为缓存配置中设置的介质类型。

如果要使用多个客户端,如 Data Grid Console 或 CLI、Hot Rod 或 REST,建议使用 application/x-protostream 介质类型配置缓存编码。ProtoStream 编码还允许您使用服务器端任务并在远程缓存上执行索引查询。

嵌入式缓存

默认情况下,Data Grid 将嵌入式缓存中的条目存储为 Plain Old Java 对象(POJO)。

对于集群嵌入的缓存,数据网格需要将所有 POJO 放入一个字节阵列,可在节点间复制,然后返回 POJO。这意味着,如果您没有配置另一个 marshaller,您必须确保 Data Grid 可以序列化带有 ProtoStream marshaller 的 POJO。

注意

如果您在嵌入式缓存中存储 mutable POJO,您应该始终使用新的 POJO 实例更新值。例如,如果您将 HashMap 存储为键/值对,则 Data Grid 集群的其他成员不会看到对映射的任何本地修改。另外,如果 Data Grid 分离了对象同时更新 Map 实例,则可能会出现 ConcurrentModificationException

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.