memcache
Memcached安装:
wget http://memcached.org/latest tar -zxvf memcached-1.x.x.tar.gz cd memcached-1.x.x ./configure && make && make test && sudo make install PS:依赖libevent yum install libevent-devel apt-get install libevent-dev
启动Memcached
memcached -d -m 10 -u root -l 192.168.187.129 -p 12000 -c 256 -P /tmp/memcached.pid
参数说明: -d 是启动一个守护进程 -m 是分配给Memcache使用的内存数量,单位是MB -u 是运行Memcache的用户 -l 是监听的服务器IP地址 -p 是设置Memcache监听的端口,最好是1024以上的端口 -c 选项是最大运行的并发连接数,默认是1024,按照你服务器的负载量来设定 -P 是设置保存Memcache的pid文件
Memcached命令
存储命令: set/add/replace/append/prepend/cas 获取命令: get/gets 其他命令: delete/stats..

Python操作Memcached
安装API
python操作Memcached使用Python-memcached模块
下载安装:https://pypi.python.org/pypi/python-memcached
在memcache内,默认只支持字符串类型,-------->只能是key:value(字符串、数字)
# 第一次操作
import memcache mc = memcache.Client(['10.211.55.4:12000',], debug=True) mc.set("foo", "bar") ret = mc.get('foo') print(ret)
# debug = True 表示运行出现错误时,显示错误信息,上线后移除该参数。
# 天生支持集群
python-memcached模块原生支持集群操作,其原理是在内存维护一个主机列表,且集群中主机的权重值和主机在列表中重复出现的次数成正比
mc = memcache.Client([('1.1.1.1:12000', 1), ('1.1.1.2:12000', 2),], debug=True)
具体操作
import memcache mc = memcache.Client(["192.168.187.129:12000", ], debug=True) # mc.add("f","f23") # 第二次添加相同key时,会报错 MemCached # mc.replace("f", "f2") # 将key对应的值,替换,若key不存在报错 # mc.set("f2", "ffff") # 将key对应的值设置为ffff,若key存在:替换,不存在:创建 # mc.set_multi({"k1": "v1", "k2": "v2"}) # 批量set # mc.delete("k1") # 删除key(k1) # mc.delete_multi(["k1", "k2"]) # 批量删除多个键值 # mc.append("k1", "after") # 在key对应的值后面拼接after # mc.prepend("k2", "before") # 在key对应的值前面拼接before # mc.set("k1","555") # mc.decr("k1", delta=10) # 每执行一次减10 # mc.incr("k1", delta=10) # 每执行一次加10
PS: 两个客户端同时取到了一个key:500,分别进行减一赋值 ----------> key : 499==========>这是错的
避免这种情况 使用 gets 和 cas
v = mc.gets("count") # 获取值
# 若果有人在gets之后,cas之前修改了count,下面的cas会报错,
mc.cas("count",550) # 设置值
:本质 在gets时,会从memcache中获取一个自增的数字,通过cas修改gets的值时,会携带着去比较,
相同可以修改,不同不允许修改
# ret = mc.get("k2") # 不存在,返回None ret = mc.get_multi(["k1", "k2"]) # 返回一个字典/空字典 print(ret)

浙公网安备 33010602011771号