Trong bài viết trước, mình đã hướng dẫn với các bạn làm thế nào để cài đặt Apache Ignite. Trong bài viết này, mình sẽ hướng dẫn các bạn các bước cơ bản để sử dụng chức năng cache của Apache Ignite thông qua một ví dụ các bạn nhé!
Đầu tiên, mình sẽ tạo một Maven project để làm điều này:
với Apache Ignite dependency như sau:
1 2 3 4 5 |
<dependency> <groupId>org.apache.ignite</groupId> <artifactId>ignite-core</artifactId> <version>2.7.0</version> </dependency> |
Để làm việc với Apache Ignite, các bạn cần start một instance, đồng nghĩa với một node, của Apache Ignite lên. Chúng ta có thể có nhiều node cùng chạy đồng thời với nhau các bạn nhé, khi đó dữ liệu mà chúng ta lưu hay cache sẽ được distribute tới tất cả các node.
Của mình như sau:
Bây giờ mình sẽ tạo một class để chạy ứng dụng với phương thức main() trong đó, mình sẽ connect tới Apache Ignite rồi thử lưu một đoạn text vào cache của Apache Ignite xem sao các bạn nhé!
Class của mình như sau:
1 2 3 4 5 6 7 8 9 |
package com.huongdanjava.apacheignite; public class ApacheIgniteExample { public static void main(String[] args) { } } |
Để connect tới Apache Ignite node mà chúng ta đã start sẵn, các bạn cần khởi tạo đối tượng IgniteClient sử dụng class Ignition với phương thức static startClient() của class này.
Tham số của phương thức static startClient() là một đối tượng ClientConfiguration. Chúng ta cần khởi tạo đối tượng ClientConfiguration sử dụng constructor không có tham số và cấu hình thông tin của Apache Ignite như sau:
1 2 |
ClientConfiguration cfg = new ClientConfiguration(); cfg.setAddresses("localhost:10800"); |
“localhost:10800” là thông tin về Apache Ignite mà mình đã start ở trên, mặc định thì Apache Ignite sẽ chạy ở port 10800 các bạn nhé!
Giá trị của tham số trong phương thức setAddresses() là một mảng thông tin các node của Apache Ignite nên nếu các bạn có nhiều node Apache Ignite thì có thể add thêm thông tin của chúng sử dụng phương thức này.
Sau khi đã khởi tạo đối tượng ClientConfiguration, bây giờ các bạn có thể khởi tạo đối tượng IgniteClient như sau:
1 2 3 |
try (IgniteClient igniteClient = Ignition.startClient(cfg)) { } |
Mình sử dụng try-with-resource để khi hết sử dụng thì biến igniteClient sẽ tự động đóng connection.
Bây giờ thì chúng ta hãy thử lưu giá trị vào cache của Apache Ignite xem sao các bạn nhé!
Để làm điều này, các bạn cần khởi tạo đối tượng ClientCache sử dụng phương thức getOrCreateCache() của đối tượng IgniteClient như sau:
1 |
ClientCache<Integer, String> clientCache = igniteClient.getOrCreateCache("huongdanjava"); |
Phương thức getOrCreateCache() sẽ tự động tạo mới cache nếu nó chưa tồn tại. “huongdanjava” chính là tên của cache mà chúng ta cần tạo. Tuỳ theo ước muốn của mình, các bạn hãy đặt tên cho phù hợp nhé!
Chúng ta sử dụng đối tượng ClientCache để lưu giá trị vào cache, cụ thể như sau:
1 2 |
clientCache.put(1, "Hello"); clientCache.put(2, "Huong Dan Java"); |
Đến đây thì chúng ta đã lưu được giá trị vào cache của Apache Ignite, thử lấy chúng lên xem sao các bạn nhé!
1 2 |
ClientCache<Object, Object> cache = igniteClient.cache("huongdanjava"); System.out.println(String.format("%s, %s", cache.get(1), cache.get(2))); |
Toàn bộ code sẽ như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
package com.huongdanjava.apacheignite; import org.apache.ignite.Ignition; import org.apache.ignite.client.ClientCache; import org.apache.ignite.client.ClientException; import org.apache.ignite.client.IgniteClient; import org.apache.ignite.configuration.ClientConfiguration; public class ApacheIgniteExample { public static void main(String[] args) throws ClientException, Exception { ClientConfiguration cfg = new ClientConfiguration(); cfg.setAddresses("localhost:10800"); try (IgniteClient igniteClient = Ignition.startClient(cfg)) { ClientCache<Integer, String> clientCache = igniteClient.getOrCreateCache("huongdanjava"); clientCache.put(1, "Hello"); clientCache.put(2, "Huong Dan Java"); ClientCache<Object, Object> cache = igniteClient.cache("huongdanjava"); System.out.println(String.format("%s, %s", cache.get(1), cache.get(2))); } } } |
Kết quả khi chạy ví dụ trên như sau: