我的编程空间,编程开发者的网络收藏夹
学习永远不晚

django中使用memcached示例详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

django中使用memcached示例详解

什么是memcached:

  • memcached之前是danga的一个项目,最早是为LiveJournal服务的,当初设计师为了加速LiveJournal访问速度而开发的,后来被很多大型项目采用。官网是www.danga.com或者是memcached.org。
  • Memcached是一个高性能的分布式的内存对象缓存系统,全世界有不少公司采用这个缓存项目来构建大负载的网站,来分担数据库的压力。Memcached是通过在内存里维护一个统一的巨大的hash表,memcached能存储各种各样的数据,包括图像、视频、文件、以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。

哪些情况下适合使用Memcached:存储验证码(图形验证码、短信验证码)、登录session等所有不是至关重要的数据。

安装和启动memcached:

windows

安装:memcached.exe -d install。

启动:memcached.exe -d start。

linux(ubuntu)

安装:sudo apt install memcached

启动: cd /usr/local/memcached/bin ./memcached -d start

可能出现的问题:

提示你没有权限:在打开cmd的时候,右键使用管理员身份运行。

提示缺少pthreadGC2.dll文件:将pthreadGC2.dll文件拷贝到windows/System32.

不要放在含有中文的路径下面。

启动memcached:

如果想要使用以上参数来指定一些配置信息,那么不能使用service memcached start,而应该使用/usr/bin/memcached的方式来运行。比如/usr/bin/memcached -u memcache -m 1024 -p 11222 start。

  • -d:这个参数是让memcached在后台运行。
  • -m:指定占用多少内存。以M为单位,默认为64M。
  • -p:指定占用的端口。默认端口是11211。
  • -l:别的机器可以通过哪个ip地址连接到我这台服务器。如果是通过service memcached start的方式,那么只能通过本机连接。如果想要让别的机器连接,就必须设置-l 0.0.0.0。

telnet操作memcached:

telnet ip地址 [11211]

添加数据:

set

语法:

set key flas(是否压缩) timeout value_length value

示例: set username 0 60 7 zhiliao

add

语法:

add key flas(0) timeout value_length value

示例: add username 0 60 7 xiaotuo set和add的区别:add是只负责添加数据,不会去修改数据。如果添加的数据的key已经存在了,则添加失败,如果添加的key不存在,则添加成功。而set不同,如果memcached中不存在相同的key,则进行添加,如果存在,则替换。

获取数据:

语法: get key

示例: get username

删除数据:

语法: delete key

示例: delete username

flush_all:删除memcached中的所有数据。

查看memcached的当前状态:

语法:stats。

通过python操作memcached:

  • 安装:python-memcached:pip install python-memcached。
  • 建立连接: import memcache mc = memcache.Client(['127.0.0.1:11211','192.168.174.130:11211'],debug=True)
  • 设置数据: mc.set('username','hello world',time=60*5) mc.set_multi({'email':'xxx@qq.com','telphone':'111111'},time=60*5)
  • 获取数据: mc.get('telphone')
  • 删除数据: mc.delete('email')
  • 自增长: mc.incr('read_count')
  • 自减少: mc.decr('read_count')

memcached的安全性:

memcached的操作不需要任何用户名和密码,只需要知道memcached服务器的ip地址和端口号即可。因此memcached使用的时候尤其要注意他的安全性。这里提供两种安全的解决方案。分别来进行讲解:

  • 使用-l参数设置为只有本地可以连接:这种方式,就只能通过本机才能连接,别的机器都不能访问,可以达到最好的安全性。
  • 使用防火墙,关闭11211端口,外面也不能访问。
  ufw enable # 开启防火墙
  ufw disable # 关闭防火墙
  ufw default deny # 防火墙以禁止的方式打开,默认是关闭那些没有开启的端口
  ufw deny 端口号 # 关闭某个端口
  ufw allow 端口号 # 开启某个端口

在Django中使用memcached:

首先需要在settings.py中配置好缓存:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': '127.0.0.1:11211',
    }
}

如果想要使用多台机器,那么可以在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进行一些处理。比如会加一个前缀,会加一个版本号。如果想要自己加前缀,那么可以在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
    }
}

以上就是django中使用memcached示例详解的详细内容,更多关于django使用memcached的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

django中使用memcached示例详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android中ExpandableListView使用示例详解

本文实例为大家分享了ExpandableListView使用示例,供大家参考,具体内容如下MainActivity:public class Expandable_test extends Activity { private Expan
2023-05-30

MySQL 中 LIMIT 使用示例详解

mysql是一种常用的关系型数据库管理系统,它提供了许多用于查询和操作数据的功能。其中,LIMIT是一个非常有用的关键字,用于在查询结果中限制返回的行数。操作数据库时,经常会遇到需要查询前几条或者后几条数据的javascript情况,尤
MySQL 中 LIMIT 使用示例详解
2024-08-12

iOS中NSThread使用示例详解

这篇文章主要为大家介绍了iOS中NSThread使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2022-11-13

godoudou应用中使用注解示例详解

这篇文章主要为大家介绍了godoudou应用中使用注解示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2022-12-08

.NET中的Swagger使用示例详解

本文章详细介绍了.NET中Swagger的使用示例。通过安装Swashbuckle.AspNetCoreNuGet包,可以生成交互式API文档。使用特性可以为控制器和操作添加Swagger文档信息,包括状态码、响应类型和摘要描述。配置文件中的代码负责配置Swagger设置,启用Swagger中间件并指定文档路径。最终,可以通过SwaggerUI浏览和测试API,从而自动生成文档,简化开发和测试,提高代码可维护性,促进API可发现性和集成。
.NET中的Swagger使用示例详解
2024-04-02

Python中Merge使用的示例详解

Python里的merger函数是数据分析工作中最常见的函数之一,类似于MySQL中的join函数和Excel中的vlookup函数。本文将通过一些简单的实力和大家聊聊Merge的使用,需要的可以了解一下
2023-02-21

requestAnimationFrame使用示例详解

这篇文章主要为大家介绍了requestAnimationFrame使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-02-21

Collectionstream使用示例详解

这篇文章主要介绍了Collectionstream使用示例,stream流几乎可以完成对集合的任意操作,映射、去重、分组、排序、过滤等
2022-12-19

GoJs中的动画使用示例详解

这篇文章主要为大家介绍了GoJs中的动画使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-05-18

react中使用antd及immutable示例详解

这篇文章主要为大家介绍了react中使用antd及immutable示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2022-11-13

vue中使用window.open()参数示例详解

这篇文章主要介绍了vue中使用window.open()参数详解,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2023-05-17

ESLint和Jest中使用esm示例详解

这篇文章主要为大家介绍了ESLint和Jest中使用esm示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-03-03

TreeSet详解和使用示例

TreeSet是Java集合框架中的一个类,它实现了SortedSet接口,底层使用红黑树实现,可以实现有序的插入和遍历。TreeSet的特点:1. TreeSet中的元素是有序的,默认按照升序排序,也可以通过Comparator自定义排序
2023-08-08

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录