8

我正在使用 JCache API 在我的应用程序中配置缓存,该应用程序使用带有 Ehcache 3 的 spring 缓存。

cacheManager.createCache("users", new MutableConfiguration<String, User>()
                    .setStoreByValue(false)
                    .setManagementEnabled(true)
                    .setStatisticsEnabled(true)
                    .setExpiryPolicyFactory(CreatedExpiryPolicy.factoryOf(Duration.TEN_MINUTES)));

如何将缓存大小限制为 50 个条目?通过 Ehcache XML 配置很容易做到这一点,但如果有办法使用 JCache 配置 API 来控制它,我更愿意使用它。

4

1 回答 1

10

不幸的是,限制大小超出了标准的范围。为此,您始终需要特定于供应商的配置。

我自己对此并不满意,并且有一些我想在程序内部使用标准 API 设置大小限制的用例。但是,也有正当理由将其排除在标准之外:

大小限制是什么意思?缓存需要遵循的确切语义是什么?可以为所有缓存定义有用的语义吗?例如,对于分布式缓存,很难确定缓存中的条目数。

有不同的概念来限制缓存大小。一些缓存允许设置字节大小限制。

对于非平凡的应用程序,您不想在代码中编写大小。大小是配置,应该是独立且易于管理的地方。外部配置也在标准范围之外。众说纷纭,没有标准的配置方式。

于 2016-05-18T06:37:01.293 回答