Redis > 隔离具有大值的键?
Redis > Isolate keys with large values?
据我了解,redis 的最佳实践涉及许多具有小值的键。
但是,我们有几十个密钥,我们希望每个密钥存储几 MB。当流量低时,这在大多数情况下都有效,但在高流量情况下,我们发现超时错误开始堆积。这会导致我们对 redis 的所有微小请求出现问题,这些请求以前是可靠的。
较大的值用于优化我们网站功能的关键部分,并在运行良好时真正提升性能。
是否有隔离这些大值的好方法,使它们不会干扰网络 I/O 我们最佳实践大小的值?
请注意,我们不需要动态发现值是否大于 100KB 或以 MB 为单位。我们有一个特定的方法,我们可以使用单独的 redis server/instance/database/node/shard/partition(我不是硬件专家)。
只要 install/configure 需要多少个实例(在本例中为 2 个),每个实例在键(例如大和小)的逻辑子集上独立管理,路由由应用程序完成。简单有效——分而治之
正确的解决方案是拥有 2 个独立的 Redis 集群,一个用于大键,另一个用于小键。这 2 个集群可以 运行 在同一组物理机或虚拟机上,也称为多租户(您可能希望这样做以充分利用机器上的底层内核,因为 Redis 服务器是单线程的)。这样您就可以分别扩展两个集群,并且由于排在大请求后面而导致小请求超时的问题将得到缓解。
据我了解,redis 的最佳实践涉及许多具有小值的键。
但是,我们有几十个密钥,我们希望每个密钥存储几 MB。当流量低时,这在大多数情况下都有效,但在高流量情况下,我们发现超时错误开始堆积。这会导致我们对 redis 的所有微小请求出现问题,这些请求以前是可靠的。
较大的值用于优化我们网站功能的关键部分,并在运行良好时真正提升性能。
是否有隔离这些大值的好方法,使它们不会干扰网络 I/O 我们最佳实践大小的值?
请注意,我们不需要动态发现值是否大于 100KB 或以 MB 为单位。我们有一个特定的方法,我们可以使用单独的 redis server/instance/database/node/shard/partition(我不是硬件专家)。
只要 install/configure 需要多少个实例(在本例中为 2 个),每个实例在键(例如大和小)的逻辑子集上独立管理,路由由应用程序完成。简单有效——分而治之
正确的解决方案是拥有 2 个独立的 Redis 集群,一个用于大键,另一个用于小键。这 2 个集群可以 运行 在同一组物理机或虚拟机上,也称为多租户(您可能希望这样做以充分利用机器上的底层内核,因为 Redis 服务器是单线程的)。这样您就可以分别扩展两个集群,并且由于排在大请求后面而导致小请求超时的问题将得到缓解。