performance - Redis 对比内存缓存

标签 performance caching redis memcached lru

我现在正在使用 memcached 作为 LRU 缓存来缓存大数据。我已将最大对象大小设置为 128 MB(我知道这是低效的,不推荐),总内存缓存设置为 1 GB。但是 128 MB 不足以满足我的目的,所以我打算迁移到 Redis。几个问题:

  1. memcached 非常慢 - 我当前的 memcached 设置需要 3-4 秒才能返回一个请求。这非常慢。我有时需要发出多达 30 个 memcached 请求来满足一个用户请求。仅仅这样做就需要 90 秒!!是我做错了什么还是 memcached 真的这么慢?
  2. Redis 会更快吗? - 我打算使用 Redis 列表来缓存数据。我将使用 0 到 -1 获取完整列表。我希望 Redis 更快,因为如果它需要 90 秒,我还不如不使用任何缓存!

谢谢!

最佳答案

我建议做一些分析,看看瓶颈在哪里。我不知情的猜测是,对于如此大的对象,您可能会受到应用服务器和 memcached 之间的连接的限制,因此您会看到与 redis 类似的结果。也可能是您的应用花费了大量时间来编码和解码大量对象。如果这很容易,那么可能值得尝试一种缓存方案,您只需缓存发送到客户端的请求(我确信它远小于 128MB)。

要尝试的另一件事是打开压缩。这会增加压缩/解压缩的延迟,但如果这确实是问题,则会减少网络延迟。

关于performance - Redis 对比内存缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27974064/

相关文章:

python - 在 Python 中计算 Jaccard 相似度

java - JDK8 LocalDate.toEpochDay 性能异常下降

c++ - 乘法比浮点除法快吗?

java - 递增数组中的数字,直到它们全部相等

php - 如何强制浏览器显示 CSS 文件的最新更改?

缓存模式: What do you call (and how do you replace) OpenSymphony OsCache "group" paradigm

jquery - 悬停时更改 CSS 背景图像的最佳方法

Redis - 可以查看单个键的命中/未命中吗?

scripting - 使用变量 KEYS 从 Lua 调用 Redis zunionstore

mysql - 管理用户集