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掛掉的機率不大,不過掛掉恢復資料確實很麻煩。所以最好看使用場景吧,如果非常重要的數據,建議盡量避免放在記憶體資料庫,最好還是數據落地為好。