ruby-on-rails - Redis 比 Postgres 快多少?

标签 ruby-on-rails postgresql heroku redis benchmarking

在网上进行一些研究后,我找不到太多两者之间的基准比较。我确实找到了一个 redis vs mongodb:( How much faster is Redis than mongoDB? )。

根据我接下来的极其不科学的测试,在 Rails 中运行两个简单的非相等代码,我猜写操作大致相同,但 Redis 的读取速度大约快 2 倍。速度优势没有我想象的那么大,考虑到我的观点通常是 50ms~150ms。

我的问题是,是否还有其他基准可以让我对这两者有一个“粗略”的了解?通过两者的约定配置,甚至可以针对 heroku basic dyno 及其 postgres 服务对其进行测试?谢谢!

##NOTICE: #follow is implemented with Redis. #public is just a postgres ActiveRecord property.
[93] pry(main)> Benchmark.measure{ 100.times { c.public = !c.public; c.save; c.public = !c.public; c.save}}
=> #<Benchmark::Tms:0x007faeb3c814f0
 @cstime=0.0,
 @cutime=0.0,
 @label="",
 @real=0.743117,
 @stime=0.03000000000000025,
 @total=0.6000000000000005,
 @utime=0.5700000000000003>
[94] pry(main)> Benchmark.measure{ 100.times { u.unfollow! u2; u.follow! u2 }}
=> #<Benchmark::Tms:0x007faeb1409c20
 @cstime=0.0,
 @cutime=0.0,
 @label="",
 @real=0.988483,
 @stime=0.14000000000000057,
 @total=0.8800000000000026,
 @utime=0.740000000000002>
[95] pry(main)> Benchmark.measure{ 100.times { u.follows? u2 }}
=> #<Benchmark::Tms:0x007faeb2f22ea8
 @cstime=0.0,
 @cutime=0.0,
 @label="",
 @real=0.045072,
 @stime=0.009999999999999787,
 @total=0.06000000000000405,
 @utime=0.05000000000000426>
[96] pry(main)> Benchmark.measure{ 100.times { Course.first.public? }}
=> #<Benchmark::Tms:0x007faeac97b8c0
 @cstime=0.0,
 @cutime=0.0,
 @label="",
 @real=0.11811,
 @stime=0.0,
 @total=0.09000000000000341,
 @utime=0.09000000000000341>

最佳答案

Redis 是一个键值存储数据库,Postgres 是一个 RDBMS。键值数据库允许无模式存储数据,但不是关系数据库。

这两种方法各有利弊。如需进一步阅读,您可以查看现有的 stackoverflow post .

关于ruby-on-rails - Redis 比 Postgres 快多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22651982/

相关文章:

ruby-on-rails - Elasticsearch rails/Elasticsearch 模型搜索模型关联

javascript - 数据表 javascript - RoR

java - "dataSource or dataSourceClassName or jdbcUrl is required"用于 psql 本地数据库

git - 没有为 Heroku 排队的键?

ruby-on-rails - 如何使用 assert_select 断言输入元素的值

ruby-on-rails - 在控制台输入后如何选择特定租户?

postgresql - 在 citus (postgres) 上创建分布式表时出现错误

postgresql - 在 Rust 中使用 Tokio-postgres 向 Postgres 插入多个值

node.js - 如何为 heroku 配置 lite-server 端口?

ruby-on-rails - 对后台进程中的 Heroku R14 和 R15 内存错误进行故障排除