Memcached - Hướng dẫn nhanh

Memcached là một hệ thống bộ nhớ đệm phân tán, hiệu suất cao, mã nguồn mở nhằm tăng tốc các ứng dụng web động bằng cách giảm tải cơ sở dữ liệu. Nó là một từ điển khóa-giá trị của các chuỗi, đối tượng, v.v., được lưu trữ trong bộ nhớ, là kết quả của các lệnh gọi cơ sở dữ liệu, lệnh gọi API hoặc kết xuất trang.

Memcached được phát triển bởi Brad Fitzpatrick cho LiveJournal vào năm 2003. Tuy nhiên, bây giờ nó đang được sử dụng bởi Netlog, Facebook, Flickr, Wikipedia, Twitter và YouTube trong số những người khác.

Các tính năng chính của Memcached như sau:

  • Nó là mã nguồn mở.

  • Máy chủ Memcached là một bảng băm lớn.

  • Nó làm giảm đáng kể tải cơ sở dữ liệu

  • Nó hoàn toàn hiệu quả cho các trang web có tải cơ sở dữ liệu cao.

  • Nó được phân phối theo giấy phép Berkeley Software Distribution (BSD).

  • Nó là một ứng dụng khách-máy chủ qua TCP hoặc UDP.

Memcached không -

  • một kho dữ liệu liên tục

  • Một cơ sở dữ liệu

  • application-specific

  • một bộ nhớ cache đối tượng lớn

  • khả năng chịu lỗi hoặc khả dụng cao

Cài đặt Memcached trên Ubuntu

Để cài đặt Memcached trên Ubuntu, hãy chuyển đến terminal và nhập các lệnh sau:

$sudo apt-get update
$sudo apt-get install memcached

Xác nhận cài đặt bộ nhớ đệm

Để xác nhận xem Memcached đã được cài đặt hay chưa, bạn cần chạy lệnh dưới đây. Lệnh này cho thấy rằng Memcached đang chạy trên cổng mặc định11211.

$ps aux | grep memcached

Để chạy máy chủ Memcached trên một cổng khác, hãy thực hiện lệnh dưới đây. Lệnh này khởi động máy chủ trên cổng TCP 11111 và lắng nghe trên cổng UDP 11111 như một quá trình daemon.

$memcached -p 11111 -U 11111 -u user -d

Bạn có thể chạy nhiều phiên bản của máy chủ Memcached thông qua một cài đặt duy nhất.

Thiết lập Môi trường Java Memcached

Để sử dụng Memcached trong chương trình Java của bạn, bạn cần tải xuống spymemcached-2.10.3.jar và thiết lập jar này vào classpath.

Để kết nối với máy chủ Memcached, bạn cần sử dụng lệnh telnet trên tên HOST và PORT.

Cú pháp

Cú pháp cơ bản của lệnh Memcached telnet như sau:

$telnet HOST PORT

Đây, HOSTPORT lần lượt là IP của máy và số cổng mà máy chủ Memcached đang thực thi.

Thí dụ

Ví dụ sau đây cho thấy cách kết nối với máy chủ Memcached và thực hiện một lệnh set và get đơn giản. Giả sử rằng máy chủ Memcached đang chạy trên máy chủ 127.0.0.1 và cổng 11211.

$telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
// now store some data and get it from memcached server
set tutorialspoint 0 900 9
memcached
STORED
get tutorialspoint
VALUE tutorialspoint 0 9
memcached
END

Kết nối từ ứng dụng Java

Để kết nối máy chủ Memcached từ chương trình java của bạn, bạn cần thêm jar Memcached vào classpath của mình như được hiển thị trong chương trước. Giả sử rằng máy chủ Memcached đang chạy trên máy chủ 127.0.0.1 và cổng 11211. -

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 sucessfully");
      
      //not set data into memcached server
      System.out.println("set status:"+mcc.set("tutorialspoint", 900, "memcached").done);
      
      //Get value from cache
      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 successfully
set status:true
Get from Cache:memcached.

Thiết bị đầu cuối cũng có thể hiển thị một số thông báo thông tin, những thông báo đó có thể bị bỏ qua.

Đã ghi nhớ set lệnh được sử dụng để đặt một giá trị mới cho một khóa mới hoặc khóa hiện có.

