已采納回答 / qq_飛飛起來_0
我來給你解釋:第一,通過jedis 儲存對象有大概三種,one:本課程的序列化成byte字節 ,最終存byte字節,two:對象轉hashmap,也就是你想表達的hash的形式,最終存map,three:對象轉json,最終存json,其實也就是字符串第二:其實如果你是平常的項目,并發不高,三個選擇都可以,反而你說的hash的形式更加靈活,可以對象的單個屬性,但是來了,秒殺的場景的情況下,三者的效率差別很大的第三:結果如下10w數據 ? ? ? ? ?時間 ? ?內存占用 ? ?存json ? ? ? ?...
2017-08-25
已采納回答 / kevinyangit
原來執行的流程update(發送在mysql網絡時間+gc時間) + insert(發送在mysql網絡時間+gc時間)因為update同一行會導致行級鎖,而insert是可以并行執行的。1.如果先update, update在前面會加鎖鎖 + update(發送在mysql網絡時間+gc時間) +?insert(發送在mysql網絡時間+gc時間) + 提交鎖其實的線程就要等,這個鎖提交才能執行。2.如果先insert,insert(發送在mysql網絡時間+gc時間) + ?鎖+ update(發送在...
2017-06-20
已采納回答 / 你莊哥哥
秒殺未開啟的時間能獲取到,秒殺未開啟的時候你是通過get直接去請求的嗎,你可以在post請求打個斷點,看看請求有沒有進入方法里,如果沒有就是你的url錯了,如果有就是你的邏輯錯了
2016-12-17
講師回答 / 益軍
秒殺場景主要兩個點:1:流控系統,防止后端過載或不必要流量進入,因為慕課要求課程的長度和簡單性,沒有加。2:減庫存競爭,減庫存的update必然涉及exclusive lock ,持有鎖的時間越短,并發性越高。CAS是否適用瞬時競爭?1:"select? version, left from table where pk= {pid}"不加 for update 并發得到共享version2: "update table set left = left - #{byCount} , version =? ...
2016-10-28
已采納回答 / 慕桂英3162731
我覺得,你提的問題是個BUG,不過在捕獲到update失敗后,我們可以再把插如的數據刪除,以此實現補救,并且這種情況應該發生的不多,對整體性能影響不大.
2016-10-09
已采納回答 / ~~$
Redis最為常用的數據類型主要有以下:String、Hash、List、Set、Sorted set、pub/sub、Transactions,所以你說的沒有問題,之所以存字節碼,是因為這里要的是一個對象,用字節碼更合適。
2016-08-15