H5W3
当前位置:H5W3 > 其他技术问题 > 正文

java操作redis将数据存入成功,返回失败,怎么保持数据一致性

java操作redis将数据存入成功,返回失败,比如说断网之类的,怎么保持数据一致性

回答:

有一种操作称为幂等的,即重复N次和只做1次的结果是一样的,这种操作当返回暂时异常(Transient Exception)如网络中断时,可以通过重试来解决。

通常读操作都是幂等的,但写操作就不一定了,如sethset是幂等的,但lpushadd就不是了。
非幂等的操作通常不能用去重试,而是用补偿来处理,比较复杂(大多数非关键应用,发现错误(反正有日志的嘛)可以手动或用工具修正数据,只有金融、电商等领域的关键应用才需要考虑补偿),这里就不展开了。

关于幂等和补偿的原理,不光是对缓存适用,对数据库和远程服务也是适用的。

回答:

redis 有两种持久化方式,一种是快照的形式,一种是Append-only, 其实不说你能想到,断网丢失数据是因为第一种,数据存储在内存中,但是效率高,如果追求数据的“完整性”,可以用第二种,你可以去搜索下相关的设置两种持久化方法和原理

本文地址:H5W3 » java操作redis将数据存入成功,返回失败,怎么保持数据一致性

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址