redis - 使用 Redis 进行垂直缩放
问题描述
鉴于 Redis“主要是单线程”,我想知道在垂直扩展 Redis 方面是否会有足够的收益,而不是像 Memcached(多线程)这样的东西?
两者都可以通过向集群添加额外的节点/实例来水平扩展。但是,我想知道 Memcached 在垂直扩展时是否会因为它是多线程的而获得更显着的收益?
解决方案
这两个系统都将允许您以“非常高”的比例垂直扩展......但是如果没有有关应用程序的信息,很难回答任何规模和行为问题:
- 数据库/缓存的大小
- 键的数量和键的大小和值
- 操作的类型以及预期的吞吐量和延迟
例如,作为一个非常基本的起点,您可以毫无顾忌地使用 25.000 操作/秒且延迟非常低(<1ms)的 25Gb Redis 实例...... (但如果您的值是 120Mb 作为网络将受到广泛影响,但这可能是一个非常糟糕的主意)
此外,您还必须考虑到 Redis 不仅仅是一个简单的键值存储,它具有各种数据类型(字符串、哈希、集合/排序集、...和流),还有持久性选项和丰富的模块FullTextSearch/Indexing、Graph、TimeSeries、...的数据库
您可以使用'Memtier Benchmark'轻松地针对 Redis 运行一些基准测试。
因此,我认为从“redis vs memcache”内部来看问题不是一个好方法,而是专注于您的用例和数据集。
也就是说,Redis 6.0为 I/O 引入了一个新的线程模型,这使得 Redis 比以前更快。
推荐阅读
- java - Selenium:在 Chrome 浏览器的移动视图和桌面视图之间切换
- javascript - 用 JavaScript 表示表格矩阵数据
- javascript - 使用 JS/Jquery 在所有图像上添加显式宽度和高度
- sql - 查找两个日期之间缺失的日期范围
- sql - 在 postgresql 中创建视图
- python - 我怎样才能改善这段代码的运行时间?
- kde - 从 VNC 查看器连接到 KDE 桌面
- c++ - 使用来自另一个标头的类的标头中的 C++ 语法错误
- elasticsearch - 每个节点有多少个分片?
- amazon-web-services - 如何将 Jenkins 中的 AWS s3Upload 复制为一批文件(一次不只是一个文件)?