free page hit counter

Lưu dữ liệu tạm siêu nhanh với MMKV

Trong quá trình phát triển ứng dụng, bài toán thường gặp nhất là bài toán lưu trữ dữ liệu tạm như configs, http response hoặc một “cờ” bật tắt tính năng nào đó. Khi đó chúng ta thường nghĩ ngay đến giải pháp đơn giản nhất là sử dụng SharedPreferences, nó giúp chúng ta xử lý bài toán vô cùng đơn giản, nhỏ gọn và tiện lợi.

Mọi chuyện sẽ chẳng có vấn đề gì cho đến khi bài toán của ứng dụng mở rộng hơn. Ví dụ như:

Làm thế nào để mã hoá dữ liệu trong SharedPreferences?

Làm thế nào để lấy dữ liệu từ nhiều process khác nhau?

Làm sao để lưu những tập dữ liệu lớn hơn?

Làm sao để tăng tốc độ đọc/ghi?

Đến đây chúng nhận ra những điểm bất lợi của kỹ thuật quen thuộc này. Lý do là SharedPreferences được lưu dưới dạng file với tên tương ứng. Dung lượng giới hạn của file này vào khoảng 1.42MB, với dung lượng này khi gặp các bài toán liên quan đến việc Cache Response hoặc các data lớn được mã hoá dưới dạng String thì sẽ gặp vấn đề.

Để giải quyết vấn đề này, Tecent – một hãng công nghệ lớn ở Trung Quốc đã sáng tạo ra một thư viện có tên là MMKV – Thư viện mà chúng ta sẽ tìm hiểu ngay sau đây.

MMKV có các ưu điểm sau:

  • Tốc độ đọc ghi nhanh
  • Hỗ trợ đọc/ghi dữ liệu giữa các Thread, Service khác nhau
  • Hỗ trợ mã hoá dữ liệu
  • Dễ dàng sử dụng
  • Là một thư viện nhưng khá nhẹ nhàng, chỉ chiếm 50KB dung lượng của ứng dụng

Hiệu năng

Tốc độ của thư viện rất đáng để chú ý. Khi lên bàn cân đo về tốc độ so với người đàn anh SharedPreferences thì MMKV chiến thắng áp đảo với tốc độ vượt trội.

Bảng so sánh tốc độ ghi của MMKV so với cách thông thường
Benchmark của MMKV so với các phương pháp khác

Như bạn đã thấy, MMKV đã chiến thắng ở tất cả các mặt trận liên quan đến Hiệu năng. Vậy chúng ta bắt đầu tìm hiểu xem, cách sử dụng của một thư viện mạnh mẽ này như thế nào nhé 🥰.

Cách dùng

Đầu tiên, bạn import vào Gradle của app

dependencies {
    implementation 'com.tencent:mmkv-static:1.2.4'
}

Sau đó bạn init tại method onCreate của Application

public void onCreate() {
    super.onCreate();

    String rootDir = MMKV.initialize(this);
    System.out.println("mmkv root: " + rootDir);
}

Tiếp theo thì bạn dùng như SharedPreferences

import com.tencent.mmkv.MMKV;
    
MMKV kv = MMKV.defaultMMKV();

kv.encode("bool", true);
boolean bValue = kv.decodeBool("bool");

kv.encode("int", Integer.MIN_VALUE);
int iValue = kv.decodeInt("int");

kv.encode("string", "Hello from mmkv");
String str = kv.decodeString("string");

Link GitHub: https://github.com/Tencent/MMKV

Tham khảo

https://github.com/Tencent/MMKV/wiki/android_benchmark

Loading

Là một người thích chia sẻ, tôi tạo ra blog này để mọi người - đặc biệt là các bạn mới vào nghề biết thêm được những kiến thức hữu ích. Rất mong nó sẽ có ích với bạn.
Back To Top