Memcached 的使用方法

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值