3.7. 接近缓存
接近缓存是 Hot Rod 客户端的本地,并且最近使用的数据,因此每个读取操作都不需要遍历网络,这会显著提高性能。
接近缓存:
使用读取操作填充,调用
get ()
或getVersioned ()
方法。
在以下示例中,put ()
调用不会填充最接近的缓存,且仅在条目已存在时无效:cache.put("k1", "v1"); cache.get("k1");
-
在 Data Grid Server 上的远程缓存中更新或删除客户端监听程序时,注册客户端侦听器使其无效条目。
如果在无效后请求条目,客户端必须再次从远程缓存检索它们。 - 当客户端故障转移到不同的服务器时,将被清除。
绑定的接近缓存
您应该始终通过指定它们可以包含的最大条目数来使用绑定接近缓存。当接近缓存达到最大条目数时,驱除会自动进行,以删除旧的条目。这意味着您不需要手动在客户端 JVM 范围内保留缓存大小。
不要将最大闲置过期时间与接近缓存一起使用,因为 near-cache 读取不会传播条目的最后一次访问时间。
Bloom 过滤器
Bloom 过滤器通过减少无效消息总数来优化写操作的性能。
Bloom 过滤器:
- 驻留在 Data Grid 服务器上,并跟踪客户端请求的条目。
-
需要一个连接池配置,每个服务器最多有一个活动连接,并使用
WAIT
耗尽的操作。 - 无法与未绑定的缓存一起使用。
3.7.1. 配置 Near 缓存
使用接近缓存配置 Hot Rod Java 客户端,以在客户端 JVM 中存储最近使用的数据。
流程
- 打开 Hot Rod Java 客户端配置。
配置每个缓存以使用
nearCacheMode (NearCacheMode.INVALIDATED)
方法执行近缓存。注意Data Grid 提供全局近近的缓存配置属性。但是,这些属性已弃用,您不应该使用它们,而是针对每个缓存配置接近缓存。
-
使用
nearCacheMaxEntries ()
方法指定在发生驱除前可以保存的最大条目数。 -
使用
nearCacheUseBloomFilter ()
方法为近缓存启用 bloom 过滤器。
import org.infinispan.client.hotrod.configuration.ConfigurationBuilder; import org.infinispan.client.hotrod.configuration.NearCacheMode; import org.infinispan.client.hotrod.configuration.ExhaustedAction; ConfigurationBuilder builder = new ConfigurationBuilder(); builder.addServer() .host("127.0.0.1") .port(ConfigurationProperties.DEFAULT_HOTROD_PORT) .security().authentication() .username("username") .password("password") .realm("default") .saslMechanism("SCRAM-SHA-512") // Configure the connection pool for bloom filters. .connectionPool() .maxActive(1) .exhaustedAction(ExhaustedAction.WAIT); // Configure near caching for specific caches builder.remoteCache("books") .nearCacheMode(NearCacheMode.INVALIDATED) .nearCacheMaxEntries(100) .nearCacheUseBloomFilter(false); builder.remoteCache("authors") .nearCacheMode(NearCacheMode.INVALIDATED) .nearCacheMaxEntries(200) .nearCacheUseBloomFilter(true);