15.4.3.2. 指定缓存配置
以大写字母(所有大写)中的环境变量的前缀指定缓存名称,否则配置不会生效。
例如,您创建两个单独的缓存实例: MyCache
和 MYCACHE
。然后,您将 MyCache_CACHE_TYPE=replicated
设置为配置 MyCache
实例。这个配置不会生效。但是,如果您设置了 MYCACHE_CACHE_TYPE=replicated
,则配置对 MyCache
和 MYCACHE
实例都生效。
${CACHE_NAME}_CACHE_TYPE
-
决定此缓存应该是分布式还是复制。您可以指定
分布式
(默认)或复制
。 ${CACHE_NAME}_CACHE_START
配置缓存的启动方式。指定以下之一:
-
在服务或部署请求时,
LAZY
启动缓存。这是默认值。 -
EAGER
在服务器启动时启动缓存。
-
在服务或部署请求时,
${CACHE_NAME}_CACHE_BATCHING
-
启用这个缓存的调用批处理。值为
true
或false
(默认)。 ${CACHE_NAME}_CACHE_STATISTICS
-
配置缓存以收集统计信息。值为
true
(默认)或false
。您可以将值设为false
以提高性能。 ${CACHE_NAME}_CACHE_MODE
设置集群缓存模式。指定以下之一:
-
用于异步操作的
ASYNC
。 -
用于同步操作的
SYNC
。
-
用于异步操作的
${CACHE_NAME}_CACHE_QUEUE_SIZE
-
设置当缓存为
ASYNC
模式时清空复制队列的阈值。默认值为0(
禁用lushing)。 ${CACHE_NAME}_CACHE_QUEUE_FLUSH_INTERVAL
-
指定在
ASYNC
模式中清除复制队列的线程的 wakeup 时间(以毫秒为单位)。默认值为10
。 ${CACHE_NAME}_CACHE_REMOTE_TIMEOUT
-
以毫秒为单位指定超时,以便在在
SYNC
模式中进行远程调用时等待确认。如果达到超时,则远程调用将中止并抛出异常。默认值为17500
。 ${CACHE_NAME}_CACHE_OWNERS
-
指定每个缓存条目的集群范围副本数。默认值为
2
。 ${CACHE_NAME}_CACHE_SEGMENTS
-
指定每个集群的哈希空间片段数量。建议的值是
10 * 集群大小
。默认值为80
。 ${CACHE_NAME}_CACHE_L1_LIFESPAN
-
指定 L1 缓存中的最大生命周期span(以毫秒为单位)。默认值为
0(
禁用L1)。 ${CACHE_NAME}_CACHE_MEMORY_EVICTION_TYPE
定义缓存中的条目的最大限值。您可以设置以下值:
-
COUNT
测量缓存中的条目数量。当计数超过最大值时,Data Grid 会驱除未使用的条目。 -
MEMORY
测量缓存中所有条目的内存量。当内存量超过最大值时,Data Grid 会驱除未使用的条目。
-
${CACHE_NAME}_CACHE_MEMORY_STORAGE_TYPE
定义数据网格如何在缓存中存储条目。您可以设置以下值:
存储类型 描述 驱除类型 策略 对象
将条目作为对象存储在 Java 堆中。这是默认的存储类型。
数量
TinyLFU
二进制(二进制)
将条目作为
bytes[]
存储在 Java 堆中。COUNT
或MEMORY
TinyLFU
off-heap
将条目作为
bytes[]
存储在 Java 之外的原生内存中。COUNT
或MEMORY
LRU
${CACHE_NAME}_CACHE_MEMORY_EVICTION_SIZE
配置驱除启动前缓存的大小。将值设置为大于零的数字。
-
对于
COUNT
,大小是缓存在驱除开始前可以容纳的最大条目数。 对于
MEMORY
,其大小是缓存在驱除启动前可以从内存中获取的最大字节数。例如,值设为10000000000
为 10 GB。尝试不同的缓存大小以确定最佳设置。缓存大小过大可能会导致 Data Grid 耗尽内存。同时,缓存大小太小了可用内存。
注意如果您配置 JDBC 存储,当您将驱除大小设置为大于零的值时,会自动启用 passivation。
-
对于
${CACHE_NAME}_CACHE_MEMORY_EVICTION_STRATEGY
控制数据网格执行驱除的方式。您可以设置以下值:
策略 描述 NONE
数据网格不会驱除条目。这是默认设置,除非您配置驱除。
删除
数据网格从内存中删除条目,以便缓存不会超过配置的大小。这是配置驱除时的默认设置。
手动
数据网格不执行驱除。通过从
Cache
API 调用evict()
方法手动进行驱除。例外
如果这样做超过配置的大小,则 data Grid 不会将新条目写入缓存中。Data Grid 丢弃了
ContainerFullException
,而不是向缓存写入新条目。${CACHE_NAME}_CACHE_MEMORY_OFF_HEAP_ADDRESS_COUNT
指定哈希映射中可用的指针数量,以防止在使用
OFFHEAP
存储时发生冲突。防止哈希映射中的冲突提高了性能。将值设为大于缓存条目数的数字。默认情况下,
address-count
为 2^20,或 1048576。参数始终向上取为 2 的电源。
${CACHE_NAME}_CACHE_EXPIRATION_LIFESPAN
-
指定条目在集群范围过期后的最大生命周期span(以毫秒为单位)。默认值为
-1(
条目永不过期)。 ${CACHE_NAME}_CACHE_EXPIRATION_MAX_IDLE
-
指定缓存条目在缓存中维护的最大空闲时间(以毫秒为单位)。如果超过空闲时间,则条目会在整个集群到期。默认值为
-1(
禁用过期)。 ${CACHE_NAME}_CACHE_EXPIRATION_INTERVAL
-
指定间隔(以毫秒为单位),以毫秒为单位,从内存和任何缓存存储中清除过期的条目。默认值为
5000
。设置-1
可禁用过期。 ${CACHE_NAME}_JDBC_STORE_TYPE
设置要配置的 JDBC 存储的类型。您可以设置以下值:
-
字符串
-
二进制(二进制)
-
${CACHE_NAME}_JDBC_STORE_DATASOURCE
定义数据源的 jndiname。
例如:
MYCACHE_ JDBC_STORE_DATASOURCE=java:jboss/datasources/ExampleDS
${CACHE_NAME}_KEYED_TABLE_PREFIX
-
定义在生成缓存条目表名称时使用的缓存名称前的前缀。defaule 值为
ispn_entry
。 ${CACHE_NAME}_CACHE_INDEX
设置缓存的索引模式。您可以设置以下值:
-
NONE
这是默认值。 -
本地
-
ALL
-
${CACHE_NAME}_INDEXING_PROPERTIES
指定要传递给索引系统的属性列表。
例如:
MYCACHE_INDEXING_PROPERTIES=default.directory_provider=ram
${CACHE_NAME}_CACHE_SECURITY_AUTHORIZATION_ENABLED
-
为此缓存启用授权检查。值为
true
或false
(默认)。 ${CACHE_NAME}_CACHE_SECURITY_AUTHORIZATION_ROLES
设置访问此缓存所需的角色。
例如:
MYCACHE_CACHE_SECURITY_AUTHORIZATION_ROLES=admin, reader, writer
${CACHE_NAME}_CACHE_PARTITION_HANDLING_WHEN_SPLIT
配置策略,以便在网络事件相互隔离节点时处理集群中节点间分区的策略。分区作为独立集群运行,直到 Data Grid 合并缓存条目以调整单个集群。您可以设置以下值:
分区处理策略 描述 ALLOW_READ_WRITES
来自任何分区的节点都可以读取或写入缓存条目。这是默认值。
DENY_READ_WRITES
如果出现以下情况,节点进入 degraded 模式:
* 分区中的一个或者多个散列空间片段没有所有者。所有者是缓存条目的集群范围副本数。
* 分区从最新的稳定集群拓扑中少于一半的节点。
在降级模式中,只有同一分区中的节点才能读取或写入缓存条目。缓存条目的所有所有者或副本必须存在于同一分区中,否则,读写操作将失败,并显示
AvailabilityException
。ALLOW_READS
节点与
DENY_READ_WRITES
策略类似。来自任何分区的节点都可以读取缓存条目。在降级模式中,只有同一分区中的节点才能写入缓存条目。缓存条目的所有所有者或副本必须存在于同一分区中,否则写入操作会失败并显示
AvailabilityException
。${CACHE_NAME}_CACHE_PARTITION_MERGE_POLICY
配置 Data Grid 如何在合并分区时解析缓存条目间的冲突。您可以设置以下值:
合并策略 描述 NONE
合并分区时不会解决冲突。这是默认值。
PREFERRED_ALWAYS
始终使用
preferredEntry
。preferredEntry
是缓存条目的主副本,它位于包含最多节点的分区中。如果节点数量相等,则preferredEntry
是分区中带有最高拓扑 ID 的缓存条目,这意味着拓扑更为近期。PREFERRED_NON_NULL
如果值为(non-null),请使用
preferredEntry
。如果preferredEntry
没有值,请使用otherEntries
中定义的第一个条目。REMOVE_ALL
如果存在冲突,从缓存中删除条目(键和值)。
${CACHE_NAME}_STATE_TRANSFER_TIMEOUT
设置时间(以毫秒为单位),以等待集群中其他缓存实例将状态转移到缓存。如果其他缓存实例在超时发生前没有传输状态,应用程序会抛出异常并中止启动。默认值为
240000
(4 分钟)。您必须使用自定义模板来设置此环境变量。如果您在 OpenShift 模板的默认 Data Grid 中设置状态传输超时,则不会生效。