Memcached - Lệnh CAS

CAS là viết tắt của Check-And-Set hoặc Compare-And-Swap. Đã ghi nhớCASđược sử dụng để đặt dữ liệu nếu nó không được cập nhật kể từ lần tìm nạp cuối cùng. Nếu khóa không tồn tại trong Memcached, thì nó sẽ trả vềNOT_FOUND.

Cú pháp

Cú pháp cơ bản của Memcached CAS lệnh như hình dưới đây -

set key flags exptime bytes unique_cas_key [noreply]
value

Các từ khóa trong cú pháp như được mô tả bên dưới−

  • key - Đây là tên của khóa mà dữ liệu được lưu trữ và truy xuất từ ​​Memcached.

  • flags - Là số nguyên 32-bit không dấu mà máy chủ lưu trữ với dữ liệu do người dùng cung cấp, và trả về cùng với dữ liệu khi mục được truy xuất.

  • exptime- Đó là thời gian hết hạn tính bằng giây. 0 có nghĩa là không có độ trễ. Nếu thời gian hết hạn là hơn 30 ngày, Memcached sẽ sử dụng nó làm dấu thời gian UNIX để hết hạn.

  • bytes- Là số byte trong khối dữ liệu cần được lưu trữ. Đây là độ dài của dữ liệu cần được lưu trữ trong Memcached.

  • unique_cas_key - Nó là chìa khóa duy nhất nhận được từ lệnh get.

  • noreply (optional) - Là tham số thông báo cho máy chủ không gửi bất kỳ phản hồi nào.

  • value- Là dữ liệu cần được lưu trữ. Dữ liệu cần được chuyển trên dòng mới sau khi thực hiện lệnh với các tùy chọn trên.

Đầu ra

Đầu ra của lệnh như hình dưới đây:

STORED
  • STORED biểu thị sự thành công.

  • ERROR chỉ ra lỗi khi lưu dữ liệu hoặc sai cú pháp.

  • EXISTS cho biết ai đó đã sửa đổi dữ liệu CAS kể từ lần tìm nạp cuối cùng.

  • NOT_FOUND chỉ ra rằng khóa không tồn tại trong máy chủ Memcached.

Thí dụ

Để thực hiện lệnh CAS trong Memcached, bạn cần lấy mã thông báo CAS từ lệnh Memcached get.

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

CAS Sử dụng ứng dụng Java

Để lấy dữ liệu CAS từ máy chủ Memcached, bạn cần sử dụng Memcached gets phương pháp.

Thí dụ

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"));
   }
}

Đầu ra

Khi biên dịch và thực thi chương trình, bạn sẽ thấy kết quả sau:

Connection to server successful
set status:true
Cas token:3
Now set new data:OK
Get from Cache:redis