redis是基于内存的,所以存在当程序挂掉数据丢失的可能。我目前想到的备份方案是,做一个主从,从库做定时dump。
但是dump是不是实时的,而是隔一段时间做一次,所以这期间还是有丢失数据的可能。是否有方案能实时备份redis的数据,让redis出了问题以后快速恢复。
大家讲道理2017-04-21 11:19:01
丟資料的問題,可以透過redis的主從複製解決問題。但是,我覺得可以想辦法降低資料遺失的風險程度和波及範圍。搶票屬於典型的高並發場景,可以考慮只把車票的庫存資訊放在記憶體中,其他的資訊透過更可靠的資料庫來保存。
具體的解決方案:
1、redis啟用主從複製,對外提讀供服務可以用兩台以上的從解決單點問題和負載平衡;
2、至於掛掉的資料復原方案,可以出隊操作記錄日誌,服務掛掉的話,重啟之後透過日誌快速恢復庫存;
3.降低資料遺失風險的方案。例如使用redis的queue資料結構,來保存車票庫存,出隊成功就算搶到票,然後保存搶票關係到資料庫,然後下單&付款;
4.實際使用經驗redis掛掉的機率不大,不過掛掉恢復資料確實很麻煩。所以最好看使用場景吧,如果非常重要的數據,建議盡量避免放在記憶體資料庫,最好還是數據落地為好。