有一种操作称为幂等的,即重复N次和只做1次的结果是一样的,这种操作当返回暂时异常(Transient Exception)如网络中断时,可以通过重试来解决。
通常读操作都是幂等的,但写操作就不一定了,如set
、hset
是幂等的,但lpush
、add
就不是了。
非幂等的操作通常不能用去重试,而是用补偿来处理,比较复杂(大多数非关键应用,发现错误(反正有日志的嘛)可以手动或用工具修正数据,只有金融、电商等领域的关键应用才需要考虑补偿),这里就不展开了。
关于幂等和补偿的原理,不光是对缓存适用,对数据库和远程服务也是适用的。