素材牛VIP会员
java操作redis将数据存入成功,返回失败,怎么保持数据一致性
 36***2q  分类:Java代码  人气:1023  回帖:2  发布于6年前 收藏

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

讨论这个帖子(2)垃圾回帖将一律封号处理……

Lv1 新人
Sm***ty CEO 6年前#1

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

Lv5 码农
青***1 JAVA开发工程师 6年前#2

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

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

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

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取