Cú pháp

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

set key flags exptime bytes [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 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.

  • 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 sang 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 cho biết cú pháp không chính xác hoặc lỗi khi lưu dữ liệu.

Thí dụ

Trong ví dụ sau, chúng tôi sử dụng tutorialspoint làm khóa và đặt giá trị Memcached trong đó với thời gian hết hạn là 900 giây.

set tutorialspoint 0 900 9
memcached
STORED
get tutorialspoint
VALUE tutorialspoint 0 9
Memcached
END

Đặt dữ liệu bằng ứng dụng Java

Để đặt khóa trong máy chủ Memcached, bạn cần sử dụng Memcached set 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 sucessfully");
      System.out.println("set status:"+mcc.set("tutorialspoint", 900, "memcached").done);
      
      // Get value from cache
      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 successfully
set status:true
Get from Cache:memcached

Đã ghi nhớ addlệnh được sử dụng để đặt một giá trị cho một khóa mới. Nếu khóa đã tồn tại, thì nó cho kết quả NOT_STORED.

Cú pháp

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

add key flags exptime bytes [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 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.

  • 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 sang 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.

  • NOT_STORED cho biết dữ liệu không được lưu trữ trong Memcached.

Thí dụ

Trong ví dụ sau, chúng tôi sử dụng 'key' làm khóa và thêm giá trị Memcached vào đó với thời gian hết hạn là 900 giây.

add key 0 900 9
memcached
STORED
get key
VALUE key 0 9
Memcached
END

Đầu ra thất bại

add key 0 900 5
redis
NOT_STORED

Thêm dữ liệu bằng ứng dụng Java

Để thêm dữ liệu vào máy chủ Memcached, bạn cần sử dụng Memcached add 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("add status:"+mcc.add("tutorialspoint", 900, "redis").done);
      System.out.println("add status:"+mcc.add("tp", 900, "redis").done);
      
      // Get value from cache
      System.out.println("Get from Cache tp:"+mcc.get("tp"));
   }
}

Đầ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
add status:false
add status:true
Get from Cache tp:redis

Đã ghi nhớ replacelệnh được sử dụng để thay thế giá trị của một khóa hiện có. Nếu khóa không tồn tại, thì nó sẽ đưa ra đầu ra NOT_STORED.

Cú pháp

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

