使用JCache配置API限制缓存大小

abh*_*tab 3 java caching jcache spring-cache

我正在使用JCache API在应用程序中配置缓存,该应用程序在Ehcache 3中使用弹簧缓存。

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

如何将缓存大小限制为50个条目?通过Ehcache XML配置很容易做到这一点,但是如果有一种使用JCache config API进行控制的方法,我宁愿使用它。

cru*_*tex 5

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

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

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

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

对于非平凡的应用程序,您不想在代码中编写大小。大小是配置,应该分开管理。外部配置也不在标准范围内。有很多意见,没有标准的配置方法。