0 Star 0 Fork 0

风雨bu改 / PDCache

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 4.78 KB
一键复制 编辑 原始数据 按行查看 历史
风雨bu改 提交于 2023-01-19 22:52 . 调整打包方式

PDCache

java library JDK 14 Gradle 6.5 Apache 2

-- Java Doc --


简介

轻量级,高可靠,易学习的数据缓存工具

用法示例

如果你熟悉缓存的概念,将会让你非常容易学习本工具。

> > 基础示例

Cache 对象用于缓存单独一个对象,不过貌似并不常用到,但是其实现最简单,而且使用起来方便

public static
void main(String[] args) {
    // 构造缓存对象,内部默认为 SoftReference 软引用,被缓存的对象为 String
    Cache<String> cache = PDCache.Cache(String.class).build();
    try {
        // 存入要缓存的对象
        cache.set("hello word");

        // 取出之前缓存的对象
        String s = cache.get();
    } catch ( Exception e ) {
        e.printStackTrace();
    }
}

> > Map示例

MapCache 中的缓存实现部分与 Cache 中的理念相同,但是实现相对复杂一点,与 Map 一样的 键->值 存储,不过与 WeakHashMap 不同的是,其中被缓存的是 值 而不是 键

WeakHashMap 中决定是否丢失缓存的是 键 是否有引用,而 MapCache 中决定是否丢失缓存的是 值 是否有引用

public static
void main(String[] args) {
    // 构造缓存对象,内部默认为 SoftReference 软引用
    MapCache<String, String> cache = PDCache.MapCache(String.class, String.class).build();
    try {
        // 存入要缓存的对象
        cache.put("h", "hello word");

        // 取出之前缓存的对象
        String s = cache.get("h");
    } catch ( Exception e ) {
        e.printStackTrace();
    }
}

变形示例

其中有一些特殊的缓存工具,这里只介绍 Cache 和 MapCache 的自填充变形,其他的请前往 wiki

自填充变形分别叫做 SCache 和 SMapCache,所谓自填充,就是取数据时如果对应的缓存对象已经被释放,则自己重新生成,该类缓存的 put 和 set 方法已经被删除。

以 SMapCache 为例,这个是我用的最多的类,构造时需要额外调用构造器的 createdata 方法传入一个生成接口,该接口在对应的缓存为空时被调用,传入当前取值的 键,并要求返回对应的 值,缓存对象将会用该值进行填充

public static
void main(String[] args) {
    // 构造缓存对象,内部默认为 SoftReference 软引用
    SMapCache<String, String> cache = PDCache.SMapCache(String.class, String.class)
                                             // 指定的生成方法,返回 "key:[键]"
                                             .createdata(v -> "key:" + v).build();
    try {
        // 取出来的是 "key:h"
        String s = cache.get("h");
    } catch ( Exception e ) {
        e.printStackTrace();
    }
}

如果熟悉 Cleaner 和 Reference 对象、软引用、弱引用 等将会使你更懂本工具的一些高级用法,因为本工具中的缓存功能是靠 Reference 实现,TimeMapCache 除外

并且使用了 Cleaner 意味着缓存被回收时可以有回调,但是要求该回调要从被缓存的对象内获取,也就是要求被缓存的对象必须继承一个接口,该接口只有一个方法,用来抛出回调对象

最好熟悉我的 并发工具 PDConcurrent ,本工具所有方法均为并发安全,并且完全托管给 PDConcurrent 工具进行并发管理

使用方法

请导入其 jar 文件,文件在 发行版 或项目的 jar 文件夹下可以找到

PDCache.jar 为不包含依赖库的包

PDCache_bin.jar 为包含了依赖库的包

PDCache_all.jar 为包含了依赖库与源码的包

PDCache_sources.jar 为仅包含源码的包

发行版中可以看到全部版本
项目下的 jar 文件夹是当前最新的每夜版

依赖的同系列的项目

包含源码的 jar 包均包含同系列依赖库的源码

可通过 WIKIjava doc 或者 测试类 查看示例,并深入学习本工具

分支说明

dev-master:当前的开发分支,可以拿到最新的每夜版 jar

releases:当前发布分支,稳定版的源码


提供bug反馈或建议

Java
1
https://gitee.com/fybug/PDCache.git
git@gitee.com:fybug/PDCache.git
fybug
PDCache
PDCache
master

搜索帮助