博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python 学习笔记 - Memcached
阅读量:5990 次
发布时间:2019-06-20

本文共 2377 字,大约阅读时间需要 7 分钟。

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

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

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

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

1
<span style
=
"font-size:14px;"
>[root@sydnagios ~]
# memcached -d -m 10 -u root -l 10.2.1.107 -p 12000 -c 256 -P          /tmp/memcached.pid<br></span>
参数说明:
    
-
d 是启动一个守护进程
    
-
m 是分配给Memcache使用的内存数量,单位是MB
    
-
u 是运行Memcache的用户
    
-
l 是监听的服务器IP地址
    
-
p 是设置Memcache监听的端口,最好是
1024
以上的端口
    
-
c 选项是最大运行的并发连接数,默认是
1024
,按照你服务器的负载量来设定
    
-
P 是设置保存Memcache的pid文件

打开防火墙端口

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


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

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


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

1
<span style
=
"font-size:14px;"
>
#!/usr/bin/env python<br># -*- coding:utf-8 -*-<br># Author Yuan Li<br>import memcache<br>mc = memcache.Client(['10.2.1.107:12000'], debug=True)<br>mc.set("foo", "bar")<br>mc.add("name","John")<br>print( mc.get('foo'))<br>print(mc.get('name'))<br>-----------<br>bar<br>John<br></span>

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

例2

1
<span style
=
"font-size:14px;"
>mc 
= 
memcache.Client([(
'1.1.1.1:12000'
1
), (
'1.1.1.2:12000'
2
), (
'1.1.1.3:12000'
1
)], debug
=
True
) <br>mc.
set
(
'k1'
'v1'
)<br><
/
span>

除了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,那么则不允许修改

本文转自 beanxyz 51CTO博客,原文链接:http://blog.51cto.com/beanxyz/1869368,如需转载请自行联系原作者
你可能感兴趣的文章
致敬赵雷:基于TensorFlow让机器生成赵雷曲风的歌词
查看>>
领英发布最具吸引力公司榜单 科技企业独占前七名
查看>>
诺基亚如何帮助印度巴蒂电信和BSNL进行5G网络转型
查看>>
《算法设计编程实验:大学程序设计课程与竞赛训练教材》——2.2 筛选法模拟的实验范例...
查看>>
神经网络算法Batch Normalization的分析与展望 | 大牛讲堂
查看>>
防护升级 让你的网站拥有HTTPS加密传输
查看>>
我国IDC/ISP持证企业发展情况:共4065家 地区发展不均衡
查看>>
D1net阅闻:2015数据中心宕机20%是由DDoS攻击引起
查看>>
【智驾深谈】George Hotz,桀骜不逊的自动驾驶破局者
查看>>
《 嵌入式系统设计与实践》一一1.3 延伸阅读
查看>>
暴涨暴跌 超讯通信股价坐过山车
查看>>
智能安防已成撬动智能家居大产业的黄金点?
查看>>
瑞典时尚品牌启用全球RFID系统
查看>>
欧盟将扩大免费无线网络服务
查看>>
数据中心的可持续性:相关的标准和文件
查看>>
物联网(IoT)专属网络技术已经起飞!
查看>>
物联网安全问题惹关注
查看>>
云端软化产品将成为安防平台的核心
查看>>
详解企业级视频会议系统的五大热门技术
查看>>
Güdel推RFID解决方案,助力轮胎生产自动化
查看>>