redis4 | redis5 | redis6 | redis6.2 | |
重大特性 | 1.模块系统 2.PSYNC2 3.LFU淘汰策略 4.混合RDB-AOF持久化 5.LAZY FREE延迟释放 6.MEMORY内存分析命令 7.支持NAT/DOCKER 8.主动碎片整理 | 1.新增Stream数据类型 2.新增Redis模块API:定时器、集群和字典API 3.RDB现在存储LFU和LRU信息 4.集群管理器被从redis-trib.rb移植到redis-cli 5.第二版主动碎片整理 6.升级Jemalloc到5.1版本 | 1.ACL支持 2.Redis现在支持所有通道的SSL 3.支持新协议RESP3 4.服务器端支持的客户端键值缓存 5.IO多线程处理 6.副本实例支持无磁盘复制 7.Redis集群代理 8.Redis的Disque模块 | |
小特性 | 1.RDB支持64位长度 2.SWAPDB无延迟替换同实例下两数据库 3.改进Redis哈希表实现 4.安全改进,映射POST和Host:命令到QUIT命令,以防止跨协议脚本攻击 5.RPUSHX和LPUSHX现在可以接受元素数量的变量 6.重构Redis的许多核心部分 | 1.Sorted Set新增ZPOPMIN/MAX和阻塞版本命令 2.HyperLogLog实现改进 3.内存报告优化 4.一些带子命令的命令增加了HELP子命令 5.在客户端连接和断开频繁的情况提供更好的性能。 6.很多bug修复和其他随机改进 7.新增CLIENT UNBLOCK和CLIENT ID命令 8.增加LOLWUT命令(快速生成一些图形的与技术使用无关的有趣命令) 9.网络层改进 10.LUA改进 11.动态HZ来调整空闲CPU使用率和响应速度 12.Redis核心被重构和改进了许多方面 | 1.模块系统提供了一些新的API,允许模块作者使用新的功能。 2.可以存储任意模块私有数据到RDB文件 3.Redis-benchmark支持Redis Cluster模式 4.SRANDMEMBER等命令提供更好的取值分布 5.Redis-cli提升 6.Systemd支持被重写了 | 1. 导出和载入数据的安全性: 防止损坏数据导致崩溃。有标记来开启 全量 O(N)校验(默认是关闭的) 2. Pub/Sub频道支持 ACL规则 3. Sentinel模式支持 ACL 4. 同时支持从标准输入流和配置文件获取配置,可以避免密钥存储到磁盘上。 5. 新增 SMISMEMBER命令批量检查成员。 6. 新增 ZMSCORE命令返回分数数组 7. 新增 LMOVE 和 BLMOVE命令来任意存取元素 8. 新增 RESET 命令重置客户端连接状态 9. 新增 COPY 命令复制键 10. 新增 ZDIFF 和 ZDIFFSTORE 命令 11. 新增 ZINTER 和 ZUNION 命令 12. 新增 GEOSEARCH/GEOSEARCHSTORE 命令用于绑定矩形查询 13. 新增 GET 命令的参数到 SET 命令,以实现更强大的 GETSET 14. 新增 XPENDING 命令的独占范围查询 15. 新增 X[REV]RANGE 命令的独占范围查询 16. 新增 ZADD 命令的 GT 和 LT 选项以实现条件分数更新 17. 新增 CLIENT INFO 和 CLIENT LIST 命令用于指定 id 18. 新增 IDLE 参数到 XPENDING 命令 19. 新增本地地址到 CLIENT LIST,并且添加 CLIENT KILL 筛选器 20. 新增 NOMKSTREAM 参数到 XADD 命令 21. 新增 introduction命令到Sentinel实例 22. 新增 SENTINEL MYID 子命令 23. redis-cli RESP3协议推送支持 24. redis-cli cluster集群导入支持源和目标支持密码 25. redis-cli URIs 除密码外还可以提供用户名 26. redis-cli/redis-benchmark支持指定首选密码 27. redis-cli 增加 -e选项来在命令执行失败退出时返回的代码 |
不向后兼容的更改/行为变更 | 1.Redis Cluster 总线协议4.0不再兼容Redis 3.2 2.集群CLUSTER NODES命令输出带总线端口信息 3.可写的slave节点不会传播写入到他的下级slave节点 4.RDB格式变了,旧版本不能读取新版本RDB数据 5.日志格式及句子变化 6.GEODIST、GEOPOS和GEOHASH对于不存在的键的返回值变了 7.SLOWLOG命令条目新增客户端地址和名称字段 | 1.RDB格式变化 2.日志格式及句子变化 3.LUA脚本只会根据它们的效果进行复制,而不是发送EVAL/EVALSHA到从节点或AOF日志本身 | SPOP <count> 命令在key不存在的时候,不回返回null了,现在它返回空集合,并且参数是0时,也返回空集合 | 1. EXISTS不会改变Key的LRU信息(#8016) 2. OBJECT不会暴露逻辑过期的键(#8016) 3. 提升SELECT和MOVE命令的数据库id的检查范围,调整了数据库索引错误返回的错误信息 4. 调整 AUTH / HELLO 的错误信息,修改了用户不存在或用户被禁用后的错误信息提示 5. BITOPS 长度限制为proto_max_bulk_len而不是512MB(#8096) 6. GEORADIUS[BYMEMBER] 出现内存超限的情况可以失败返回-OOM。 7. 选择性地(默认)失败启动,如果请求的绑定地址不可用(#7936) 8. 限制主db字典扩展以防止键退出(#7954) 9. CONFIG REWRITE是原子的和安全的,但是需要写入配置文件的文件夹(#7824,#8051) 10. 增加一个增量eviction机制,减少eviction峰值的延迟(#7653) 11. 当Redis使用命令行参数启动时,不重置“save”配置(#7092) 12. 在您使用命令行参数启动时,如果未“save”的配置,现在默认的“save”配置将被启用。 13. 在实例Loading时会更新INFO命令的内存指标(#7690) 14. 当“supervised”配置启用时,它优先于“daemonize”。(#8036) 15. 断言和panic,打印crash日志而不生成SIGSEGV(#7585) 16. 在SIGABRT时增加崩溃日志报告,而不是静默退出。 17. 如果启用了THP (大页配置)则禁用。 |
bug修复 | 1. 处理输出缓冲区限制的模块阻塞客户端(#8141) 2. 修复setproctitle(设置进程名称python操作)相关的崩溃。(#8150,#8088) 3. 一个模块执行RM_Call操作时可能导致副本实例嵌套MULTI(#8097) 4. 在repl-diskless-load=swapdb时,将备份/还原集群模式的键到槽的映射#8108) 5. 修复oom-score-adj-values范围,以及在配置文件中使用时出现的bug(#8046) 6. 当清空的数据库时重置平均ttl(#8106) 7. 禁用rehash,当Redis有子进程时(#8007) 8. 进一步改进了用于选择类别的ACL算法 9. 修复GIL模块过早释放的问题 10. 修复了无FirstKey的模块命令的集群重定向(#7539) 11. 降低在key移除时对客户端的反馈环节的影响。 12. 当所有的副本丢弃并且“save”没有启用时,磁盘基础的fork子进程将被杀死(#7819) 13. 重写的命令被记录为它的原始命令(#8006) 14. 修复集群访问不对齐内存问题(旧的ARM架构为SIGBUS)(#7958) 15. 如果无磁盘复制的子进程被杀死,确保能获取到子进程的id(#7742) 16. 当slot的迁移完成时,广播一个PONG消息,可以减少MOVED返回(#7571) | |||
改进 | 1. 在redis-benchmark中支持TLS(#7959) 2. 加速无磁盘复制主连接和一般的重新连接(#6271) 3. 在阻塞或加载数据时运行主动碎片整理 4. 性能和内存使用情况的改进 - sds自己控制其内部碎片(#7875) 5. 可选的(非默认配置)使用H/W Monotonic时间采样(#7644) 6. 删除编译器对C11和_Atomic支持的的需求(#7707) 7. 修复ARM的崩溃日志输出。(#8020) 8. 树莓派系统编译修复。(#8095) 9. 设置进程标题支持Haiku(操作系统)。(#8060) 10. DragonFlyBSD RSS内存采样支持。(#8023) 11. 支持配置OpenSSL使用标准openssl.cnf(#8143) 12. oom-score-adj-values配置可以现在接受绝对值(除了相对值)(#8046) 13. TLS:添加不同的客户端证书支持。(#8076) 14. 上面列出的其他一些更改添加了其配置选项。 15. 添加INFO字段跟踪磁盘无磁盘复制和磁盘复制进度(#7981) 16. 添加INFO字段主线程CPU时间,并采集系统时间。(#8132) 17. 添加total_forks字段到INFO STATS(#8155) 18. 添加maxclients和cluster_connections字段到INFO CLIENTS(#7979) 19. 添加跟踪bcast(广播地址)标志和客户端重定向信息到 client list(#7995) 20. 修复INFO client_recent_max_input_buffer包含argv数组的问题(#8065,参见#7874) 21. 上面列出的其他一些更改添加了其info字段。 22. 添加CTX_FLAGS_DENY_BLOCKING作为一个统一的方式来知道是否允许阻塞(#8025) 23. 惰性删除和unlink增加返回数据类型(#7912) 24. COPY命令增加数据类型返回(#8112) 25. 碎片整理增加数据类型返回(#8149) 26. 增加repl-diskless-load swapdb模块事件(#8153) 27. 移动RMAPI_FUNC_SUPPORTED,使其可用(#8037) 28. 提高定时器精度(#7987) 29. 允许“\0”在出现RM_CreateStringPrintf的结果中(#6260) |