redis.cache的DefaultRedisCacheWriter的疑问

spring的DefaultRedisCacheWriter中设计了加锁的功能,putIfAbsentput、clean两个方法里有加锁的步骤,然后在put、putIfAbsent、remove、clean方法中会判断能否获取锁,获取不到进入自旋(自旋间隔时间为sleepTime)
image.png

请问为什么要这么设计呢,这样实现导致的结果就是写入或者删除时的所有操作都会变成串行执行。

类注释有提到locking模式,但不是很明白,原文翻译为:

DefaultRedisCacheWriter 可用于锁定或非锁定模式。虽然非锁定旨在实现最大性能,但它可能会导致跨多个 Redis 交互(如 putIfAbsent)的操作重叠、非原子的命令执行。锁定对应方通过设置显式锁定键并检查该键的存在来防止命令重叠,这会导致额外的请求和潜在的命令等待时间。

操作命令重叠是指什么呢,求大佬解答一下,谢谢

阅读 1.7k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题