gpt4 book ai didi

ruby-on-rails - Dalli vs Redis-Store for Rails App

转载 作者:IT王子 更新时间:2023-10-29 05:54:40 24 4
gpt4 key购买 nike

我一直在使用Dalli直到现在缓存,今天我遇到了Redis -Store .

我想知道我是否应该切换到 redisstore。我的应用程序已经将 redis 用于某些东西,所以我有一个相当大的 redis 服务器(就资源而言),我还有另一个 memcached 服务器。因此,如果我在哪里切换到 redis-store,这意味着我可以删除 memcached 服务器(更少的服务器维护 + 更少的成本)。

有没有人比较过这两种解决方案。

  1. 表现
  2. 它是直接替代品吗(我可以在不更改代码的情况下随时在这两者之间切换吗)
  3. 我应该知道的任何其他事情。

最佳答案

Redis 可以用作缓存或永久存储,但如果您尝试将两者混合使用,最终可能会遇到“有趣的问题”。

当你有 memcached 时,你有最大的进程内存量,所以当 memcached 变满时,它会自动删除最近最少使用的条目,为新条目腾出空间。

您也可以将 Redis 配置为具有该行为,但如果您将 Redis 用于持久存储,则您不希望这样做,因为在这种情况下,您可能会丢失本应具有持久性的 key 。

因此,如果您为 Redis 使用持久存储,则需要有两个不同的 Redis 进程:一个用于持久键,一个用于缓存。当然,您始终可以只有一个进程并为每个缓存项设置过期时间,但没有人会向您保证在它们过期之前不会达到内存限制并且您会丢失数据,因此实际上您需要两个进程。此外,如果您为持久数据设置主/从配置,并将缓存存储在同一台服务器上,那么您基本上是在浪费 RAM,因此需要单独的进程。

关于性能,redis 和 memcached 的性能都非常好,在不同的测试中,它们在获取/提取数据方面处于同一范围内,但是当您只需要缓存时,memcached 更好。

为什么会这样?首先,由于 memcached 只有一个任务,即存储键/值,因此在存储元数据方面没有任何开销。另一方面,Redis 提供不同的数据结构,因此它存储每个键的更多元数据。这方面的一个例子:将数据存储在 Redis 中的散列上而不是使用单独的键要“便宜”得多。你不会在 memcached 上得到任何这些,因为只有一种类型的数据。这意味着在你的服务器内存量相同的情况下,你可以在 memcached 上存储比在 redis 上更多的数据。如果你有一个相对较小的安装,你并不真正关心,但当你开始看到增长时,相信我,你会想要控制这些数据。

因此,尽管我喜欢 Redis,但我更喜欢使用 memcached 来满足我的缓存需求,而使用 redis 来满足我的持久存储/临时存储/队列需求。我仍然将 Redis 用作“缓存”,但不是一个过期的临时缓存,而是用作查找缓存以保存从更昂贵的存储中读取数据。例如,我在 Redis 上保留了用户 ID 和昵称之间的映射。我从不使这些映射过期,因此 Redis 是一个完美的地方。

如果您处理的是少量数据,那么采用单一技术处理所有数据的想法可能是合理的,但是当您开始增长超过数百 MB 时,我会建议同时使用这两种技术

关于ruby-on-rails - Dalli vs Redis-Store for Rails App,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11076902/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com