memcache安装与简单介绍

  本文参考自菜鸟教程中的内容。

安装

  安装memcache的时候,请切换为root用户

root@centos # wget http://www.memcached.org/files/memcached-1.5.9.tar.gz
root@centos # tar -zxf memcached-1.5.9.tar.gz
root@centos # cd memcached-1.5.9
root@centos # ./configure --prefix=/usr/local/memcache
root@centos # make && make install
root@centos # ln -s /usr/local/memcache/bin/memcached /usr/local/sbin/memcached

  

启动

  启动memcache的时候,不能使用root身份,所以请切换为其他用户。

beyond@centos $ memcached -p 11211 -m 64m -d
beyond@centos $ lsof -i:11211
COMMAND     PID     USER   	FD   TYPE   DEVICE SIZE/OFF NODE NAME
memcached 	31461  	beyond  26u  IPv4 	10238464   0t0  TCP *:memcache (LISTEN)
memcached 	31461  	beyond  27u  IPv6 	10238465   0t0  TCP *:memcache (LISTEN)

  -p 表示memcache监听的端口。

  -m 表示将本地的多少内存分配给memcache,单位为MB。

  -d 表示以守护进程方式运行(后台运行)

  -d可以替换为-vv,表示显示memcache的运行状态。

 

命令

  有关参数的说明:flags 存储额外信息,在使用get和gets的时候可以看到;expire 过期时间的单位为秒; bytes_length 要设置的value的长度(字节数)。

  set:不管是否设置key对应的值,使用set命令之后,都会重新设置key对应的值。有则更新,无则创建。

set key flags expire bytes_length [noreply] 
value 

  

  add:如果之前没有设置过key对应的值(或者说已经过期了),那么此时就设置key对应的值;如果之前设置了key对应的值(并且没有过期),那就什么也不做,不会进行更新操作。

add key flags expire bytes_length [noreply] 
value 

  

  replace:如果设置了key对应的值,并且没有过期的话,那么就更新key对应的值;如果没有设置key对应的值,或者说之前设置了,但是过期了,那么此时并不会重新设置key对应的值,(什么也不做)。

replace key flags expire bytes_length [noreply]
value

  

  append:如果设置了key对应的值,并且没有过期的话,那么可以在key对应的值后面增加内容;如果没有key对应的值,或者过期了,那么就什么也不做。

append key flags expire add_bytes_length [noreply]
value

  

  prepend:和append的规则一样,区别是prepend是在value的前面追加。

prepend key flags exptime bytes [noreply]
value

  

  get:获取memcache中的key对应的信息(可以是一个key列表,使用空格分开)。

get key1 key2 ...

  

  gets:获取memcache中key对应的详细信息,包括cas令牌。

gets key1 key2 ...

  

  delete:删除一个key,使用delete一次只能删一个key。

delete key

  

  incr :如果key存在,并且是32位的整型,那么就将value增加一个decrement,注意必须制定incr。

incr key increment

  

  decr:如果key存在,并且是32位整型数字,那么就将value减少decrement,必须指定decrment。

decr key decrement

  

  flush_all:清空memcache中所有的数据。如果没有指定after的话,就立即清除;如果制定了after,就在after秒之后清空数据。

flush_all [after]

  

拓展

  0、memcache中的数据保存在内存中,断电就会消失,并且存的单个数据项默认是不能大于1MB的,但是可以通过修改源码来实现改变大小。

  1、memcache中只能存字符串,也就是说,如果要存数组、对象的话,需要先序列化之后再存。

  3、memcache中的数据在过期的时候,并不会立即被清除,而是在下一次访问这个过期数据的时候,才清除这个过期数据。

  4、memcache是分布式缓存,但是每个节点之间不会进行相互通信,也就是说,节点之间不会进行同步数据操作,用户需要自己设计算法将数据分配到不同的memcache节点中。

  5、memcahce是一个多线程运行的,其中主线程主要监听连接请求,工作线程主要进行处理客户端请求。主线程如果监听到连接请求后,就接受请求,然后将连接分配给工作线程去处理;工作线程接到请求之后,进行处理请求,然后将结果返回给客户端。

  6、memcache使用LRU算法来进行数据的删除。

  7、memcache没有持久化的概念,即缓存中的数据不会保存到硬盘上,一旦断电,数据真的就丢了。redis有持久化。

  8、不支持事务回滚

 

posted @ 2017-11-10 11:33  寻觅beyond  阅读(295)  评论(0编辑  收藏  举报
返回顶部