replace key flags exptime bytes [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 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.

  • 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 sang 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.

  • NOT_STORED cho biết dữ liệu không được lưu trữ trong Memcached.

Thí dụ

Trong ví dụ sau, chúng tôi sử dụng 'key' làm khóa và lưu trữ memcached trong đó với thời gian hết hạn là 900 giây. Sau đó, khóa tương tự được thay thế bằng giá trị 'redis'.

add key 0 900 9
memcached
STORED
get key
VALUE key 0 9
memcached
END
replace key 0 900 5
redis
get key
VALUE key 0 5
redis
END

Thay thế dữ liệu bằng ứng dụng Java

Để thay thế dữ liệu trong máy chủ Memcached, bạn cần sử dụng Memcached replace 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 sucessfully");
      System.out.println("set status:"+mcc.set("tutorialspoint", 900, "memcached").done);
      
      // Get value from cache
      System.out.println("Get from Cache:"+mcc.get("tutorialspoint"));
      
      // now replace the existing data
      System.out.println("Replace cache:"+mcc.replace("tutorialspoint", 900, "redis").done);
      
      // get the updated data
      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 successfully
set status:true
Get from Cache:memcached
Replace cache:true
Get from Cache:redis

Đã ghi nhớ appendlệnh được sử dụng để thêm một số dữ liệu trong một khóa hiện có. Dữ liệu được lưu trữ sau dữ liệu hiện có của khóa.

Cú pháp

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

append key flags exptime bytes [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 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.

  • noreply (optional) - Đây là một 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 sang 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.

  • NOT_STORED cho biết khóa không tồn tại trong máy chủ Memcached.

  • CLIENT_ERROR chỉ ra lỗi.

Thí dụ

Trong ví dụ sau, chúng tôi cố gắng thêm một số dữ liệu trong một khóa không tồn tại. Do đó, Memcached trả vềNOT_STORED. Sau đó, chúng tôi đặt một khóa và nối dữ liệu vào đó.

append tutorials 0 900 5
redis
NOT_STORED
set tutorials 0 900 9
memcached
STORED
get tutorials
VALUE tutorials 0 14
memcached
END
append tutorials 0 900 5
redis
STORED
get tutorials
VALUE tutorials 0 14
memcachedredis
END

Nối dữ liệu bằng ứng dụng Java

Để thêm dữ liệu vào máy chủ Memcached, bạn cần sử dụng Memcached append 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 value from cache
      System.out.println("Get from Cache:"+mcc.get("tutorialspoint"));
      
      // now append some data into existing key
      System.out.println("Append to cache:"+mcc.append("tutorialspoint", "redis").isDone());
      
      // get the updated key
      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
Get from Cache:memcached
Append to cache:true
Get from Cache:memcachedredis

Đã ghi nhớ prependlệnh được sử dụng để thêm một số dữ liệu trong một khóa hiện có. Dữ liệu được lưu trữ trước dữ liệu hiện có của khóa.

Cú pháp

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

prepend key flags exptime bytes [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 trong 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 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.

  • noreply (optional) −Là một tham số thông báo rằng 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.

  • NOT_STORED cho biết khóa không tồn tại trong máy chủ Memcached.

  • CLIENT_ERROR chỉ ra lỗi.

Thí dụ

Trong ví dụ sau, chúng tôi thêm một số dữ liệu trong một khóa không tồn tại. Do đó, Memcached trả vềNOT_STORED. Sau đó, chúng tôi đặt một khóa và thêm dữ liệu vào đó.

prepend tutorials 0 900 5
redis
NOT_STORED
set tutorials 0 900 9
memcached
STORED
get tutorials
VALUE tutorials 0 14
memcached
END
prepend tutorials 0 900 5
redis
STORED
get tutorials
VALUE tutorials 0 14
redismemcached
END

Thêm dữ liệu trước bằng ứng dụng Java

Để thêm dữ liệu vào máy chủ Memcached, bạn cần sử dụng Memcached prepend 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 value from cache
      System.out.println("Get from Cache:"+mcc.get("tutorialspoint"));
      
      // now append some data into existing key
      System.out.println("Prepend to cache:"+mcc.prepend("tutorialspoint", "redis").isDone());
      
      // get the updated key
      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
Get from Cache:memcached
Prepend to cache:true
Get from Cache:redismemcached

CAS là viết tắt của Check-And-Set hoặc Compare-And-Swap. Đã ghi nhớCASlệnh được sử dụng để thiết lập 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 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

Đã ghi nhớ getlệnh được sử dụng để lấy giá trị được lưu trữ tại khóa. Nếu khóa không tồn tại trong Memcached, thì nó không trả về kết quả nào.

Cú pháp

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

get key

Thí dụ

Trong ví dụ sau, chúng tôi sử dụng điểm hướng dẫn làm khóa và lưu trữ memcached trong đó với thời gian hết hạn là 900 giây.

set tutorialspoint 0 900 9
memcached
STORED
get tutorialspoint
VALUE tutorialspoint 0 9
memcached
END

Nhận dữ liệu bằng ứng dụng Java

Để lấy dữ liệu từ máy chủ Memcached, bạn cần sử dụng Memcached get 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 sucessfully");
      System.out.println("set status:"+mcc.set("tutorialspoint", 900, "memcached").done);
     
     // Get value from cache
      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 successfully
set status:true
Get from Cache:memcached

Đã ghi nhớ getslệnh được sử dụng để lấy giá trị bằng mã thông báo CAS. Nếu khóa không tồn tại trong Memcached, thì nó không trả về kết quả nào.

Cú pháp

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

get key

Thí dụ

set tutorialspoint 0 900 9
memcached
STORED
gets tutorialspoint
VALUE tutorialspoint 0 9 1
memcached
END

Trong ví dụ này, chúng tôi sử dụng tutorialspoint làm khóa và lưu trữ memcached trong đó với thời gian hết hạn là 900 giây.

Nhận dữ liệu CAS bằ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 sucessfully");
      System.out.println("set status:"+mcc.set("tutorialspoint", 900, "memcached").done);
      
      // Get value from cache
      System.out.println("Get from Cache:"+mcc.gets("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 successfully
set status:true
Get from Cache:{CasValue 2/memcached}

Đã ghi nhớ delete được sử dụng để xóa khóa hiện có khỏi máy chủ Memcached.

Cú pháp

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

delete key [noreply]

Đầu ra

Lệnh CAS có thể tạo ra một trong các kết quả sau:

  • DELETED cho biết xóa thành công.

  • ERROR cho biết lỗi khi xóa dữ liệu hoặc sai cú pháp.

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

Thí dụ

Trong ví dụ này, chúng tôi sử dụng điểm hướng dẫn làm khóa và lưu trữ bộ nhớ đệm trong đó với thời gian hết hạn là 900 giây. Sau đó, nó sẽ xóa khóa được lưu trữ.

set tutorialspoint 0 900 9
memcached
STORED
get tutorialspoint
VALUE tutorialspoint 0 9
memcached
END
delete tutorialspoint
DELETED
get tutorialspoint
END
delete tutorialspoint
NOT_FOUND

Xóa dữ liệu bằng ứng dụng Java

Để xóa dữ liệu khỏi máy chủ Memcached, bạn cần sử dụng Memcached delete phương pháp.

Thí dụ

import java.net.InetSocketAddress;
import java.util.concurrent.Future;

import net.spy.memcached.MemcachedClient;

public class MemcachedJava {
   public static void main(String[] args) {
   
      try{
   
         // Connecting to Memcached server on localhost
         MemcachedClient mcc = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211));
         System.out.println("Connection to server sucessful.");

         // add data to memcached server
         Future fo = mcc.set("tutorialspoint", 900, "World's largest online tutorials library");

         // print status of set method
         System.out.println("set status:" + fo.get());

         // retrieve and check the value from cache
         System.out.println("tutorialspoint value in cache - " + mcc.get("tutorialspoint"));

         // try to add data with existing key
         Future fo = mcc.delete("tutorialspoint");

         // print status of delete method
         System.out.println("delete status:" + fo.get());

         // retrieve and check the value from cache
         System.out.println("tutorialspoint value in cache - " + mcc.get("codingground"));

         // Shutdowns the memcached client
         mcc.shutdown();
         
      }catch(Exception ex)
         System.out.println(ex.getMessage());
   }
}

Đầ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
tutorialspoint value in cache - World's largest online tutorials library
delete status:true
tutorialspoint value in cache - null

Đã ghi nhớ delete được sử dụng để xóa khóa hiện có khỏi máy chủ Memcached.

Cú pháp

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

delete key

Nếu khóa được xóa thành công, thì nó sẽ trả về ĐÃ XÓA. Nếu không tìm thấy khóa, thì nó trả về NOT_FOUND, ngược lại nó trả về ERROR.

Thí dụ

Trong ví dụ này, chúng tôi sử dụng điểm hướng dẫn làm khóa và lưu trữ bộ nhớ đệm trong đó với thời gian hết hạn là 900 giây. Sau đó, nó sẽ xóa khóa được lưu trữ.

set tutorialspoint 0 900 9
memcached
STORED
get tutorialspoint
VALUE tutorialspoint 0 9
memcached
END
delete tutorialspoint
DELETED
get tutorialspoint
END
delete tutorialspoint
NOT_FOUND

Xóa dữ liệu bằng ứng dụng Java

Để xóa dữ liệu khỏi máy chủ Memcached, bạn cần sử dụng Memcached delete 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").done);
      
      // Get value from cache
      System.out.println("Get from Cache:"+mcc.get("tutorialspoint"));
      
      // delete value from cache
      System.out.println("Delete from Cache:"+mcc.delete("tutorialspoint").isDone());
      
      // check whether value exists or not
      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
Get from Cache:memcached
Delete from Cache:true
Get from Cache:null

Đã ghi nhớ incrdecrcác lệnh được sử dụng để tăng hoặc giảm giá trị số của một khóa hiện có. Nếu khóa không được tìm thấy, thì nó sẽ trả vềNOT_FOUND. Nếu khóa không phải là số, thì nó trả vềCLIENT_ERROR cannot increment or decrement non-numeric value. Nếu không thì,ERROR Được trả lại.

Cú pháp - incr

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

incr key increment_value

Thí dụ

Trong ví dụ này, chúng tôi sử dụng khách truy cập làm khóa và ban đầu đặt 10 khách truy cập vào đó, sau đó chúng tôi tăng khách truy cập lên 5.

set visitors 0 900 2
10
STORED
get visitors
VALUE visitors 0 2
10
END
incr visitors 5
15
get visitors
VALUE visitors 0 2
15
END

Cú pháp - decr

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

decr key decrement_value

Thí dụ

set visitors 0 900 2
10
STORED
get visitors
VALUE visitors 0 2
10
END
decr visitors 5
5
get visitors
VALUE visitors 0 1
5
END

Incr / Decr Sử dụng ứng dụng Java

Để tăng hoặc giảm dữ liệu trong máy chủ Memcached, bạn cần sử dụng Memcached incr or decr các phương pháp tương ứng.

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 sucessfully");
      System.out.println("set status:"+mcc.set("count", 900, "5").isDone());
      
      // Get value from cache
      System.out.println("Get from Cache:"+mcc.get("count"));
      
      // now increase the stored value
      System.out.println("Increment value:"+mcc.incr("count", 2));
      
      // now decrease the stored value
      System.out.println("Decrement value:"+mcc.decr("count", 1));
      
      // now get the final stored value
      System.out.println("Get from Cache:"+mcc.get("count"));
   }
}

Đầ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 successfully
set status:true
Get from Cache:5
Increment value:7
Decrement value:6
Get from Cache:6

Đã ghi nhớ stats lệnh được sử dụng để trả về thống kê máy chủ như PID, phiên bản, kết nối, v.v.

Cú pháp

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

stats

Thí dụ

stats
STAT pid 1162
STAT uptime 5022
STAT time 1415208270
STAT version 1.4.14
STAT libevent 2.0.19-stable
STAT pointer_size 64
STAT rusage_user 0.096006
STAT rusage_system 0.152009
STAT curr_connections 5
STAT total_connections 6

STAT connection_structures 6
STAT reserved_fds 20
STAT cmd_get 6
STAT cmd_set 4
STAT cmd_flush 0
STAT cmd_touch 0
STAT get_hits 4
STAT get_misses 2
STAT delete_misses 1
STAT delete_hits 1

STAT incr_misses 2
STAT incr_hits 1
STAT decr_misses 0
STAT decr_hits 1
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT touch_hits 0
STAT touch_misses 0
STAT auth_cmds 0

STAT auth_errors 0
STAT bytes_read 262
STAT bytes_written 313
STAT limit_maxbytes 67108864
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT threads 4
STAT conn_yields 0
STAT hash_power_level 16

STAT hash_bytes 524288
STAT hash_is_expanding 0
STAT expired_unfetched 1
STAT evicted_unfetched 0
STAT bytes 142
STAT curr_items 2
STAT total_items 6
STAT evictions 0
STAT reclaimed 1
END

Thống kê Sử dụng Ứng dụng Java

Để nhận số liệu thống kê từ máy chủ Memcached, bạn cần sử dụng Memcached stats 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("Stats:"+mcc.stats);
   }
}

