参考文档
https://github.com/antirez/redis/blob/3.0/00-RELEASENOTES
https://github.com/antirez/redis/blob/3.2/00-RELEASENOTES
https://github.com/antirez/redis/blob/4.0/00-RELEASENOTES
Migrating from 2.8 to 3.0
- Redis集群分布式功能实现
- 支持multi-key操作(只要键解析到相同的散列槽,并且key所在的槽没有迁移,或者没有正在迁移)
- 新增命令:bitpos
- CONFIG REWRITE calls are now logged
- 更改fsync停写策略:如果fsync策略为零或每秒钟,AOF写入错误(比如设备上没有空间)不再中止Redis,数据库进入只读模式,其中每次写操作都以错误拒绝。一旦Redis能够再次将数据刷入到AOF文件,就恢复正常的操作
- 脚本性能提升:Scripting engine performances improvements.
- 加载truncated aof文件策略更改:Redis现在可以加载truncated AOF文件而不需要运行redis-check-aof。配置默认加载truncated(但显然没有损坏)AOF
- Thp日志增加:Transparent Huge Pages warnings and reporting backported.
- New latency tool: redis-cli --latency-dist is able to show an xterm-256 based spectrum of latencies over time.
- redis-cli --lru-test implemented (cache workload simulator).
- redis-cli --stat now shows LOAD when Redis is loading data.
- 性能提升:New "embedded string" object encoding resulting in less cache misses.
在某些工作负载下获得较大的速度增益。 - 优化aof rewrite:通过管道的方式最小化由于AOF重写期间的“上一次写入”造成的延迟
- 改进了LRU近似算法
- WAIT命令:此命令阻塞当前客户端,直到所有以前的写命令都成功的传输和指定的slaves确认。
- BITCOUNT性能提升
- CONFIG SET accepts memory values in different units (for example you can use "CONFIG SET maxmemory 1gb")
- INCR性能提升
- 主从复制时,修改slave端机制性能提升:握手阶段改成非阻塞
Migrating from 3.0 to 3.2
- Jemalloc:提升版本;修改jemallocn size对redis对象更适合,从而提高效率;
- 默认开启tcpkeep
- 修改ttl和type机制:不在修改last access time of a key
Migrating from 3.2 to 4.0
- Slowlog增加了两个字段:the client address and name
- The RDB format changed. Rdb:向下兼容而不是向上兼容
- Writable slaves do not propagate writes to their sub-slaves
- Cow耗费的内存将在info中显示
- 增加swapdb命令
- 改进rdb格式以支持64位
- 提升Redis hash table性能
- RPUSHX and LPUSHX now accept a variable number of elements
- 支持jemalloc动态碎片整理
- Redis使用更少的内存,存储相同数量的数据:Redis uses now less memory in order to store the same amount of data. The gain depends a lot on the kind of dataset stored.
- 支持混合 RDB-AOF 持久化格式
- 新MEMORY命令,能够执行不同类型的内存分析:内存问题的故障排除(使用MEMORY DOCTOR,类似于LATENCY DOCTOR),报告单个key使用的内存量,与INFO命令相比更深入地报告Redis内存使用情况。
- lasy删除:Lazy freeing of keys. Redis is now able to delete keys in the background in a different thread without blocking the server. The new
UNLINK
command is the same asDEL
but working in a non blocking way. Similarly anASYNC
option was added toFLUSHALL
andFLUSHDB
in order to let the entire dataset or a single database to be freed asynchronously. - 增加lfu算法
- Redis modules: Redis functionalities and implement new data types(允许业务定制扩展)
- Psync2:https://moji.wemomo.com/doc#/detail/62516?exit=exit
1).在旧版本 Redis 中,如果一个从服务器在 FAILOVER 之后成为了新的主节点,那么其他从节点在复制这个新主的时候就必须进行全量复制。在 Redis 4.0 中, 新主和从服务器在处理这种情况时,将在条件允许的情况下使用部分复制。
2). 在旧版本 Redis 中, 一个从服务器如果重启了, 那么它就必须与主服务器重新进行全量复制, 在 Redis 4.0 中, 只要条件允许, 主从在处理这种情况时将使用部分复制。
3). 新版本的Redis中,一个主库节点可以做部分复制新主库节点,如果这个新的主库节点是该节点以前的从节点。支持角色互换。 - HMSET被弃用(但将在未来几年得到支持,请在新代码中使用HSET)。
为了兼容docker/nat,4.0协议与3.2协议不同。所以要升级到4.0,集群需要全部重新重启。
网友评论