当前位置:网站首页>视野 | KeyDB:为 Web 应用而生的高性能 Redis 分支
视野 | KeyDB:为 Web 应用而生的高性能 Redis 分支
2022-07-30 05:08:00 【RadonDB】
王奇 顾问软件工程师
目前从事 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/KeyDB
设计差异
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/
边栏推荐
- Recursive Optimization of Fibonacci Sequences "Memo Recursion"
- 工具 | 常用 PostgreSQL 预防数据丢失方案
- Nuxt3 learning
- Discourse Custom Header Links
- SVN View Username and Password
- Kyligence 入选 Gartner 2022 数据管理技术成熟度曲线报告
- Let's talk about what SaaS is, and the problems encountered...
- VisualStudio2022本地调试进入特别慢问题解决
- Web page element parsing a tag
- Discourse 自定义头部链接(Custom Header Links)
猜你喜欢

VisualStudio2022 local debugging entry is particularly slow problem solving

为Bitbucket 和 Sourcetree 设置SSL认证

Hexagon_V65_Programmers_Reference_Manual (12)

ThinkPHP高仿蓝奏云网盘系统源码/对接易支付系统程序

GO语言学习笔记一

Small programs use npm packages to customize global styles

Unity3D Application simulation enters the front and background and pauses

Golang channel implementation principle

ThinkPHP high imitation blue play cloud network disk system source code / docking easy payment system program

Dynamic Programming Problems (End)
随机推荐
三、依赖配置管理
SaaS多租户数据隔离的三种解决方案
go语言学习笔记四
Hexagon_V65_Programmers_Reference_Manual(11)
ThinkPHP high imitation blue play cloud network disk system source code / docking easy payment system program
POJ1321 棋盘问题(详解)
Hexagon_V65_Programmers_Reference_Manual (14)
Dynamic Programming Problems (End)
The Double Pointer Problem (Part 1)
VisualStudio2022 local debugging entry is particularly slow problem solving
[High Performance Computing] openMP
String problem (below)
[Android development] Splash interface / user agreement and privacy policy pop-up window / interface development
4. Web Development
Discourse Custom Header Links
uni-app realizes cross-end development of mobile phone Bluetooth to receive and send data
Classification of decision tree classification
Hexagon_V65_Programmers_Reference_Manual(14)
go language study notes 2
C. Travelling Salesman and Special Numbers (binary + combination number)