Memcached安装与使用

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。

一、Memcached的安装

wget http://memcached.org/latest  #下载memcached

yum install -y libevent-devel  #解决依赖

tar zxvf memcached-1.4.31.tar.gz

cd memcached-1.4.31

./configure

make && make install

二、启动

memcached -d -m 10  -u root -l 192.168.0.125 -p 12000 -c 256 -P /tmp/memcached.pid 

参数说明:
  -d 是启动一个守护进程
  -m 是分配给Memcache使用的内存数量,单位是MB
  -u 是运行Memcache的用户
  -l 是监听的服务器IP地址
  -p 是设置Memcache监听的端口,最好是1024以上的端口
  -c 选项是最大运行的并发连接数,默认是1024,按照你服务器的负载量来设定
  -P 是设置保存Memcache的pid文件

ps –aux | grep memcached

netstat –tunpl | grep :12000

telnet 192.168.0.125 12000

stats   #统计Memcached的各种信息

memcached -d -m 2048 -p $1 -u root -vv >> /tmp/memcached.log 2>&1   #生成日志文件

memcached启动的shell脚本

 1 #!/bin/sh  
 2 echo "Start to start memcached server $(date)..."  
 3   
 4 MEMCACHED=/usr/local/bin/memcached  
 5   
 6 usage()  
 7 {  
 8      echo "usage: `basename $0` port"  
 9 }  
10   
11 if [ -n "$1" ]  
12 then  
13 {  
14      pid=`ps aux|grep memcached|grep "$1" |grep -v grep|awk '{print $2}'`  
15      if [ -n "$pid" ]  
16      then  
17      {  
18           sleep 2  
19           echo "kill memcached which port is $1 begin"  
20           echo "pid:$pid"  
21           kill -9 $pid  
22           echo "kill memcached which port is $1 end"  
23           sleep 2  
24      }  
25      fi  
26      echo "begin to start memcached in port $1"  
27      LOG_FILE=/var/log/memcached/memcached_$1.log  
28      rm -f $LOG_FILE  
29      $MEMCACHED -d -m 2048 -p $1 -u root -vv >> $LOG_FILE 2>&1  
30      echo "start memcached end"  
31      tail -f $LOG_FILE  
32 }  
33 else  
34 {  
35      usage  
36      exit 1  
37 }  
38 fi  

./startup.sh 12000

三、memcached的命令

命令格式

  1. <command name> <key> <flag> <expire> <bytes>  
  2. <data block>  

command name 命令名称
key 查找关键字
flag 存储额外信息
expire 数据保存时间,0表示永远,单位秒
bytes 存储数据的字节数
data block 存储的数据

1.set 无论如何都存储,数据不存在时存储,数据存在时更新

set name 0 0 3
abc
STORED
get name
VALUE name 0 3
abc
END

2.add 当数据不存在时存储

3.replace 当数据存在时存储

4.get 可以一个或多个,用空格格开

5.gets 与 get 一样,但会返回多一个数字,这个数字用来检查数据是否被修改过,如修改过,这个数字回改变

6.cas cas即checked and set ,当最后一个参数与gets返回的数字一致时才存储,否则返回EXISTS

7.append 将数据追加到当前缓存数据的之后,当缓存数据存在时才存储

8.delete 删除缓存数据,数据存在返回DELETED,数据不存在返回NOT_FOUND

9.flush_all 将当前所有缓存数据设置为过期,但不会释放内存

10.stats items 执行stats items,可以看到STAT items行,如果memcached存储内容很多,那么这里也会列出很多的STAT items行

11.stats cachedump slabs_id limit_num 

  slabs_id:由stats items返回的结果(STAT items后面的数字)决定的
  limit_num:返回的记录数,0表示返回所有记录
  通过stats items、stats cachedump slab_id limit_num配合get命令可以遍历memcached的记录。

12.stats slabs 显示各个slab的信息,包括chunk的大小、数目、使用情况等

13.stats sizes 输出所有item的大小和个数

14.stats reset 清空统计数据

四、通过python使用memcached

1 import memcache
2 mc = memcache.Client(['192.168.0.125:12000'],debug=True)  #表示运行出现错误时,显示错误信息,上线后移除该参数
3 mc.set("foo","bar")
4 ret = mc.get("foo")
5 print(ret)

集群的支持

1 #内存中的主机列表为host_list = ["1.1.1.1", "1.1.1.2", "1.1.1.2", "1.1.1.3", ]
2 mc = memcache.Client([('1.1.1.1:12000', 1), ('1.1.1.2:12000', 2), ('1.1.1.3:12000', 1)], debug=True)
3 mc.set('k1', 'v1')

mc.set_multi({'k1': 'v1', 'k2': 'v2'})  #设置多个键值对

mc.delete_multi(['k1', 'k2'])  #删除多个键值对

mc.append('k1', 'after') #修改指定key的值,在该值后面追加内容

mc.prepend('k1', 'before') #修改指定key的值,在该值前面插入内容

mc.incr('k1') #自增,默认1

mc.decr('k1') #自减

 

posted @ 2016-09-14 14:11  yoyoua  阅读(213)  评论(0编辑  收藏  举报