spring的DefaultRedisCacheWriter中设计了加锁的功能,putIfAbsentput、clean两个方法里有加锁的步骤,然后在put、putIfAbsent、remove、clean方法中会判断能否获取锁,获取不到进入自旋(自旋间隔时间为sleepTime)
请问为什么要这么设计呢,这样实现导致的结果就是写入或者删除时的所有操作都会变成串行执行。
类注释有提到locking模式,但不是很明白,原文翻译为:
DefaultRedisCacheWriter 可用于锁定或非锁定模式。虽然非锁定旨在实现最大性能,但它可能会导致跨多个 Redis 交互(如 putIfAbsent)的操作重叠、非原子的命令执行。锁定对应方通过设置显式锁定键并检查该键的存在来防止命令重叠,这会导致额外的请求和潜在的命令等待时间。
操作命令重叠是指什么呢,求大佬解答一下,谢谢