• memcached简单介绍及在django中的使用


    什么是memcached?
      Memcached是一个高性能的分布式的内存对象缓存系统,全世界有不少公司采用这个缓存项目来构建大负载的网站,来分担数据库的压力。Memcached是通过在内存里维护一个统一的巨大的hash表,memcached能存储各种各样的数据,包括图像、视频、文件、以及数据库检索的结果等,当然因为memcached中的数据是保存在内存中的,应该没有人会把视频、图片等数据保存在memcached中。其实,memcached的原理简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。

    memcached适用于哪些场景?
      存储验证码(图形验证码、短信验证码)、登录session等所有不是至关重要的数据。

    memcached服务的安装与启动选项:
      安装:sudo apt install memcached  (Linux)

      启动:service memcached start或者/usr/bin/memcached start

      启动选项:

        -u:指定启动memcached的用户。
        -d:这个参数是让memcached在后台运行。
        -m:指定运行memcached占用多少内存,以M为单位,默认为64M。
        -p:指定占用的端口,默认端口是11211。
        -l:默认为127.0.0.1,指定别的机器可以通过哪个ip地址连接到我这台memcached服务器。如果是通过service memcached start的方式,那么只能通过本机连接。如果想要让别的机器连接,就必须设置 -l  0.0.0.0。
        如果想要使用以上参数来指定一些配置信息,那么不能使用service memcached start,而应该使用/usr/bin/memcached的方式来运行。比如/usr/bin/memcached -u memcache -m 1024 -p 11222 start。

    memcached的基本使用:
      连接:
      我们一般使用telnet去连接memcached服务,然后进行操作,Telnet连接memcached:
        telnet  ip地址  port端口号

        例如:telnet  192.168.42.133  11211

      基本操作:
      增加或更改数据:
      command  key  flag(是否压缩)  expire  length
      command类型及具体使用方法:
        add:添加数据,此时key如果已经存在于memcached,则会把存不进去,NOT_STORED
        replace:只有key已经存在于memcached之中才能使用
        set:设置数据,key如果存在,则作用为replace,如果key不存在,则作用为add

      查询数据:
        get  key

      删除数据:
        delete  key : 删除某个特定的数据
        flush_all : 删除memcached中所有的键值对

      针对数字类型数据的操作:

        incr  key  increase_num:给指定的key增加increase_num

        decr  key  decrease_num:给指定的key减少decrease_num

      查看memcached的状态:
        stats:会列出memcached的一些常用的数据

      查看memcached中所有的键:
        stats items:查看当前的item_id
        stats cachedump item_id num :查看num个键的名称,如果num为0,则查询所有

    在Django中使用memcached:
      首先需要在settings.py中配置好缓存:

      CACHES = {
        'default': {
          'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
          'LOCATION': '127.0.0.1:11211',
        }
      }
      如果想要使用多台机器提供的memcached服务,那么可以在LOCATION指定多个连接,数据不会实现多台机器共享,还是会按照一定的算法单独保存在其中一台机器中。示例代码如下:

      CACHES = {
        'default': {
          'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
          'LOCATION': [
            '172.19.26.240:11211',
            '172.19.26.242:11211',
          ]
        }
      }


    配置好memcached的缓存后,以后在代码中就可以使用以下代码来操作memcached了:

      from django.core.cache import cache

      def index(request):
        cache.set('abc','zhiliao',60)
        print(cache.get('abc'))
        response = HttpResponse('index')
        return response

    需要注意的是,django在存储数据到memcached中的时候,不会按照我们提供的key作为键去存储,而是会对key进行一些处理。比如会加一个前缀,会加一个版本号,所以我们如果我们想要手动操作查询到我们在django中操作时存入的值,就必须知道存入时的实际的key。如果我们想要自定义key的处理,那么可以在settings.CACHES中添加KEY_FUNCTION参数

      CACHES = {
        'default': {
          'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
          'LOCATION': '127.0.0.1:11211',
          'KEY_FUNCTION': lambda key,prefix_key,version:"django:%s"%key
        }
      }

     

  • 相关阅读:
    TCP 连接中的TIME_WAIT
    tcp 重组原理
    自己用wireshark 抓了个包,分析了一下
    wireshark 使用技巧
    IP 网际协议
    CSS3 选择器
    ajax 底层源码解析
    初识 Java
    jQuery (DOM篇)
    绘制 SVG
  • 原文地址:https://www.cnblogs.com/limaomao/p/9593603.html
Copyright © 2020-2023  润新知