摘要:使用背景集群,每個帶有一個副本,經常在更新數據時,程序出現卡頓。原因分析單機所有的數據都保存在一個機器上,使用覆蓋原有值時不會影響。現在處理思路我們通過一個中間來實現原有數據的更新。查詢數據我們通過得到值,通過獲取真實的數據。
1.使用背景
redis集群,每個key帶有一個副本,經常在更新數據時,程序出現卡頓。
2.原因分析1.單機Redis:所有的數據都保存在一個機器上,使用rename覆蓋原有值時不會影響。
2.集群Redis:所有的數據分布在多臺機器上(設置了副本),使用rename覆蓋原有值時,當原有值和新值不在一個機器上,涉及到不同服務器之間數據的拷貝,此時訪問數據可能會卡住。
原先處理:
如上圖所示,處理流程為新建一個key2,數據為value2,我們刪除key1和value1,然后重命名key2為key1,數據為value2。
現在處理:
思路:我們通過一個中間key2來實現原有數據的更新。
更新數據:我們新建一個key2,新數據為value2,我們把key1的value值設為key2,value1設置一個過期時間。
查詢數據:我們通過key1得到值key2,通過key2獲取真實的數據value2。
大家可以關注我的公眾號:不知風在何處,相互溝通,共同進步。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/67322.html
摘要:優點是反序列化時不需要提供類型信息,但缺點是序列化后的結果非常龐大,是格式的倍左右,這樣就會消耗服務器的大量內存。使用庫將對象序列化為字符串。優點是速度快,序列化后的字符串短小精悍。 需要的jar包:spring版本:4.3.6.RELEASE,jedis版本:2.9.0,spring-data-redis:1.8.0.RELEASE;如果使用jackson序列化的話還額外需要:jac...
摘要:重新分片,把要刪除的主節點的數據槽移動到其他主節點上,以免數據丟失。分區完成當前主節點已經沒有數據槽了。這樣就可以實現橫向動態擴容,新增加的主從節點,用于存儲新的數據則可,對以前的節點的數據不會有任何影響。 需求: A redis cluster 集群 40 臺集群擴容到 68 臺也就是 增加 28 臺新的機器 : 一主一從 為一組,一共12組 前期準備 掃描新增擴容服務器ip是...
閱讀 3700·2021-09-07 10:19
閱讀 3641·2021-09-03 10:42
閱讀 3593·2021-09-03 10:28
閱讀 2560·2019-08-29 14:11
閱讀 820·2019-08-29 13:54
閱讀 1606·2019-08-29 12:14
閱讀 428·2019-08-26 12:12
閱讀 3626·2019-08-26 10:45