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

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

 

memcached适用于哪些场景?
  存储验证码(图形验证码、短信验证码)、登陆session等全部不是相当重要的数据。数据库

 

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

  启动: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。session

 

memcached的基本使用:
  链接:
  咱们通常使用telnet去链接memcached服务,而后进行操做,Telnet链接memcached:
    telnet  ip地址  port端口号分布式

    例如:telnet  192.168.42.133  11211memcached

 

  基本操做:
  增长或更改数据:
  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
    }
  }

相关文章
相关标签/搜索