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

安装

  安装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、不支持事务回滚

最新文章

  1. 利用keepalived和haproxy配置mysql的高可用负载均衡
  2. json中loads的用法
  3. 精美舒适的对话消息提示框--第三方开源--SweetAlertDialog
  4. 安装SQL Server 2012遇到“需要更新的以前的Visual Studio 2010实例.”
  5. C++11新特性,利用std::chrono精简传统获取系统时间的方法
  6. Google高级技巧—google Hack★★★★
  7. 转:Yelp开发团队发布内部网站设计指南
  8. PHP页面之间跳转方法总结
  9. nginx upload module的使用
  10. Objective-C中的SEL、IMP和Class类型
  11. webstom,zencoding,windows快捷键
  12. Java实现堆的封装,进行插入,调整,删除堆顶以完成堆排序实例
  13. JVM运行时内存组成分为一些线程私
  14. windows清除访问共享文件夹的登陆信息
  15. python httplib2应用get post
  16. font-style字体设置
  17. django中的view测试和models测试样例
  18. 百兆千兆网口100Base-TX/1000Base-T
  19. 多路选择I/O
  20. (三十八)js之柯里化

热门文章

  1. Python函数式编程-map/reduce
  2. Sql Server2008——远程过程调用失败
  3. java TCP 通信:服务端与客服端
  4. 7月新的开始 - Axure学习04 - 发布与预览、菜单和表格元件、流程图和连接点、标记元件
  5. Selenium常用API的使用java语言之6-WebDriver常用方法
  6. group_concat 排序并取前三个
  7. 重载new和delete运算符
  8. 使用DOS命令将类库封装成dll
  9. 使用DRBD+KEEPALIVED来实现NFS高可用
  10. Python数据类型解析(基础篇)