JAVA實現分布式快取

2021-09-06 08:32:25 字數 2300 閱讀 9692

1概述

通常情況下我們執行程式的過程中會產生一些中間資料,這些中間資料需要在將來的某個時間讀取。這就要求我們要把它存在乙個提供高速訪問的地方,最好的選擇就是記憶體中。基於這個以及多個原因需要我們把這部分儲存到其他機器上,這樣就產生了分布式快取的問題。

實際上分布式快取根本上就是提供乙個附加記憶體讓另一台機器幫忙儲存和查詢資料。

2實現方法

首先建立乙個集合物件,該集合物件應保證執行緒安全。**如下所示

code

1 public static class memobject

2     

7 8         public static dictionaryget()

9         

14 15         public static void add(string key, object obj)

16         

21 22         public static void remove(string key)

23         

26 27         public static int count()

28         

31 32         public static object get(string key)

33         

39 40         public static bool exits(string key)

41         

44 45         private static dictionarymemobjl;

46     }

接著我們把它包裝起來可以通過遠端呼叫,**如下

code

1 public class datacatcher : marshalbyrefobject, icarrier.icarrier

2     

10 11         public bool exits(string key)

12         

15 16         public void remove(string key)

17         

20 21         public int count()

22         

25 26         public object get(string key)

27         

30     }

為了避免我們的業務邏輯洩露我們向客戶端提供介面以便呼叫

code

1     public inte***ce icarrier

2     

好了。這樣我們服務端的**就算搞定了。

下面我們來發布服務供客戶端呼叫

code

1 public partial class sharpcatchedservice : servicebase

2     

7 8         protected override void onstart(string args)

9         

15 16         protected override void onstop()

17         

19     }

這樣客戶端就可以通過這個介面來實現遠端資料的訪問

在客戶端首先我們獲取遠端的物件

code

public static icarrier carrier()

接著我們包裝一下

code

1 public class sharpcatchedapi

2     

9 10         public void set(string key, object value)

11         

14 15         public void remove(string key)

16         

19 20         public object get(string key)

21         

24 25         public bool exits(string key)

26         

29     }

3後續以上實現的是最基本的分布式快取解決方案。其實我們可以把這個集合轉化為其他集合物件,例如hashtable。在物件啟動的時候開啟乙個守護執行緒,這個程序做得工作就是把到期的快取物件追加到乙個集合物件中,然後遍歷該物件實現快取物件的銷毀。我們還可以把物件進行一次雜湊讓對像在多台快取伺服器上儲存

JAVA實現分布式快取

1概述 通常情況下我們執行程式的過程中會產生一些中間資料,這些中間資料需要在將來的某個時間讀取。這就要求我們要把它存在乙個提供高速訪問的地方,最好的選擇就是記憶體中。基於這個以及多個原因需要我們把這部分儲存到其他機器上,這樣就產生了分布式快取的問題。實際上分布式快取根本上就是提供乙個附加記憶體讓另一...

實現分布式快取

1概述 通常情況下我們執行程式的過程中會產生一些中間資料,這些中間資料需要在將來的某個時間讀取。這就要求我們要把它存在乙個提供高速訪問的地方,最好的選擇就是記憶體中。基於這個以及多個原因需要我們把這部分儲存到其他機器上,這樣就產生了分布式快取的問題。實際上分布式快取根本上就是提供乙個附加記憶體讓另一...

Redis分布式快取實現

定義 特點快取解決的問題 快取能提高效率,那專案中所有書庫加入快取是否更好?本地快取與分布式快取的區別?mybatis中應用級快取 二級快取 sqlsessionfactory級別快取 所有會話共享 如何開啟二級快取 本地快取 檢視cache標籤快取實現 自定義rediscache實現 如何解決關聯...