如何在spring boot应用程序的redis缓存管理器中设置不同缓存的最大条目数?

lyr7nygr  于 2021-06-09  发布在  Redis
关注(0)|答案(1)|浏览(463)

在一个springboot应用程序中,我从一个用 CaffeineRedis 分布式缓存。
我看到了 Caffeine 我们可以设置最大条目数的缓存

Cache cache = new CaffeineCache(cacheName, Caffeine.newBuilder()
                .recordStats()
                .expireAfterWrite(expireIn, TimeUnit.SECONDS)
                .maximumSize(maxSize)
                .build());

在代码中可以实现同样的功能吗 Redis ? 我需要为不同的缓存名设置不同的值。

gv8xihay

gv8xihay1#

不,不可能有两个原因。
spring不支持为redis cache refer设置maxsize: RedisCacheConfiguration 即使spring支持这一点,也很难跟踪活动的缓存条目。
为了支持最大大小,我们需要关于当前未过期/未收回密钥的详细信息。找到这些需要扫描所有缓存密钥。一种简单的方法是跟踪另一个redis set数据结构中的所有缓存键。由于您现在有活动缓存密钥,我们需要应用一些后台策略来删除一个或多个密钥。删除这些密钥也不容易,您需要查看应该删除哪一个,fifo、lru还是?。
我建议您在 RedisCacheWriter . 在这里添加/删除缓存时,可以更新缓存密钥。此外,您还需要运行一个后台作业,该作业将以一定的间隔运行,以限制活动缓存项。

相关问题