Đầ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
Stats:[/127.0.0.1:11211:[delete_hits:0, bytes:71, total_items:4,
rusage_system:0.220013, touch_misses:0, cmd_touch:0, listen_disabled_num:0,
auth_errors:0, evictions:0, version:1.4.14, pointer_size:64, time:1417279366,
incr_hits:1, threads:4, expired_unfetched:0, limit_maxbytes:67108864,
hash_is_expanding:0, bytes_read:170, curr_connections:8, get_misses:1,
reclaimed:0, bytes_written:225, hash_power_level:16, connection_structures:9,
cas_hits:0, delete_misses:0, total_connections:11, rusage_user:0.356022,
cmd_flush:0, libevent:2.0.19-stable, uptime:12015, reserved_fds:20,
touch_hits:0, cas_badval:0, pid:1138, get_hits:2, curr_items:1, cas_misses:0,
accepting_conns:1, evicted_unfetched:0, cmd_get:3, cmd_set:2, auth_cmds:0,
incr_misses:1, hash_bytes:524288, decr_misses:1, decr_hits:1, conn_yields:0]]

Đã ghi nhớ stats items lệnh được sử dụng để lấy thống kê các mục như số lượng, tuổi, trục xuất, v.v. được sắp xếp theo ID phiến.

Cú pháp

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

