当我使用springboot时,我使用redis作为缓存服务器。但是我读了spring-data-redis源代码,当驱逐缓存时,代码是
byte[][] keys = Optional.ofNullable(connection.keys(pattern)).orElse(Collections.emptySet())
.toArray(new byte[0][]);Redis建议将key命令替换为scan命令。为什么spring团队不这样做。
发布于 2021-09-20 22:16:03
此功能在当前发布的版本(2.5.5)中不可用,更有可能会包含在下一个版本(2.6.*)中
缓存实现默认使用键和DEL来清除缓存。键可能会导致大型键空间的性能问题。因此,可以使用BatchStrategy创建默认的RedisCacheWriter,以切换到基于扫描的批处理策略。扫描策略需要一个批量大小,以避免过多的Redis命令往返:
RedisCacheManager cm = RedisCacheManager.build(RedisCacheWriter.nonLockingRedisCacheWriter(
connectionFactory,
BatchStrategies.scan(1000))
).cacheDefaults(defaultCacheConfig())备注:密钥批量策略完全支持任意驱动和Redis操作模式(单机、集群)。使用Lettuce驱动程序时,完全支持扫描。Jedis仅在非集群模式下支持扫描。
https://stackoverflow.com/questions/62340863
复制相似问题