持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第9天,点击查看活动详情
此前闹得沸沸扬扬Dragonfly,不知道jym听说没有。
Dragonfly为最近的开源的内存数据缓存系统,用 C/C++ 编写。据说Dragonfly 可能是世界上最快的内存存储系统,它提供了对 Memcached 和 Redis 协议的支持,但能够以更高的性能进行查询,运行时内存消耗也更少。与 Redis 相比,Dragonfly 在典型工作负载下实现了 25 倍的性能提升。
对此Redis官方回应,请用Redis7.0对比。好的,我们就一起来学习Redis7.0的新特性。
Redis7.0新特性:
- 新增Function自定义函数库,函数库支持持久化与可复制。
- Lua脚本(脚本本身代码)不再支持持久化和复制,仅对命令执行结果进行持久化和复制。
- ACL支持对Pub/Sub channel的权限控制。
- 支持Multi-Part AOF。
- 支持Client-Eviction。
- 支持Sharded-Pub/Sub。
- 支持命令执行耗时直方图。
- 支持子命令级别的性能统计。
- Ziplist编码替换为Listpack编码。
- 支持Global Replication Buffer。
性能提升
我们比较关注的性能提升,来look look:
- Hash、List、ZSet 这些数据结构底层本来是依赖 ziplist 的,在这个版本里面,已经修改成了 listpack。
- 列表(List)的数据类型可以存储超过4GB的单个元素
- 降低了copy-on-write期间的内存使用
- 在使用大量散列(Hash)或者有序集合(Zset)时节省了大量的内存
官方:
我给jym翻译一下:
新增命令
新增ZMPOP, BZMPOP,LMPOP, BLMPOP等新命令,对于EXPIRE和SET命令,新增了更多的命令参数选项。 例如,ZMPOP的格式如下: ZMPOP numkeys key [key ...] MIN|MAX [COUNT count],而BZMPOP是ZMPOP的阻塞版本。
更多命令请查看Redis官方文档
配置更新
-
允许忽略副本上的磁盘持久性错误(#10504)
-
当副本无法执行主机发送的命令时,允许死机中止(#10504)
-
允许配置SIGTERM和SIGINT的关闭标志(#10594)
-
允许将操作系统特定标识符附加到Redis套接字(#10349)
7.0版本更新内容更多详情请查看官方文档
Redis VS Dragonfly
说了这么多,Redis和Dragonfly到底谁更牛掰呢?当然是Redis。和Redis7比较,Redis 的吞吐量比 Dragonfly高 18% - 40%。
7.0.1更新特性:
- 添加怀疑系统时钟源设置缓慢的警告
- 添加--检查系统命令行选项。(#10636)
- 允许只读脚本(*_RO命令和没有写入标志的命令)
- 在客户端暂停写入期间(#10744)
- 在EVAL_RO、EVALSHA_RO和FCALL_RO的COMMAND命令中添加只读标志(#10728)
- redis服务器命令行参数现在接受一个带空格的字符串对于多参数配置(#10660)
官方目前已经更新到7.0.5
各版本更新内容请看 Redis发布更新内容