亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

nodejs 環境下 redis如何保證異步set數據,數據不會被覆蓋?

nodejs 環境下 redis如何保證異步set數據,數據不會被覆蓋?

犯罪嫌疑人X 2019-03-04 22:15:16
使用了express作為服務端框架,然后使用redis來存儲一些數據。發現一個問題,一直想不明白。比如 A 在 time 2:31:11:00 時發送ajax請求,該請求修改redis里某個數據,B在time 2:31:11:02時發送ajax請求修改redis里的某個數據。于是服務器開始了如下操作2:31:11:00 POST updateData user = A;2:31:11:01 POST updateData user = B;2:31:11:01 服務器拉取redis里的某個集合 (A的請求);2:31:11:02 服務器拉取redis里的某個集合 (B的請求);2:31:11:02 服務器該集合里關于用戶A的數據被修改;2:31:11:03 服務器該集合里關于用戶B的數據被修改;2:31:11:03 服務器把修改過A的數據集合重新更新到redis上;2:31:11:04 服務器把修改過B的數據集合重新更新到redis上;這樣下來,不是redis上的數據變成只有B修改,A沒有修改嗎?nodejs是執行代碼單線程,是不是說如果A.B一前一后請求,先處理完A的,再處理B的?
查看完整描述

2 回答

?
躍然一笑

TA貢獻1826條經驗 獲得超6個贊

又讀了一遍,我的理解有問題(當成mongodb了),你的理解沒問題,可以大致當成localStorage來理解(能存的東西花樣更多)
設計表就是設計key,表應該設計成這樣

{    "room:1:seat1:ready":true,    "room:1:seat1:userid":1,    "room:1:seat2:ready":false,    "room:1:seat2:userid":2,
    ...
}

你看這里存儲seat1和seat2的準備狀態的key是不同的,所以不會沖突


查看完整回答
反對 回復 2019-03-04
  • 2 回答
  • 0 關注
  • 1931 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號