Redis–数据持久化

Redis 的数据格式由“键”和“值”两部分组成。而“值”又支持很多数据类型,比如字符串、列表、字典、集合、有序集合。像字典、集合等类型,底层用到了散列表,散列表中有指针的概念,而指针指向的是内存中的存储地址。 那 Redis 是如何将这样一个跟具体内存地址有关的数据结构存储到磁盘中的呢?

两种思路:

  1. 清除原有的存储结构,只将数据存储到磁盘中,当我们需要从磁盘还原数据到内存的时候,在重新将数据结构组织成原来的 数据结构,(Redis就是采取这种)

    不过,这种方式会有一定的弊端,那就是数据从硬盘还原到内存的过程,会消耗比较多的时间。比如,我们现在要将散列表存储到磁盘中。当偶们从磁盘中取出数据重新构建散列表时,需要重新即使算每个数据的哈希值。如果磁盘中存储的是几GB的数据,那么重构数据结构的耗时就不可忽视了

  2. 保留原来的格式,将数据按照原有的格式存储在磁盘中。我们拿散列表这样的数据结构来举例。我们考研将散列表的大小、每个数据被散列到的槽的编号等信息,都保存在磁盘中。有了这些信息,我们从磁盘中将数据还原到内存中,就可以避免重新计算哈希值