Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách thực hiện các thao tác CRUD (Create, Read, Update, Delete) trên key (khóa) sử dụng thư viện Jedis.
Thư viện Jedis
Jedis là thư viện client Java cho kho dữ liệu Redis. Nó nhỏ gọn, rất dễ sử dụng, và tương thích hoàn toàn với Redis 2.8.x, 3.x.x và các phiên bản mới hơn. Bạn có thể tìm thêm thông tin về thư viện Jedis tại đây.
Keys (Khóa)
Trong Redis, Keys được dùng như định danh duy nhất để lưu trữ, quản lý và truy xuất giá trị được lưu trong datastore. Bạn có thể tìm thêm thông tin về các lệnh Keys tại đây.
Thiết lập dự án (Project Setup)
Tạo một dự án Maven đơn giản trong IDE yêu thích và thêm dependency sau vào file pom.xml:
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.0.1</version> </dependency>
Để lấy phiên bản mới nhất của thư viện Jedis, hãy xem trang này.
Cài đặt Redis
Bạn sẽ cần cài đặt phiên bản mới nhất của Redis. Xem trang này để biết thêm thông tin về cài đặt Redis.
Kết nối Jedis
Tạo một đối tượng Jedis (redis.clients.jedis.Jedis) để kết nối code Java của bạn với Redis.
Jedis jedis = new Jedis();
Nếu bạn đã khởi động một dịch vụ Redis trên máy local và cổng mặc định (6379), constructor mặc định sẽ hoạt động tốt. Ngược lại, bạn phải truyền đúng URL host và số cổng làm đối số vào constructor.
Đặt timestamp (hết hạn) trên Key
Có bốn phương thức để thiết lập thời gian hết hạn trên key:
- expire: Thiết lập thời gian hết hạn trên key tính bằng giây.
/* Đặt thời gian hết hạn cho <key-1> tính bằng giây */ jedis.expire("key-1", 300); - pexpire: Thiết lập thời gian hết hạn trên key tính bằng mili-giây.
/* Đặt thời gian hết hạn cho <key-1> tính bằng mili-giây */ jedis.pexpire("key-1", 30000); - expireAt: Thiết lập thời gian hết hạn trên key theo Unix Timestamp tính bằng giây.
/* Đặt thời gian hết hạn cho <key-1> theo unix timestamp giây */ jedis.expireAt("key-1", 1543622400); - pexpireAt: Thiết lập thời gian hết hạn trên key theo Unix Timestamp tính bằng mili-giây.
/* Đặt thời gian hết hạn cho <key-1> theo unix timestamp mili-giây */ jedis.pexpireAt("key-1", 154362240000);
Lấy timestamp của Key
Có hai phương thức để lấy thời gian hết hạn của key:
- ttl: Trả về thời gian hết hạn của key tính bằng giây.
/* Trả về thời gian hết hạn của <key-1> tính bằng giây */ jedis.ttl("key-1"); - pttl: Trả về thời gian hết hạn của key tính bằng mili-giây.
/* Trả về thời gian hết hạn của <key-1> tính bằng mili-giây */ jedis.pttl("key-1");
Xóa timestamp (Hết hạn)
Phương thức persist xóa thời gian hết hạn của một key được lưu trong Redis datastore.
/* Xóa timestamp của <key-1> */
jedis.persist("key-1");
Lấy tất cả Key
Phương thức keys trả về một hoặc nhiều khóa khớp với mẫu được chỉ định.
/* Trả về tất cả khóa lưu trong datastore */
jedis.keys("*");
/* Trả về tất cả khóa bắt đầu bằng a và kết thúc bằng b */
jedis.keys("a*b");
Xóa (Delete)
Phương thức del dùng để xóa một key khỏi Redis datastore.
/* Xóa <key-1> khỏi datastore */
jedis.del("key-1");
/* Xóa <key-1> <key-2> <key-3> khỏi datastore */
jedis.del("key-1", "key-2", "key-3");
Kiểm tra tồn tại (Exists)
Phương thức exists dùng để kiểm tra xem một key có tồn tại trong Redis datastore hay không.
/* Kiểm tra <key-1> có tồn tại trong datastore không */
Boolean exist = jedis.exists("key-1");
/* Kiểm tra <key-1>, <key-2>, <key-3> có tồn tại không */
Long exist = jedis.exists("key-1", "key-2", "key-3");
/* Trả về 1 nếu bất kỳ key nào có mặt, ngược lại 0. */
Lấy kiểu dữ liệu (Type)
Phương thức type dùng để lấy kiểu dữ liệu của giá trị lưu trong key.
/* Trả về kiểu dữ liệu của giá trị lưu tại <key-1> */
jedis.type("key-1");
Dump (Straight serialize)
Phương thức dump trả về phiên bản serialized của giá trị lưu tại key.
/* Trả về giá trị serialized lưu tại <key-1> */
jedis.dump("key-1");
Đổi tên (Rename)
Có hai phương thức để đổi tên key lưu trong datastore:
- rename: Đổi tên key từ tên cũ sang tên mới. Nếu key với tên mới đã tồn tại, nó sẽ bị ghi đè và key tên cũ sẽ bị xóa; ngược lại key tên cũ sẽ đổi thành tên mới.
/* Đổi tên key từ <old-key> sang <new-key> */ jedis.rename("old-key", "new-key"); - renamenx: Đổi tên key từ tên cũ sang tên mới chỉ nếu key với tên mới không tồn tại.
/* Đổi tên key từ <old-key> sang <new-key> */ jedis.renamenx("old-key", "new-key");
Tài liệu tham khảo:
- Tài liệu lệnh Key
Trên đây là tất cả về cách thực hiện thao tác CRUD trên key sử dụng thư viện Jedis. Nếu bạn thấy hữu ích, hãy chia sẻ suy nghĩ của bạn trong phần bình luận và lan tỏa cho người khác nhé.