什么是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
    }
  }

memcached简单介绍及在django中的使用的更多相关文章

  1. Memcached简单介绍

    Memcached简单介绍 简介:Memcached是一个自由开源的,高性能,分布式内存对象缓存系统.================================================= ...

  2. openstack架构简单介绍J版(更新中)

    title : OPENSTACK架构简单介绍 openstack的发展及历史 openstack是什么? OpenStack是一个美国国家航空航天局和Rackspace合作研发的云端运算‎软件,以A ...

  3. 二维码Data Matrix简单介绍及在VS2010中的编译

    Data Matrix 二维条码原名Datacode,由美国国际资料公司(International Data Matrix, 简称ID Matrix)于1989年发明.Data-Matrix二维条码 ...

  4. 简单介绍一下python Queue中常用的方法

    Queue.qsize() 返回队列的大小 Queue.empty() 如果队列为空,返回True,反之False Queue.full() 如果队列满了,返回True,反之FalseQueue.fu ...

  5. Java中Synchronized的用法(简单介绍)

    简单介绍 synchronized是Java中的关键字,是一种同步锁.它修饰的对象有以下几种: 1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调 ...

  6. Django 中的缓存问题

    Django 中的缓存问题 简单介绍 ​ 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. ​ 当一个网站的用户访问量很大的 ...

  7. 异步任务队列Celery在Django中的使用

    前段时间在Django Web平台开发中,碰到一些请求执行的任务时间较长(几分钟),为了加快用户的响应时间,因此决定采用异步任务的方式在后台执行这些任务.在同事的指引下接触了Celery这个异步任务队 ...

  8. Django 中使用 Celery

    起步 在 <分布式任务队列Celery使用说明> 中介绍了在 Python 中使用 Celery 来实验异步任务和定时任务功能.本文介绍如何在 Django 中使用 Celery. 安装 ...

  9. Django框架深入了解_05 (Django中的缓存、Django解决跨域流程(非简单请求,简单请求)、自动生成接口文档)

    一.Django中的缓存: 前戏: 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一 ...

随机推荐

  1. 将某页面中ajax中获取到的信息放置到sessionStorage中保存,并在其他页面调用这些数据。

    A页面代码: var obj = data.data; var infostr = JSON.stringify(obj);//转换json sessionStorage.obj = infostr; ...

  2. 由inline-block小例子引申出的一些问题,及IE6、IE7兼容性解决方案

    使用场景分析: 常见的对块与块之间的横向排列处理 对同级所有元素使用display:inline-block; , 之后块与块直接会产生间隙问题 解决办法: 给父级设 font-size:0; 别高兴 ...

  3. Openresty最佳案例 | 第3篇:Openresty的安装

    转载请标明出处: http://blog.csdn.net/forezp/article/details/78616645 本文出自方志朋的博客 我的服务器为一台全新的centos 7的服务器,所以从 ...

  4. Python 学习笔记(八)Python列表(一)

    列表基本操作 列表(list)定义  列表是Python中的一种对象类型,也是一种序列 对象类型:list 表示方法:[ ] python 列表中的元素可以是任何类型的对象 >>> ...

  5. [codevs1036] 商务旅行

    题目描述 Description 某首都城市的商人要经常到各城镇去做生意,他们按自己的路线去做,目的是为了更好的节约时间. 假设有N个城镇,首都编号为1,商人从首都出发,其他各城镇之间都有道路连接,任 ...

  6. Sonar安装-Linux[20171227]

    前言     一款不错的代码质量管理工具Sonar 前期准备     官方参考文档 https://docs.sonarqube.org/display/SONAR/Documentation     ...

  7. 【php学习-5】

    mutil_query($result)){ //多查询 where } //执行查询 /* $result=$cone->query("SELECT * from test" ...

  8. hash和history的区别

    vue-router 中hash模式和history模式. 在vue的路由配置中有mode选项,最直观的区别就是在url中hash 带了一个很丑的 # ,而history是没有#的.vue默认使用ha ...

  9. Docker(一):概述

    Docker 是什么? Docker是一个开源的应用容器引擎,基于Go语言开发 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后 ...

  10. Windows环境下安装redis及PHP Redis扩展

    附带管理工具安装教程 安装环境 WNMP环境 参考教程:WIN10下WNMP开发环境部署 安装windows的redis服务 安装包下载 选择msi安装包下载并安装,下载可能会有点慢,请自行使用梯子. ...