前言
我们在 从零手写 cache 框架(一)实现固定大小的缓存 中已经初步实现了我们的 cache。
我们在 从零手写 cache 框架(一)实现过期特性 中实现了 key 的过期特性。
本节,让我们来一起学习一下如何实现类似 redis 中的 rdb 的持久化模式。
持久化的目的
我们存储的信息都是直接放在内存中的,如果断电或者应用重启,那么内容就全部丢失了。
有时候我们希望这些信息重启之后还在,就像 redis 重启一样。
load 加载
说明
在实现持久化之前,我们来看一下一个简单的需求:
如何在缓存启动的时候,指定初始化加载的信息。
实现思路
这个也不难,我们在 cache 初始化的时候,直接设置对应的信息即可。
api
为了便于后期拓展,定义 ICacheLoad 接口。
public interface ICacheLoad<K, V> {
/**
* 加载缓存信息
* @param cache 缓存
* @since 0.0.7
*/
void load(final ICache<K,V> cache);
}
自定义初始化策略
我们在初始化的时候,放入 2 个固定的信息。
public class MyCacheLoad implements ICacheLoad<String,String> {
@Override
public void load(ICache<String, String> cache) {
cache.put("1", "1");
cache.put("2", "2");
}
}
测试
只需要在缓存初始化的时候&#