windows安装:
linux安装:
一、安装libevent函数库
- 下载
wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz
- 解压
tar -zxvf libevent-2.0.21-stable.tar.gz
- 编译安装
cd libevent-2.0.21-stable
./configure --prefix=/usr/local/libevent-2.0.21-stable
make
make install
- 检查是否安装成功
ls -al /usr/local/libevent-2.0.21-stable/lib | grep libevent
二、安装memcached
- 下载
wget http://memcached.org/files/memcached-1.5.9.tar.gz
- 解压
tar -zxvf memcached-1.5.9.tar.gz
- 编译、安装
cd memcached-1.5.9
./configure -with-libevent=/usr/local/libevent-2.0.21-stable/ --prefix=/usr/local/memcached-1.5.9
make
make install
- 查看是否安装成功
pstree | grep mem
- 安装成功后启动一下看安装是否成功
/usr/local/memcached-1.5.9/bin/memcached -d -m 1028 -p 11211 -u root
ps -ef|grep memcached
- 配置开机自启动
vi /etc/init.d/memcached
#! /bin/sh
#
# chkconfig: - 55 45
# description: The memcached daemon is a network memory cache service.
# processname: memcached
# config: /etc/sysconfig/memcached
# Source function library.
. /etc/rc.d/init.d/functions
PORT=11211
USER=nobody
MAXCONN=1024
CACHESIZE=64
OPTIONS=""
if [ -f /etc/sysconfig/memcached ];then
. /etc/sysconfig/memcached
fi
# Check that networking is up.
if [ "$NETWORKING" = "no" ]
then
exit 0
fi
RETVAL=0
prog="memcached"
start () {
echo -n $"Starting $prog: "
# insure that /var/run/memcached has proper permissions
chown $USER /usr/local/memcached-1.5.9
daemon /usr/local/memcached-1.5.9/bin/memcached -d -p $PORT -u $USER -m $CACHESIZE -c $MAXCONN -P /usr/local/memcached-1.5.9/memcached.pid $OPTIONS
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/memcached
}
stop () {
echo -n $"Stopping $prog: "
killproc memcached
RETVAL=$?
echo
if [ $RETVAL -eq 0 ] ; then
rm -f /var/lock/subsys/memcached
rm -f /usr/local/memcached-1.5.9/memcached.pid
fi
}
restart () {
stop
start
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status memcached
;;
restart|reload)
restart
;;
condrestart)
[ -f /usr/local/memcached-1.5.9 ] && restart || :
;;
*)
echo $"Usage: $0 {start|stop|status|restart|reload|condrestart}"
exit 1
esac
exit $?
- 修改文件权限
chmod 755 /etc/init.d/memcached
- 设置开机自启
chkconfig --add memcached
chkconfig memcached on
- 启动memcached
service memcached start
- 如果要指定启动参数,就需要用下述命令进行启动
/usr/bin/memcached -u memcached -p 11211 -m 64 -c 1024
- -u:指定用户
- -p:指定端口
- -m:指定内存大小,单位M
- -d:后台以守护进程启动
- -l:指定可连接地址,如果需要让其他机器连接,必须指定
-l 0.0.0.0
telnet操作memcached:
1. 连接:
telnet ip host
# ex: telnet 127.0.0.1 11211
- 连接后需要按一下回车键才能输入
2. 数据操作:
- 查看所有key
# 列举出所有keys
stats items
# 通过stats items 的返回信息中的items id 获取key
# 例如 itemid 为 7 第二个参数为列出的长度 0 为列出当前id对应的 key 名
stats cachedump 7 0
# 通过如上获取 key 的值
get key # 上一步得到的key名
- set:添加一个键值,重复键则覆盖前一个值
set key flas(是否压缩) timeout value_length
value
- get:获取一个键对应的值
- add:添加一条数据,如果key存在,则报错
- delete:删除键值
- flush_all:删除所有键值
- incr:给key对应的value增加设置量,数值型
- decr:给key对应的value减少设置量,数值型
3. 退出telnet:
quit
python操作memcached
1. 安装依赖包:
pip3 install python-memcached
2. python交互
- set:设置键值
>>> import memcache
# 如果要连接多台设备,实现分布式,则将其都写在列表中["127.0.0.1:11211", "10.10.120.123:11211"],此时设置键值可能存在任意服务器上,但只存在其中一台
>>> mc = memcache.Client(["127.0.0.1:11211"], debug=True)
>>> mc.set('username', 'xyz', time=60)
True
>>> name = mc.get('username')
>>> name
'xyz'
>>>
- set_multi: 一次设置多个键值
>>> import memcache
>>> mc = memcache.Client(["127.0.0.1:11211"], debug=True)
>>> mc.set_multi({"name": "xyz", "age": 18, "gender": "男"}, time=120)
[]
>>> mc.get('age')
18
>>> mc.get('name')
'xyz'
>>> mc.get('gender')
'男'
>>>
- get:获取数据
mc.get('name')
- delete:删除数据
mc.delete('name')
- incr:自增,如果不指定增长值,则默认为1
mc.incr('age')
mc.incr('age', delta=10) # 增长值为10
- decr:自减,如果不指定减少值,则默认为1
mc.decr('age')
Django中使用memcached:
# settings.py
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '127.0.0.1:11211',
# 'LOCATION': ['127.0.0.1:11211', '192.168.12.13:11211', ...]
'KEY_FUNCTION': lambda key, key_prefix, version: key,
# 我们set数据,键再存储时会被存储为:1:键格式,定义KEY_FUNCTION使得键不变,我们set什么就get什么
}
}
from django.core.cache import cache //导入
cache.set('name','Mike',20)
cache.get('name')