首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在缓存驱逐时Spring-data-redis使用key命令

为什么在缓存驱逐时Spring-data-redis使用key命令
EN

Stack Overflow用户
提问于 2020-06-12 16:54:45
回答 1查看 263关注 0票数 4

当我使用springboot时,我使用redis作为缓存服务器。但是我读了spring-data-redis源代码,当驱逐缓存时,代码是

代码语言:javascript
复制
byte[][] keys = Optional.ofNullable(connection.keys(pattern)).orElse(Collections.emptySet())
                    .toArray(new byte[0][]);

Redis建议将key命令替换为scan命令。为什么spring团队不这样做。

EN

回答 1

Stack Overflow用户

发布于 2021-09-20 22:16:03

此功能在当前发布的版本(2.5.5)中不可用,更有可能会包含在下一个版本(2.6.*)中

缓存实现默认使用键和DEL来清除缓存。键可能会导致大型键空间的性能问题。因此,可以使用BatchStrategy创建默认的RedisCacheWriter,以切换到基于扫描的批处理策略。扫描策略需要一个批量大小,以避免过多的Redis命令往返:

代码语言:javascript
复制
RedisCacheManager cm = RedisCacheManager.build(RedisCacheWriter.nonLockingRedisCacheWriter(
  connectionFactory, 
  BatchStrategies.scan(1000))
).cacheDefaults(defaultCacheConfig())

备注:密钥批量策略完全支持任意驱动和Redis操作模式(单机、集群)。使用Lettuce驱动程序时,完全支持扫描。Jedis仅在非集群模式下支持扫描。

https://github.com/spring-projects/spring-data-redis/blob/main/src/main/asciidoc/reference/redis-cache.adoc

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62340863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档