redis重启会清除数据吗_从零开始手写 redis(三)内存数据重启后如何不丢失?...

本文介绍了从零开始手写Redis的持久化过程,通过模拟RDB模式实现缓存数据在重启后不丢失。文章讨论了持久化的目的,提供了初始化加载和缓存持久化到文件的实现思路,包括接口定义、简单实现以及定时执行策略。此外,还展示了文件效果并提出了优化点,如文件压缩和AOF模式,以达到企业级缓存需求。
摘要由CSDN通过智能技术生成

53a258f15d122c3d26a87516f8fdb43e.png

前言

我们在 从零手写 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");
    }

}

测试

只需要在缓存初始化的时候&#

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值