回覆列表
  • 1 # 使用者9797940390585

    因為還沒有寫入MySQL,所以你在把資料寫入Redis時,需要設計一個key來唯一標識一條資料.

    MySQL表中應該設定一個唯一欄位用於儲存這個key.

    這個key可以是一個由程式即時生成的隨機唯一值,比如可以取Linux提供的uuid:

    /proc/sys/kernel/random/uuid

    取到後用sadd新增到Redis的集合(元素唯一)裡.

    新增成功,表示集合中沒有這個uuid,在集合裡是唯一的.

    然後再把這個uuid用lpush新增到Redis的列表(元素有序)裡.

    lpush入隊後,當列表的長度大於等於N(自定義數值)時,Redis用lrange取出列表裡的元素並批次寫入到MySQL,寫入成功後用ltrim刪掉列表中已經處理的元素.

    最佳化就體現在:原來的即時寫入轉變為批次寫入.

    風險是:Redis意外崩潰有可能丟資料.

    比如你的Redis配置了 appendfsync everysec

    那就有丟失前1秒資料的風險.

  • 中秋節和大豐收的關聯?
  • 歌詞‘寶貝啊謝謝你,今生今世我愛上了你。是什麼歌曲?