Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 如何在Memcached、Redis和Varnish之间进行选择?_Django_Redis_Memcached_Varnish - Fatal编程技术网

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

Django 如何在Memcached、Redis和Varnish之间进行选择?,django,redis,memcached,varnish,Django,Redis,Memcached,Varnish,我对Memcached、Redis和Varnish真的很困惑。我知道它们用于缓存,但我不知道它们有多大帮助,也不知道您如何知道使用哪一个 最后,我想知道对于一个用户上传图片和视频的网站,你会使用什么?如果有帮助的话,我使用的是Django框架。Varnish是一个奇怪的例子,它是一个在真正的Web服务器(apache、nginx等)前面作为反向代理运行的服务器,它单独存储服务器的响应,并且可以决定为后续请求提供服务,而无需将请求传递到后端(Web服务器),因此,这就像HTML缓存一样简单 Mem

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


最后,我想知道对于一个用户上传图片和视频的网站,你会使用什么?如果有帮助的话,我使用的是Django框架。

Varnish是一个奇怪的例子,它是一个在真正的Web服务器(apache、nginx等)前面作为反向代理运行的服务器,它单独存储服务器的响应,并且可以决定为后续请求提供服务,而无需将请求传递到后端(Web服务器),因此,这就像HTML缓存一样简单


Memcached和redis实际上是数据存储服务器,特别是键值存储服务器。就python而言,你可以说它是一个巨大的“字典”,你用一个键设置值,然后按键检索它们。它们之间没有什么区别,你可以简单地用谷歌memcached和redis。

我使用的是Django和memcached,所以我可以告诉你如何使用它们。
我有一些数据,几乎从不更改,需要很短的时间(几秒钟)才能加载。
缓存它们将把秒变成几秒,因此加载时间减少了10倍

使用memcached非常简单:

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

  • 配置Django以将其用作缓存机制。
    settings.py
    或等效的
    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)
    
    从django.core.cache导入缓存
    cache.set('myData',myData)
    # ... 在另一个地方:
    myData=cache.get('myData')
    如果不是myData:
    #在“缓存未命中”的情况下重新计算myData,然后重新缓存它。
    #myData=
    cache.set('myData',myData)