Python 学习笔记 - Memcached

简介:

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,如需转载请自行联系原作者

目录
相关文章
|
2月前
|
网络协议 Java Linux
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
本文介绍了PyAV库,它是FFmpeg的Python绑定,提供了底层库的全部功能和控制。文章详细讲解了PyAV的安装过程,包括在Windows、Linux和ARM平台上的安装步骤,以及安装中可能遇到的错误和解决方法。此外,还解释了时间戳的概念,包括RTP、NTP、PTS和DTS,并提供了Python代码示例,展示如何获取RTSP流中的各种时间戳。最后,文章还提供了一些附录,包括Python通过NTP同步获取时间的方法和使用PyAV访问网络视频流的技巧。
399 4
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
|
2月前
|
Python
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
使用Python的socket库实现客户端到服务器端的图片传输,包括客户端和服务器端的代码实现,以及传输结果的展示。
156 3
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
|
2月前
|
JSON 数据格式 Python
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
本文介绍了如何使用Python的socket模块实现客户端到服务器端的文件传输,包括客户端发送文件信息和内容,服务器端接收并保存文件的完整过程。
173 1
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
|
2月前
|
关系型数据库 MySQL 数据库
Mysql学习笔记(四):Python与Mysql交互--实现增删改查
如何使用Python与MySQL数据库进行交互,实现增删改查等基本操作的教程。
70 1
|
2月前
|
Ubuntu Linux Python
Ubuntu学习笔记(六):ubuntu切换Anaconda和系统自带Python
本文介绍了在Ubuntu系统中切换Anaconda和系统自带Python的方法。方法1涉及编辑~/.bashrc和/etc/profile文件,更新Anaconda的路径。方法2提供了详细的步骤指导,帮助用户在Anaconda和系统自带Python之间进行切换。
111 1
|
2月前
|
索引 Python
Python学习笔记编程小哥令狐~持续更新、、、(上)
Python学习笔记编程小哥令狐~持续更新、、、(上)
53 2
|
2月前
|
存储 Python
Python学习笔记编程小哥令狐~持续更新、、、 (下)
Python学习笔记编程小哥令狐~持续更新、、、 (下)
35 1
|
2月前
|
存储 Python
【免费分享编程笔记】Python学习笔记(二)
【免费分享编程笔记】Python学习笔记(二)
47 0
【免费分享编程笔记】Python学习笔记(二)
|
2月前
|
Java 编译器 Go
Python学习笔记--- day01计算机基础和环境搭建(一)
Python学习笔记--- day01计算机基础和环境搭建(一)
45 2
|
2月前
|
程序员 编译器 Python
Python学习笔记--- day01计算机基础和环境搭建(二)
Python学习笔记--- day01计算机基础和环境搭建(二)
49 1