hon*_*wei 5 redis spring-data-redis spring-boot
当我使用springboot时,我使用redis作为我的缓存服务器。但是我读了 spring-data-redis 源代码,当逐出缓存时,代码是
byte[][] keys = Optional.ofNullable(connection.keys(pattern)).orElse(Collections.emptySet())
                    .toArray(new byte[0][]);
Redis 建议将keys 命令替换为scan 命令。为什么Spring团队不这样做呢?
此功能在当前发布的版本 ( 2.5.5 ) 中不可用,很可能会包含在下一版本 ( 2.6.* )中
缓存实现默认使用KEYS和DEL来清除缓存。KEYS 可能会导致较大密钥空间的性能问题。因此,可以使用 BatchStrategy 创建默认的 RedisCacheWriter 以切换到基于 SCAN 的批处理策略。SCAN 策略需要批量大小以避免过多的 Redis 命令往返:
RedisCacheManager cm = RedisCacheManager.build(RedisCacheWriter.nonLockingRedisCacheWriter(
  connectionFactory, 
  BatchStrategies.scan(1000))
).cacheDefaults(defaultCacheConfig())
注意:使用任何驱动程序和 Redis 操作模式(独立、集群)完全支持 KEYS 批处理策略。使用 Lettuce 驱动程序时完全支持 SCAN。Jedis仅在非集群模式下支持SCAN。
| 归档时间: | 
 | 
| 查看次数: | 1250 次 | 
| 最近记录: |