實習問題小總結

  • Redis以及servicestack.redis庫
    1. servicestack.redis 實現了分佈鎖,並不是在程序上實現。而是會在redis上加一個key值。例如:
      using (_redisClient.AcquireLock(“ss002”)){}
      當上鎖的時候,redis會把這個key寫入
      這裏寫圖片描述
      當解鎖的時候就會把這個key刪掉。
      這裏寫圖片描述
      所以此鎖應該足夠滿足併發的需要。
      注意:當在鎖的內部異常退出的時候,redis並不會把這個key刪除,這表示這個鎖會一直存在。
    2. servicestack.redis提供了很多方法。如:set < T > () T的類型不同,若輸入的是同個key值,redis也會對此覆蓋。
    3. servicestack.redis對多線程的問題。當多線程共用一客戶端會出現問題。某博主@zhang98722的評論: 這個東西本身有自己的線程安全不過它的線程安全是類似於java的ThreadLocal那種就是每一個線程你可以自己去獲取自己單獨用的redis客戶端但是不能幾個線程公用一個所以基本就只有兩種了:每個線程自己去獲取自己的redis客戶端如果公用一個客戶端自己手動加鎖。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章