FireFlyKV使用指南

基本使用

配置 FireFlyKV 根目录

  • 在 App 启动时初始化 FireFlyKV,默认设定 FireFlyKV 的根目录(files/ffkv/ff),例如在 MainActivity 里:

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        FireFlyKV fireFlyKV = FireFlyKV.init(this);
    }
    

CRUD 操作

  • 使用FireFlyKV初始化后返回的对象,操作相关的API:

    import com.cmbc.storage.ffkv.FireFlyKV;
    ...
    
    FireFlyKV fireFlyKV = FireFlyKV.init(this);
    fireFlyKV.putInt("int", 300);
    int iRet = fireFlyKV.getInt("int");
    
    fireFlyKV.putString("key", "value");
    String str = fireFlyKV.getString("key");
    

    可以看到,FireFlyKV 在使用上还是比较简单的。

  • 删除 & 查询

    fireFlyKV.removeValueForKey("boolean");
    
    boolean containsKey = fireFlyKV.containsKey("key");
    
  • 如果业务需要多进程访问,只需在初始化时指定多进程模式即可。

    public static final int SINGLE_PROCESS_MODE = 0;
    public static final int MULTI_PROCESS_MODE = 1;
    
    FireFlyKV fireFlyKV = FireFlyKV.init(this, FireFlyKV.MULTI_PROCESS_MODE);
    fireFlyKV.putString("key", "value");
    String str = fireFlyKV.getString("key");
    

支持的数据类型

  • 支持以下 Java 语言基础类型:

    • byte、short、int、long、float、double、char、boolean
  • 支持以下 Java 类:
    • String

使用进阶

FireFlyKV 有一些高级设置,可以使得更符合你的需求。

自定义根目录

  • FireFlyKV 默认把文件存放在$(FilesDir)/ffkv/ff目录。你可以在 App 启动时自定义根目录:

    String dir = getFilesDir().getAbsolutePath() + "/ffkv2";
    FireFlyKV.init(dir);
    

加密

  • FireFlyKV 默认明文存储所有 key-value,依赖 Android 系统的沙盒机制保证文件加密。如果你担心信息泄露,你可以选择加密 FireFlyKV,只需在初始化FireFlyKV时指定加密方式即可。

    public static final int NONE_ENCRYPT = 0;
    public static final int CC20_ENCRYPT = 1;
    
    FireFlyKV fireFlyKV = FireFlyKV.init(this, FireFlyKV.CC20_ENCRYPT, "chacha20");
    
    fireFlyKV.putInt("int", 300);
    int iRet = fireFlyKV.getInt("int");
    
  • 目前暂提供chacha20加密,后续会进行适当扩展

文件整理

在数据的增删改查过程中,我们会记录无效数据的比例,一旦这个比例超过总数据量的50%,并且数据文件的大小超过500kb,才会触发重整理的工作。当达不到这个条件时,失效的数据不会对性能造成太大的影响,当达到这个条件时,我们会触发重整理的工作,删除失效数据,从而达到节省磁盘空间,增加文件打开和读写的效率。

下一步:

安装指南

性能对比

API参考

Copyright © 民生科技有限公司 2019 all right reserved,powered by Gitbook联系方式: wanglihang@mskj.com
修订时间: 2019-09-03 17:48:17

results matching ""

    No results matching ""