stats items

Thí dụ

stats items
STAT items:1:number 1
STAT items:1:age 7
STAT items:1:evicted 0
STAT items:1:evicted_nonzero 0
STAT items:1:evicted_time 0
STAT items:1:outofmemory 0
STAT items:1:tailrepairs 0
STAT items:1:reclaimed 0
STAT items:1:expired_unfetched 0
STAT items:1:evicted_unfetched 0
END

Đã ghi nhớ stats slabs lệnh hiển thị số liệu thống kê của phiến như kích thước, mức sử dụng bộ nhớ, lệnh, số lượng, v.v. được sắp xếp theo ID phiến.

Cú pháp

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

stats slabs

Thí dụ

stats slabs
STAT 1:chunk_size 96
STAT 1:chunks_per_page 10922
STAT 1:total_pages 1
STAT 1:total_chunks 10922
STAT 1:used_chunks 1
STAT 1:free_chunks 10921
STAT 1:free_chunks_end 0
STAT 1:mem_requested 71
STAT 1:get_hits 0
STAT 1:cmd_set 1
STAT 1:delete_hits 0
STAT 1:incr_hits 0
STAT 1:decr_hits 0
STAT 1:cas_hits 0
STAT 1:cas_badval 0
STAT 1:touch_hits 0
STAT active_slabs 1
STAT total_malloced 1048512
END

