(原文地址:github.com/sripathikri… )
Redis dump文件是100%向后兼容的。老版本的转储文件格式将始终可以在新版本的Redis中使用。
版本9 - redis 5.0
添加以下内容:
- 新建流数据类型Stream
- RDB可以包含keys的LRU或LFU
- RDB可以包含模块AUX字段
版本8 - redis 4.0
添加以下内容:
- 新模块数据类型
- 排序集zset存储二进制双精度值而不是字符串
版本7-redis 3.2
添加以下内容:
- 新的QuickList编码
- 具有元数据的新的AUX字段
- 新的DBSIZE操作码
版本6-redis 2.8
在以前的版本中,ziplist使用整数的可变长度编码方案。
整数以16、32或64位存储。在此版本中,此可变长度编码系统已得到扩展。
添加以下内容:
- 整数0至12(包括两端)现在被编码为条目标头的一部分
- -128和127之间(包括两端)的数字存储在1个字节中
- -2 ^ 23和2之间的数字^ 23 -1(含两端)存储在3个字节中
要迁移到版本5:
- 在redis.conf中,设置
list-max-ziplist -entries到0 - 重新启动Redis Server,并发出
SAVE命令 - 编辑dump.rdb文件,并将标头中的rdb版本更改为
REDIS0005
版本5-Redis 2.4
此版本在文件末尾引入了8字节的校验和(CRC-32)。如果在redis.conf中禁用了校验和,最后8个字节将为零。
迁移到版本4-
- 删除文件的最后8个字节(即在字节'0xFF'之后)
- 更改标头中的rdb版本到“ REDIS0004”
版本4
此版本引入了hashmap的新编码-“hashmap编码为Zip lists”。此版本还弃用了先前版本中使用的Zipmap编码。
“编码为ziplist的hashmaps”的编码类型=13。该值像ziplist一样进行解析,并且列表中的相邻条目被视为哈希图中的键=值对。
Issue ID:github.com/antirez/red…
要迁移到版本3-
- 在redis.conf中,将
hash-max-ziplist-entries'设置为0 - 重新启动Redis Server,然后发布
SAVE命令 - 编辑dump.rdb文件,并将头文件中的rdb版本更改为
REDIS0003
版本3
此版本引入了以毫秒为单位精度的key过期时间。
较早的版本以“ 0xFD <4字节时间戳>”格式存储key过期时间。在版本3中,key过期时间存储为0xFC <8字节时间戳记>。此处,0xFD和0xFC是分别以秒和毫秒为单位指示key到期的操作码。
Issue ID:github.com/antirez/red…
要迁移到版本2-
- 如果不使用key过期,只需将标头中的版本更改为
REDIS0002 - 如果使用key过期后,您仍然可以迁移,但是到期精度会有所损失。另外,迁移涉及到一个字节。
- 对于转储文件中的每个key=value对,您必须将“ 0xFC <8字节时间戳>”转换为“ 0xFD <4字节时间戳>”。
- 转换时间戳后,将标头中的版本更改为“ REDIS0002”
版本2
此版本引入了针对小型hashmaps,lists和sets的特殊编码。
具体来说,它引入了以下编码类型- REDIS_RDB_TYPE_HASH_ZIPMAP = 9
REDIS_RDB_TYPE_LIST_ZIPLIST = 10
REDIS_RDB_TYPE_SET_INTSET = 11
REDIS_RDB_TYPE_ZSET_ZIPLIST = 12
Commit:github.com/antirez/red…
迁移到版本1-
- 在redis.conf中,将以下属性设置为0
hash-max-zipmap-entries,list-max-ziplist-entries,set-max-intset-entries,zset-max-ziplist-entries - 重新启动Redis,并发出SAVE命令
- 编辑dump.rdb文件,并将标头中的rdb版本更改为
REDIS0001。