java操作redis将数据存入成功,返回失败,比如说断网之类的,怎么保持数据一致性
redis 有两种持久化方式,一种是快照的形式,一种是Append-only, 其实不说你能想到,断网丢失数据是因为第一种,数据存储在内存中,但是效率高,如果追求数据的“完整性”,可以用第二种,你可以去搜索下相关的设置两种持久化方法和原理
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
有一种操作称为幂等的,即重复N次和只做1次的结果是一样的,这种操作当返回暂时异常(Transient Exception)如网络中断时,可以通过重试来解决。
通常读操作都是幂等的,但写操作就不一定了,如
set
、hset
是幂等的,但lpush
、add
就不是了。非幂等的操作通常不能用去重试,而是用补偿来处理,比较复杂(大多数非关键应用,发现错误(反正有日志的嘛)可以手动或用工具修正数据,只有金融、电商等领域的关键应用才需要考虑补偿),这里就不展开了。
关于幂等和补偿的原理,不光是对缓存适用,对数据库和远程服务也是适用的。