王奇 参谋软件工程师
目前从事 PaaS 中间件服务(Redis / MongoDB / ELK 等)开发工作,对 NoSQL 数据库有深刻的钻研以及丰盛的二次开发教训,热衷对 NoSQL 数据库畛域内的最新技术动静的学习,可能把握行业技术发展趋势。
随着 Web 2.0 的一直倒退,业务需要也一直变动。Redis 是一款诞生于 2009 年的高性能内存键值数据库,在近十年的互联网架构中承当了不可代替的作用,实现了很多简单的业务需要,深受技术爱好者的青睐。近些年 Web 3.0 概念的提出也为 Redis 提出了更高的挑战。
背景
最近客户提出一个问题:
Redis 是否在不减少资源的场景下明显提高 QPS?
这是个看似不合理的问题,用户的需要是 QPS 进步,但不减少资源投入。个别进步 QPS 的思路大多是横向扩大,集群节点数越多 QPS 就越高,但老本也就越高。如果想要达成这个诉求,那 KeyDB[1] 兴许是一个不错的抉择。
KeyDB 简介
图片起源:https://keydb.dev/
KeyDB 是 Redis 的分支,专一于多线程、内存效率和高吞吐量。除了多线程之外,KeyDB 还具备仅在 Redis Enterprise 中能力应用的性能,例如:Active Replication、FLASH 存储,间接备份到 S3,且对 Redis 齐全兼容。
仓库地址:https://github.com/EQ-Alpha/K…
设计差别
Redis 是采纳单线程设计的榜样,在效率和性能之间有独特的设计逻辑。
KeyDB 将 Redis 主线程拆分为主线程和 Worker 线程 。其中,每个 Worker 线程都是一条 I/O 线程,负责监听端口和 Accept 申请,优化读取数据和解析协定,可大幅度晋升 I/O 性能。
性能劣势
1、跨域多主
KeyDB 反对多个异步复制架构的主节点彼此同步。反对复制架构中所有节点都是主节点,不须要哨兵监控节点。在 Redis 原有的高可用架构之外,又减少了新的架构思路。
2、垂直和程度缩放
KeyDB 是多线程设计,能够反对垂直 / 程度扩大,最大化资源利用率。对于那些 Redis 实例达到设施上线的状况,这是一个很好的替代选择。应用规范 KeyDB 节点最多可无效应用 10 个内核,启用 TLS 时可无效应用 16 个内核!
3、更不便的生存工夫设置
KeyDB 提供了 Subkey EXPIRE,能够准确设置汇合中成员的过期工夫。EXPIREs 当初还具备近乎实时的被动删除性能。
4、TLS 加密
KeyDB 提供 TLS 反对,其吞吐量是 Redis + TLS 的 7 倍!
尽管 TLS 加密减少了额定的 CPU 开销,但 KeyDB 的多线程架构反对更多的工作线程来避免性能降落。
5、ModJS
能够应用 KeyDB 开源的 Javascript 模块创立自定义命令。建设在弱小的 V8 JIT 引擎之上,ModJS 比 LUA 更快,并反对许多 node.js 模块,为常见工作提供宽泛的库反对。
6、ARM 反对
KeyDB 反对 ARM。
性能劣势
图片起源:KeyDB 官网
总结
兴许您对官网的性能数据存疑,下一期咱们将对 KeyDB 和 Redis 进行更全面的性能测试,心愿给客户的发问一个更全面的答复,敬请期待。
参考援用
[1]:KeyDB:https://keydb.dev/