
- Memcached 基礎
- Memcached - 首頁
- Memcached - 概述
- Memcached - 環境
- Memcached - 連線
- Memcached 儲存命令
- Memcached - 設定資料
- Memcached - 新增資料
- Memcached - 替換資料
- Memcached - 追加資料
- Memcached - 前置資料
- Memcached - CAS
- Memcached 獲取命令
- Memcached - 獲取資料
- Memcached - 獲取 CAS 資料
- Memcached - 刪除鍵
- Memcached - 刪除資料
- Memcached - 自增/自減
- Memcached 統計命令
- Memcached - 統計
- Memcached - 專案統計
- Memcached - Slab 統計
- Memcached - 大小統計
- Memcached - 清除資料
- Memcached 有用資源
- Memcached - 快速指南
- Memcached - 有用資源
- Memcached - 討論
Memcached - CAS 命令
CAS 代表檢查並設定 (Check-And-Set) 或比較並交換 (Compare-And-Swap)。Memcached 的 CAS 命令用於在資料自上次獲取以來未更新的情況下設定資料。如果 Memcached 中不存在該鍵,則返回 NOT_FOUND。
語法
Memcached CAS 命令的基本語法如下所示:
set key flags exptime bytes unique_cas_key [noreply] value
語法中的關鍵詞說明如下:
key − 它是用於儲存和檢索 Memcached 中資料的鍵的名稱。
flags − 它是伺服器與使用者提供的資料一起儲存的 32 位無符號整數,並在檢索專案時與資料一起返回。
exptime − 它是以秒為單位的過期時間。0 表示不延遲。如果 exptime 超過 30 天,Memcached 將其用作過期時間的 UNIX 時間戳。
bytes − 它是需要儲存的資料塊中的位元組數。這是需要儲存在 Memcached 中的資料長度。
unique_cas_key − 它是從 gets 命令獲取的唯一鍵。
noreply (可選) − 它是一個引數,通知伺服器不要傳送任何回覆。
value − 它是需要儲存的資料。在使用上述選項執行命令後,需要在新行上傳遞資料。
輸出
命令的輸出如下所示:
STORED
STORED 表示成功。
ERROR 表示儲存資料時出錯或語法錯誤。
EXISTS 表示自上次獲取以來有人修改了 CAS 資料。
NOT_FOUND 表示 Memcached 伺服器中不存在該鍵。
示例
要在 Memcached 中執行 CAS 命令,您需要從 Memcached gets 命令獲取 CAS 令牌。
cas tp 0 900 9 ERROR cas tp 0 900 9 2 memcached set tp 0 900 9 memcached STORED gets tp VALUE tp 0 9 1 memcached END cas tp 0 900 5 2 redis EXISTS cas tp 0 900 5 1 redis STORED get tp VALUE tp 0 5 redis END
使用 Java 應用程式的 CAS
要從 Memcached 伺服器獲取 CAS 資料,您需要使用 Memcached 的 gets 方法。
示例
import net.spy.memcached.MemcachedClient; public class MemcachedJava { public static void main(String[] args) { // Connecting to Memcached server on localhost MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211)); System.out.println("Connection to server successful"); System.out.println("set status:"+mcc.set("tutorialspoint", 900, "memcached").isDone()); // Get cas token from cache long castToken = mcc.gets("tutorialspoint").cas; System.out.println("Cas token:"+castToken); // now set new data in memcached server System.out.println("Now set new data:"+mcc.cas("tutorialspoint", castToken, 900, "redis")); System.out.println("Get from Cache:"+mcc.get("tutorialspoint")); } }
輸出
編譯並執行程式後,您將看到以下輸出:
Connection to server successful set status:true Cas token:3 Now set new data:OK Get from Cache:redis
廣告