在一个springboot应用程序中,我从一个用 Caffeine
到 Redis
分布式缓存。
我看到了 Caffeine
我们可以设置最大条目数的缓存
Cache cache = new CaffeineCache(cacheName, Caffeine.newBuilder()
.recordStats()
.expireAfterWrite(expireIn, TimeUnit.SECONDS)
.maximumSize(maxSize)
.build());
在代码中可以实现同样的功能吗 Redis
? 我需要为不同的缓存名设置不同的值。
1条答案
按热度按时间gv8xihay1#
不,不可能有两个原因。
spring不支持为redis cache refer设置maxsize:
RedisCacheConfiguration
即使spring支持这一点,也很难跟踪活动的缓存条目。为了支持最大大小,我们需要关于当前未过期/未收回密钥的详细信息。找到这些需要扫描所有缓存密钥。一种简单的方法是跟踪另一个redis set数据结构中的所有缓存键。由于您现在有活动缓存密钥,我们需要应用一些后台策略来删除一个或多个密钥。删除这些密钥也不容易,您需要查看应该删除哪一个,fifo、lru还是?。
我建议您在
RedisCacheWriter
. 在这里添加/删除缓存时,可以更新缓存密钥。此外,您还需要运行一个后台作业,该作业将以一定的间隔运行,以限制活动缓存项。