Redis Cluster安全的替換原有數據

1.使用背景

redis集羣,每一個key帶有一個副本,常常在更新數據時,程序出現卡頓。redis

2.緣由分析

1.單機Redis:全部的數據都保存在一個機器上,使用rename覆蓋原有值時不會影響。 2.集羣Redis:全部的數據分佈在多臺機器上(設置了副本),使用rename覆蓋原有值時,當原有值和新值不在一個機器上,涉及到不一樣服務器之間數據的拷貝,此時訪問數據可能會卡住。服務器

3.解決辦法

原先處理: 原先更新值處理 如上圖所示,處理流程爲新建一個key2,數據爲value2,咱們刪除key1和value1,而後重命名key2爲key1,數據爲value2。集羣

如今處理: 如今更新值處理 思路:咱們經過一箇中間key2來實現原有數據的更新。 更新數據:咱們新建一個key2,新數據爲value2,咱們把key1的value值設爲key2,value1設置一個過時時間。 查詢數據:咱們經過key1獲得值key2,經過key2獲取真實的數據value2。redis集羣

你們能夠關注個人公衆號:不知風在何處,相互溝通,共同進步。程序

相關文章
相關標籤/搜索