Heim > Fragen und Antworten > Hauptteil
redis是基于内存的,所以存在当程序挂掉数据丢失的可能。我目前想到的备份方案是,做一个主从,从库做定时dump。
但是dump是不是实时的,而是隔一段时间做一次,所以这期间还是有丢失数据的可能。是否有方案能实时备份redis的数据,让redis出了问题以后快速恢复。
大家讲道理2017-04-21 11:19:01
丢数据的问题,可以通过redis的主从复制解决问题。但是,我觉得可以想办法降低数据丢失的风险程度和波及范围。抢票属于典型的高并发场景,可以考虑只把车票的库存信息放在内存中,其他的信息通过更为可靠的数据库来保存。
具体的解决方案:
1、redis启用主从复制,对外提读供服务可以用两台以上的从解决单点问题和负载均衡;
2、至于挂掉的数据恢复方案,可以出队操作记录日志,服务挂掉的话,重启之后通过日志快速恢复库存;
3、降低数据丢失风险的方案。比如使用redis的queue数据结构,来保存车票库存,出队成功就算抢到票,然后保存抢票关系到数据库,然后下单&付款;
4、实际使用经验redis挂掉的概率不大,不过挂掉恢复数据确实麻烦。所以最好看使用场景吧,如果非常重要的数据,建议尽量避免放在内存数据库,最好还是数据落地为好。