匯出 (0) 列印
全部展開

如何使用共置快取

更新日期: 2015年3月

下列步驟說明如何建置使用共置 Memcache 相容快取的應用程式。

應用程式會顯示如下:

Caching Hello World 範例

快取有兩個主要部署拓撲:共置和專用。共置角色也主控其他非快取應用程式碼和服務。專用角色是只用於快取的背景工作角色。若想進一步了解如何建置使用專用快取的應用程式,請參閱如何使用專用快取

若想進一步了解 Azure 中的快取,請參閱 Azure 快取

  1. 在 Eclipse 中建立 Azure 的 Hello World 應用程式所述,建立動態 Web 應用程式。

  2. 建立應用程式的 Azure 專案,其步驟也列載於在 Eclipse 中建立 Azure 的 Hello World 應用程式中。

  3. 以外部 JAR 程式庫的形式,將您的 Memcache 用戶端 JAR 新增至 Java 建置路徑。

  4. 將您的 Memcache 用戶端 JAR 新增至部署組件。

  5. 開啟 Azure 角色的屬性,以啟用共置快取:展開您的 Azure 專案、開啟 WorkerRole1 的內容功能表、按一下 [Azure],然後按一下 [快取]。在 [快取] 屬性對話方塊中,按一下 [啟用共置快取]。使用預設值,如果您想要使用其他值,請參閱Caching properties。以下顯示一組範例值:

    Caching 屬性

    按一下 [確定] 以儲存您的設定,然後關閉 [快取] 屬性對話方塊。

  6. 修改 index.jsp 以使用下列程式碼:

    <%@ page import="java.net.*" %>
    <%@ page import="java.util.concurrent.*" %>
    <%@ page import="net.spy.memcached.*" %>
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>
    <%
        // Retrieve the current time in milliseconds.
        long timeMillis = System.currentTimeMillis();
        // Retrieve the role instance ID.
        String currentRoleInstanceID = System.getenv("RoleInstanceID");
        // Create an instance of the memcached client.
        MemcachedClient c = new MemcachedClient(new InetSocketAddress("localhost_WorkerRole1", 11211));
        // Create a string based on the current time and the current role instance ID. 
        String s = timeMillis + " - " + currentRoleInstanceID;
    
        String cachedString = null;
        Future<Object> obj = null;
        String keyName = "myText";
    
        // Retrieve and display the currently cached value.
        obj = c.asyncGet(keyName);
        try
        {
        cachedString = (String)obj.get(5, TimeUnit.SECONDS);
        }
        catch (TimeoutException e)
        {
        obj.cancel(false);
        // Take other action as needed.
        }
        
        out.println("Getting from cache: myText = " + cachedString + "<p/>");
    
        // Set the cached value to the current time and role instance ID. -->
        out.println("Setting to cache: myText = " + s + "<p/>");
        
        c.set(keyName, 3600, s);
        // Retrieve and display the newly cached value.
        obj = c.asyncGet(keyName);
        try
        {
            cachedString = (String)obj.get(5, TimeUnit.SECONDS);
        }
        catch (TimeoutException e)
        {
            obj.cancel(false);
        }
        out.println("Getting from updated cache: myText = " + cachedString + "<p/>");
    %>
    </body>
    </html>
    
  7. 如果您在 Windows 作業系統上使用 Eclipse,您可以在計算模擬器中執行您的應用程式。若要這樣做,請按一下 Azure 工具列上的 [在 Azure 模擬器中執行] 圖示。您的應用程式在計算模擬器中執行後,請啟動應用程式的 localhost URL。重新整理瀏覽器,您即可看見值在快取中維護。(注意:計算模擬器只能在 Windows 系統上使用。)

  8. 若要在 Azure 中執行,請先開啟 [快取] 屬性對話方塊,然後從 [儲存體] 區段的下拉式清單中選取 [(自動)]。如果您在步驟 5 中將儲存體帳戶名稱設定為 [(自動)] (預設值),快取組態會自動使用您在 [發行到 Azure] 對話方塊中選取的相同儲存體帳戶。否則,您可以在此處選取特定的 Azure 儲存體帳戶。在關閉 [快取] 屬性對話方塊後,請在 Azure 的工具列中按一下 [發行至 Azure 雲端] 圖示,並依照提示完成您的部署。在應用程式做為 Azure 雲端服務執行之後,啟動您的應用程式的 URL。重新整理瀏覽器,您即可看見值在快取中維護。

    note附註
    只有在使用 Eclipse 工具組的發行精靈發行部署時,[(自動)] 設定才會發揮所要的效果。如果您改為使用外部機制手動發行.cspkg 檔案,例如 Azure 管理入口網站,部署將無法正常運作。

另請參閱

顯示:
© 2015 Microsoft