Đã ghi nhớ stats sizeslệnh cung cấp thông tin về kích thước và số lượng mục của mỗi kích thước trong bộ đệm. Thông tin được trả về trong hai cột. Cột đầu tiên là kích thước của mục (làm tròn đến ranh giới 32 byte gần nhất) và cột thứ hai là số lượng mục có kích thước đó trong bộ nhớ cache.

Cú pháp

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

stats sizes

Thí dụ

stats sizes
STAT 96 1
END

Thống kê kích thước mục chỉ hữu ích để xác định kích thước của các đối tượng bạn đang lưu trữ. Vì việc phân bổ bộ nhớ thực tế chỉ có liên quan về kích thước chunk và kích thước trang, thông tin chỉ hữu ích trong phiên chẩn đoán hoặc gỡ lỗi cẩn thận.

Đã ghi nhớ flush_allđược sử dụng để xóa tất cả dữ liệu (cặp khóa-giá trị) khỏi máy chủ Memcached. Nó chấp nhận một tham số tùy chọn được gọi làtime đặt thời gian sau đó dữ liệu Memcached sẽ được xóa.

Cú pháp

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

flush_all [time] [noreply]

Lệnh trên luôn trả về OK.

Thí dụ

Trong ví dụ sau, chúng tôi lưu trữ một số dữ liệu vào máy chủ Memcached và sau đó xóa tất cả dữ liệu.

set tutorialspoint 0 900 9
memcached
STORED
get tutorialspoint
VALUE tutorialspoint 0 9
memcached
END
flush_all
OK
get tutorialspoint
END

Xóa dữ liệu bằng ứng dụng Java

Để xóa dữ liệu khỏi máy chủ Memcached, bạn cần sử dụng Memcached flush 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 sucessfully");
      System.out.println("set status:"+mcc.set("count", 900, "5").isDone());
      
      // Get value from cache
      System.out.println("Get from Cache:"+mcc.get("count"));
     
      // now increase the stored value
      System.out.println("Increment value:"+mcc.incr("count", 2));
     
      // now decrease the stored value
      System.out.println("Decrement value:"+mcc.decr("count", 1));
      
      // now get the final stored value
      System.out.println("Get from Cache:"+mcc.get("count"));
      
      // now clear all this data
      System.out.println("Clear data:"+mcc.flush().isDone());
   }
}

Đầ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 successfully
set status:true
Get from Cache:5
Increment value:7
Decrement value:6
Get from Cache:6
Clear data:true