一、MMKV 是什麼
MMKV 是由微信團隊開源的一款高效、簡單易用的 Key-Value 存儲框架,其主要特點有:
- 支持多線程並發讀寫,存儲效率高
- 支持自動序列化, no-compile, no-code,方便易用
- 底層採用 mmap(內存映射) 技術實現,讀寫效率更高
- 支持 AES 256 位加密
使用 MMKV 可以在不需要資料庫的情況下,輕鬆實現數據的本地緩存。
二、如何使用
MMKV 的使用非常簡單,只需要添加依賴之後,即可進行數據的讀寫。
<!-- 添加依賴 -->
<dependency>
<groupId>com.tencent:mmkv</groupId>
<artifactId>mmkv-static</artifactId>
<version>1.2.2</version>
</dependency>
// 初始化MMKV
MMKV.initialize(this);
// 存儲數據
MMKV mmkv = MMKV.defaultMMKV();
mmkv.encode("key", "value");
// 讀取數據
String value = mmkv.decodeString("key");
三、支持的數據類型
MMKV 支持以下數據類型的存儲:
- String
- int
- long
- float
- double
- boolean
- byte[]
- Set<String>
- 自定義對象
其中,自定義對象需要實現 Parcelable 介面以支持序列化。
四、多線程並發讀寫
MMKV 支持多線程並發讀寫,可以在多個線程中同時操作 MMKV 存儲的數據。
// 多線程並發寫入
ExecutorService executorService = Executors.newFixedThreadPool(5);
for (int i=0;i<5;i++){
executorService.execute(new Runnable() {
@Override
public void run() {
for (int j=0;j<50;j++){
mmkv.encode("key"+j, "value"+j);
}
}
});
}
executorService.shutdown();
executorService.awaitTermination(1, TimeUnit.MINUTES);
// 多線程並發讀取
ExecutorService executorService = Executors.newFixedThreadPool(5);
for (int i=0;i<5;i++){
executorService.execute(new Runnable() {
@Override
public void run() {
for (int j=0;j<50;j++){
String value = mmkv.decodeString("key"+j);
Log.d(TAG, "value="+value);
}
}
});
}
executorService.shutdown();
executorService.awaitTermination(1, TimeUnit.MINUTES);
五、mmap技術
MMKV 底層採用 mmap 技術實現,通過將文件映射到進程的地址空間內,可以實現高效的讀寫操作。
在 MMKV 中,mmap 技術的使用可以優化數據的 I/O 性能,提升存儲效率。
六、AES 256 位加密
MMKV 支持採用 AES 256 位加密存儲數據,可以有效保障數據的安全性。
// 使用AES 256位加密保存數據
MMKV mmkv = MMKV.mmkvWithID("MyData", MMKV.MULTI_PROCESS_MODE);
byte[] bytes = "secret data".getBytes();
byte[] key = "password".getBytes();
mmkv.encode("key", bytes, key);
// 使用AES 256位加密讀取數據
byte[] decodedBytes = mmkv.decodeBytes("key", null, key);
七、總結
Android MMKV 是一個高效、簡單易用的 Key-Value 存儲框架,實現了多線程並發讀寫、mmap 技術、AES 256 位加密等多項特性,非常適合進行本地數據的存儲。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/231692.html