Memcached
Memcached是一个自由开源的,高性能,分布式内存对象缓存系统。
Memcached是一种基于内存的key-value存储。
win安装
http://static.runoob.com/download/memcached-1.4.5-amd64.zip
win运行(将memcache添加为定时任务):
schtasks /create /sc onstart /tn memcached /tr "'D:\memcached-amd64\memcached.exe' -m 512"
win停止:
schtasks /delete /tn memcached
linux安装
yum -y install libevent libevent-devel
wget http://memcached.org/files/memcached-1.5.20.tar.gz
tar -xvf memcached-1.5.20.tar.gz
cd memcached-1.5.20
./configure --prefix=/usr/local/memcached
make
make install
linux运行:
/usr/local/memcached/bin/memcached -m 64m -d
memcached命令详解
bin/memcached -h 帮助
-p :指定监听端口,默认11211
-m :指定分配给memcache多少内存,单位是MB.
-l :监听的服务器IP地址,可以有多个地址
-c :最大运行的并发连接数,默认是1024
-d :启动一个守护进程
-u :指定运行memcache的用户
-P :指定保存memcache的pid文件
连接
使用telnet命令
telnet ip port
telnet 127.0.0.1 11211
增删改查
增加数据
set命令:用来添加数据key->value 如果这个key存在,那么就会替换值,否则添加数据.
设置的字符长度必须真实,和值一样的字符相等
set key名称 flag 过期时间(秒) 字符的长度
value
成功会打印STORED , 错误会打印 ERROR
例子:
> set username 0 60 7
> ktianc
> STORED
add命令:同set使用方式,不同的是如果添加的key存在,那么就会添加失败,报NOT STORED
查询数据
get命令 :根据key来获取一个数据
get key名称
例子:
get username
删除数据
delete命令:根据key来删除一个键值
delete key名称
例子:
delete username
flush_all命令:清空memcached中所有的数据。
更新数据
incr命令:相加操作,值必须是数字类
incr key名称 数字值
例子:
incr age 2
decr命令:相减操作,值必须是数字类型
decr key名称 数字值
例子:
decr age 2
查看状态
stats命令: 查看memcached状态
--------------------------------------------------------------------------
python 连接 memcached
mc = memcached.Client(["127.0.0.1:11211"],debug=True)
配置集群连接:
mc = memcache.Client([('1.1.1.1:12000', 1), ('1.1.1.2:12000', 2), ('1.1.1.3:12000', 1)], debug=True)
1 2 1 为权重
使用:
增加数据
mc.set("key","value",time=60) #默认保存时间为300秒
mc.add('key', 'value',time=60) #对已经存在的key重复添加会报错:MemCached: while expecting 'STORED', got unexpected response 'NOT_STORED'
查询数据
key = mc.get("key") # 没有值显示None
key = get_multi(["key1", "key2", "key3"]) #获取多个键值对
删除数据
mc.delete("key")
mc.delete_multi(['key1', 'key2']) #一次删除多个键值
更新数据:
mc.replace('key','value') #如果key不存在则报错
mc.append('key', 'value') #修改指定key值,在后面追加内容
mc.prepend('key', 'value') #修改指定key值,在前面插入内容
计算:
mc.incr('key', 10) #将key的值增加10 默认加1
mc.decr('key', 10) #将key的值减10,默认为1
----------------------------------------------------------------------------
django 使用 memcached
settings.py配置
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '127.0.0.1:11211',
'KEY_FUNCTION':lambda key,key_prefix,version:'django:' + key
}
}
使用
需要先导入cache对象来操作memcached
from django.core.cache import cache