您如何在 Memcached、Redis 和 Varnish 之间进行选择?

Posted

技术标签:

【中文标题】您如何在 Memcached、Redis 和 Varnish 之间进行选择?【英文标题】:How do you choose between Memcached, Redis and Varnish? 【发布时间】:2014-04-02 19:53:11 【问题描述】:

我对 Memcached、Redis 和 Varnish 真的很困惑。我知道它们用于缓存,但我不知道它们有多大帮助,以及您如何知道使用哪一个。

最后,我想知道您会为包含用户上传的图片和视频的网站使用什么?如果有帮助,我正在使用 Django 框架。

【问题讨论】:

***.com/questions/4490140/… 【参考方案1】:

Varnish 是一个奇怪的例子,它是一个在真实网络服务器(apache、nginx 等)前面作为反向代理运行的服务器,它单独存储服务器的响应,并可以决定为它提供服务后续请求而不将请求传递给后端(网络服务器),所以它就像 html 缓存一样。

Memcached 和 redis 实际上是数据存储服务器,特别是键值存储服务器。就 python 而言,你可以说它是一个巨大的“字典”,你用一个键设置值并通过键检索它们。两者差别不大,你可以谷歌一下 memcached vs redis。

【讨论】:

【参考方案2】:

我正在使用 Django 和 memcached,所以我知道如何使用它。 我有一些几乎从不改变的数据,需要很短的时间(几秒钟)才能加载。 缓存它们会将秒变为几分之一秒,因此加载时间减少了 10 倍。

使用memcached很简单:

    为您的操作系统安装并运行 memcached。

    配置 Django 以将其用作缓存机制。 在settings.py 或等效设置BACKEND 选项中:'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache'

    从 memcached 存储和检索数据:

    from django.core.cache import cache
    cache.set('myData',myData)
    # ... in another place:
    myData = cache.get('myData')
    if not myData:
         # re-calculate myData in case of a 'cache miss', then re-caching it.
         # myData = <calculations>
         cache.set('myData',myData)
    

【讨论】:

以上是关于您如何在 Memcached、Redis 和 Varnish 之间进行选择?的主要内容,如果未能解决你的问题,请参考以下文章

memcached与redis比较

缓存

redis和memcache的对比

如何在 ElasticBeanstalk 上安装和配置 Redis

故障公告取代 memcached 的 redis 出现问题造成网站故障

聊一聊分布式场景下redis和memcached,及各自经典使用场景和优缺点