首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 学习笔记 - Memcac

Python 学习笔记 - Memcac

作者头像
py3study
发布2020-01-08 17:01:43
3480
发布2020-01-08 17:01:43
举报
文章被收录于专栏:python3python3

Memcached是一个分布式内存对象缓存系统,他把数据缓存在内存里面来减少对数据库的访问,从而提高动态网页的访问速度。他的基本结构是key/value(键值对)。下面看看在Python里面如何使用。

首先来安装一下服务器端,豆子直接在一个CentOS7的机器上安装

[root@sydnagios ~]# yum install memcached
Loaded plugins: fastestmirror, langpacks
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
base                                                     | 3.6 kB     00:00
epel/x86_64/metalink                                     | 2.0 kB     00:00
epel                                                     | 4.3 kB     00:00
extras                                                   | 3.4 kB     00:00
updates                                                  | 3.4 kB     00:00
(1/5): epel/x86_64/group_gz                                | 170 kB   00:00
(2/5): epel/x86_64/updateinfo                              | 671 kB   00:00

然后服务器端跑起来,这个里面我指定的端口是12000,因此如果有防火墙别忘记打开对应端口

[root@sydnagios ~]# memcached -d -m 10 -u root -l 10.2.1.107 -p 12000 -c 256 -P          /tmp/memcached.pid

参数说明:

-d 是启动一个守护进程

-m 是分配给Memcache使用的内存数量,单位是MB

-u 是运行Memcache的用户

-l 是监听的服务器IP地址

-p 是设置Memcache监听的端口,最好是1024以上的端口

-c 选项是最大运行的并发连接数,默认是1024,按照你服务器的负载量来设定

-P 是设置保存Memcache的pid文件

打开防火墙端口

 firewall-cmd --add-port=12000/tcp --permanent

接下来安装Python的客户端模块 从这里下载https://pypi.python.org/pypi/python-memcached

解压拷贝到sys.path对应的目录,就能直接用了

看看第一个例子,可以通过set来设置数据,get来获取数据。里面debug是为了显示错误的 生产环境里面不要用

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author Yuan Li
import memcache
mc = memcache.Client(['10.2.1.107:12000'], debug=True)
mc.set("foo", "bar")
mc.add("name","John")
print( mc.get('foo'))
print(mc.get('name'))
-----------
bar
John

memcached的第二个特点是他默认支持集群,原理是内存里面创建一个主机的列表;每个主机有一个权重,权重的数目和主机在列表里面出现的数目成正比。通过算法可以决定把键值对放在哪个服务器的内存里面。

例2

mc = memcache.Client([('1.1.1.1:12000', 1), ('1.1.1.2:12000', 2), ('1.1.1.3:12000', 1)], debug=True) 
mc.set('k1', 'v1')

除了get和set以外,他还具有以下常用函数

add 添加一条键值对,如果已经存在的 key,重复执行add操作异常

replace replace 修改某个key的值,如果key不存在,则异常

set 和 set_multi

set            设置一个键值对,如果key不存在,则创建,如果key存在,则修改 set_multi   设置多个键值对,如果key不存在,则创建,如果key存在,则修改

delete 和 delete_multi

delete             在Memcached中删除指定的一个键值对 delete_multi    在Memcached中删除指定的多个键值对

append 和 prepend

append    修改指定key的值,在该值 后面 追加内容 prepend   修改指定key的值,在该值 前面 插入内容

decr 和 incr 

incr  自增,将Memcached中的某一个值增加 N ( N默认为1 ) decr 自减,将Memcached中的某一个值减少 N ( N默认为1 )

gets 和 cas

这个组合可以避免脏数据的产生,如果在gets数据,和cas数据回去这个过程中有其他用户执行了get,那么则不允许修改

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档