Memcached 的使用方法

来源:互联网 发布:如何找到监控软件 编辑:程序博客网 时间:2024/06/08 08:48
1.介绍
Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据.简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度,客户端第一次使用应用程序的时候会从数据库里取出来返回给客户端,这时就需要把数据保存一份到memcached中,到第二次使用时就不用去查询数据库了直接从memcached上取出来,从内存中读取数据肯定是更快的
2.安装
1. wget https://github.com/downloads/libevent/libevent/libevent-2.0.19-stable.tar.gz  
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.编写启动脚本
vim /etc/init.d/memcached
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
chkconfig --add memcached
chkconfig --level 35 memcached on
打开文件vim /etc/sysconfig/iptables 把端口加入防火墙
-A -INPUT -p tcp -m tcp --dport 11211 -j ACCEPT  
重启防火墙
service iptables restart
启动memcached
service memcached start
4.使用方法
#!/usr/bin/env python
import memcache
mc = memcache.Client(['127.0.0.1:11211'],debug=0)
mc.set("foo","bar")
value = mc.get("foo")
print value

@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



0 0
原创粉丝点击