2. tar -zxvf libevent-2.0.19-stable.tar.gz
3. cd libevent-2.0.19-stable
4. ./configure --prefix=/usr/local/libevent/
5. make
6. make install
7. ln -s /usr/local/libevent/lib/libevent-2.0.so.5 /lib64/libevent-2.0.so.5
1. wget http://memcached.googlecode.com/files/memcached-1.4.13.tar.gz
2. tar -zxvf memcached-1.4.13.tar.gz
3. cd memcached-1.4.13
4. ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent/
5. make
6. make install
3.编写启动脚本
1. #!/bin/sh
2. #
3. # Startup script for the server of memcached
4. #http://blog.rekfan.com/?p=172
5. # processname: memcached
6. # pidfile: /usr/local/memcached/memcached.pid
7. # logfile: /usr/local/memcached/memcached_log.txt
8. # memcached_home: /etc/memcached
9. # chkconfig: 35 21 79
10. # description: Start and stop memcached Service
11.
12. # Source function library
13. . /etc/rc.d/init.d/functions
14.
15. RETVAL=0
16.
17. prog="memcached"
18. basedir=/usr/local/memcached
19. cmd=${basedir}/bin/memcached
20. pidfile="$basedir/${prog}.pid"
21. #logfile="$basedir/memcached_log.txt"
22.
23. # 设置memcached启动参数
24. ipaddr="192.168.1.101" # 绑定侦听的IP地址
25. port="11211" # 服务端口
26. username="root" # 运行程序的用户身份
27. max_memory=64 # default: 64M | 最大使用内存
28. max_simul_conn=1024 # default: 1024 | 最大同时连接数
29. #maxcon=51200
30. #growth_factor=1.3 # default: 1.25 | 块大小增长因子
31. #thread_num=6 # default: 4
32. #verbose="-vv" # 查看详细启动信息
33. #bind_protocol=binary # ascii, binary, or auto (default)
34.
35. start() {
36. echo -n $"Starting service: $prog"
37. $cmd -d -m $max_memory -u $username -l $ipaddr -p $port -c $max_simul_conn -P $pidfile
38. RETVAL=$?
39. echo
40. [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
41. }
42.
43. stop() {
44. echo -n $"Stopping service: $prog "
45. run_user=`whoami`
46. pidlist=`ps -ef | grep $run_user | grep memcached | grep -v grep | awk '{print($2)}'`
47. for pid in $pidlist
48. do
49. # echo "pid=$pid"
50. kill -9 $pid
51. if [ $? -ne 0 ]; then
52. return 1
53. fi
54. done
55. RETVAL=$?
56. echo
57. [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
58. }
59.
60. # See how we were called.
61. case "$1" in
62. start)
63. start
64. ;;
65. stop)
66. stop
67. ;;
68. #reload)
69. # reload
70. # ;;
71. restart)
72. stop
73. start
74. ;;
75. #condrestart)
76. # if [ -f /var/lock/subsys/$prog ]; then
77. # stop
78. # start
79. # fi
80. # ;;
81. status)
82. status memcached
83. ;;
84. *)
85. echo "Usage: $0 {start|stop|restart|status}"
86. exit 1
87. esac
88. exit $RETVAL
chmod +x memcached
@set(key,val,time=0,min_compress_len=0)
无条件键值对的设置,其中的time用于设置超时,单位是秒,而min_compress_len则用于设置zlib压缩(注:zlib是提供数据压缩用的函式库)
@set_multi(mapping,time=0,key_prefix='',min_compress_len=0)
设置多个键值对,key_prefix是key的前缀,完整的键名是key_prefix+key, 使用方法如下
>>> mc.set_multi({'k1' : 1, 'k2' : 2}, key_prefix='pfx_') == []
>>> mc.get_multi(['k1', 'k2', 'nonexist'], key_prefix='pfx_') == {'k1' : 1, 'k2' : 2}
@add(key,val,time=0,min_compress_len=0)
添加一个键值对,内部调用_set()方法
@replace(key,val,time=0,min_compress_len=0)
替换value,内部调用_set()方法
@get(key)
根据key去获取value,出错返回None
@get_multi(keys,key_prefix='')
获取多个key的值,返回的是字典。keys为key的列表
@delete(key,time=0)
删除某个key。time的单位为秒,用于确保在特定时间内的set和update操作会失败。如果返回非0则代表成功
@incr(key,delta=1)
自增变量加上delta,默认加1,使用如下
>>> mc.set("counter", "20")
>>> mc.incr("counter")
21
@decr(key,delta=1)
自减变量减去delta,默认减1