我现在正在使用 memcached 作为 LRU 缓存来缓存大数据。我已将最大对象大小设置为 128 MB(我知道这是低效的,不推荐),总内存缓存设置为 1 GB。但是 128 MB 不足以满足我的目的,所以我打算迁移到 Redis。几个问题:
- memcached 非常慢 - 我当前的 memcached 设置需要 3-4 秒才能返回一个请求。这非常慢。我有时需要发出多达 30 个 memcached 请求来满足一个用户请求。仅仅这样做就需要 90 秒!!是我做错了什么还是 memcached 真的这么慢?
- Redis 会更快吗? - 我打算使用 Redis 列表来缓存数据。我将使用 0 到 -1 获取完整列表。我希望 Redis 更快,因为如果它需要 90 秒,我还不如不使用任何缓存!
谢谢!
最佳答案
我建议做一些分析,看看瓶颈在哪里。我不知情的猜测是,对于如此大的对象,您可能会受到应用服务器和 memcached 之间的连接的限制,因此您会看到与 redis 类似的结果。也可能是您的应用花费了大量时间来编码和解码大量对象。如果这很容易,那么可能值得尝试一种缓存方案,您只需缓存发送到客户端的请求(我确信它远小于 128MB)。
要尝试的另一件事是打开压缩。这会增加压缩/解压缩的延迟,但如果这确实是问题,则会减少网络延迟。
关于performance - Redis 对比内存缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27974064/