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