使用了express作為服務(wù)端框架,然后使用redis來存儲一些數(shù)據(jù)。發(fā)現(xiàn)一個問題,一直想不明白。比如 A 在 time 2:31:11:00 時發(fā)送ajax請求,該請求修改redis里某個數(shù)據(jù),B在time 2:31:11:02時發(fā)送ajax請求修改redis里的某個數(shù)據(jù)。于是服務(wù)器開始了如下操作2:31:11:00 POST updateData user = A;2:31:11:01 POST updateData user = B;2:31:11:01 服務(wù)器拉取redis里的某個集合 (A的請求);2:31:11:02 服務(wù)器拉取redis里的某個集合 (B的請求);2:31:11:02 服務(wù)器該集合里關(guān)于用戶A的數(shù)據(jù)被修改;2:31:11:03 服務(wù)器該集合里關(guān)于用戶B的數(shù)據(jù)被修改;2:31:11:03 服務(wù)器把修改過A的數(shù)據(jù)集合重新更新到redis上;2:31:11:04 服務(wù)器把修改過B的數(shù)據(jù)集合重新更新到redis上;這樣下來,不是redis上的數(shù)據(jù)變成只有B修改,A沒有修改嗎?nodejs是執(zhí)行代碼單線程,是不是說如果A.B一前一后請求,先處理完A的,再處理B的?
2 回答

躍然一笑
TA貢獻1826條經(jīng)驗 獲得超6個贊
又讀了一遍,我的理解有問題(當(dāng)成mongodb了),你的理解沒問題,可以大致當(dāng)成localStorage來理解(能存的東西花樣更多)
設(shè)計表就是設(shè)計key,表應(yīng)該設(shè)計成這樣
{ "room:1:seat1:ready":true, "room:1:seat1:userid":1, "room:1:seat2:ready":false, "room:1:seat2:userid":2, ... }
你看這里存儲seat1和seat2的準備狀態(tài)的key是不同的,所以不會沖突
- 2 回答
- 0 關(guān)注
- 1929 瀏覽
添加回答
舉報
0/150
提交
取消