【发布时间】:2019-03-11 22:55:08
【问题描述】:
我是一名初级程序员,正在为 URL 缩短器构建 Web 服务,并且正在考虑使用哪种 NoSQL。我只需要存储原始 url 和缩短的 url,所以 Redis 是一个显而易见的选择,因为它非常快。但 Redis 受限于内存大小,而其他键值 NoSQL(如 DynamoDB 或 Cassandra)将数据存储在磁盘中。您认为将 Redis 用作重读请求的缓存并同时使用其他 NoSQL 作为数据库有意义吗?
【问题讨论】:
我是一名初级程序员,正在为 URL 缩短器构建 Web 服务,并且正在考虑使用哪种 NoSQL。我只需要存储原始 url 和缩短的 url,所以 Redis 是一个显而易见的选择,因为它非常快。但 Redis 受限于内存大小,而其他键值 NoSQL(如 DynamoDB 或 Cassandra)将数据存储在磁盘中。您认为将 Redis 用作重读请求的缓存并同时使用其他 NoSQL 作为数据库有意义吗?
【问题讨论】:
是的,您可以使用 Redis 进行缓存并使用另一个 NoSql 工具进行持久化。实际上,您应该考虑项目的复杂性,例如并发访问者的数量,您可以负担的硬件等。Redis 还可以将数据存储在磁盘中,因此当您重新启动服务器时,您的缓存数据将保留。然而;它还将它们全部存储在内存中,这是 Redis 如此快速的秘诀。您还应该考虑将 Redis 中的数据存储为二进制而不是 Json,这将大大减少内存的使用。您可以使用 Protobuf 等编码库,这将帮助您节省大量内存。如果您的项目在不久的将来似乎变得更加复杂,您还可以使用 RDMS 作为数据库服务器来满足您未来的需求,从而为您提供独特的功能。
【讨论】: