memcached—使用

本篇主要介绍如何使用memcached,包含以下几个方面:

  • memcached的部署方案
  • telnet连接memcached
  • pymemcache,python语言中memcached client的一种实现

memcached的部署方案

memcached在部署上跟mysql、mongodb等数据库相似,可以是单个服务使用,也可以多个服务联合起来形成集群来使用;但memcached集群又与其他集群不一样,最主要的区别在于memcached集群中的服务不知道其他服务的存在,各服务之间不需要相互通信。mysql、mongodb等部署为集群,无非是为了:

  • 数据的可用性(当某节点故障后,剩余节点还可以继续提供服务)
  • 数据访问性能问题,尤其在读写非常频繁的系统中,从多个节点写入和读取大大加快了读写的性能

那么,我们的memcached是部署为单个的服务好,还是集群好?在《一个故事》中提到过,memcached集群的大小等于集群中各节点分配内存的总和,假设我现在需要3GB大小的memcached,你可以选择以下几种部署方案中的任何一种,甚至其他你喜欢的方案:

  • 3GB memcached
  • 2GB memcached + 1GB memcached
  • 1GB memcached + 1GB memcached + 1GB memcached

以及其他任意你喜欢的方案,那么我们到底该如何选择呢?假设我们选择第一种(3GB memcached)方案,很不幸,有一天我的memcached服务故障了(可能是网络原因,也可能是服务器坏掉了,谁知道呢),那么我们整个系统将不会再有缓存;假设我们选择第三种(1GB memcached + 1GB memcached + 1GB memcached)方案,同样很不幸,有一个memcached服务故障了,又会怎么样呢?在在《一个故事》中说过,这仅仅会导致存储在该节点上的数据失效,短期内需要跨过memcached重新请求数据,但client会把取到的新数据按照哈希算法重新分配到剩余的memcached节点上进行存储,很快又恢复到故障前的状态。如何部署,应该不用我说了吧

telnet连接memcached

在《安装memcached》提到了可以通过telnet连接到memcached服务,也仅仅是提到,没有更加深入的介绍,今天就来讲一讲telnet连接到memcached后的基本命令

  1. 连接到memcached,telnet host port
  2. 存储一对key-value,set key flags exptime bytes\r\n datablocks,flags一般不用,起到一个标记的作用。exptime是保存时间,最大是30天,超过最大值memcached就会当做时间戳来处理,即系统时间达到该时间戳表示的时间时key-value将失效(之后不能通过get命令获取)。bytes指定接下来的数据的字符个数,必须是最后一个参数datablocks的字符个数,不然会报错。datablocks,要保存在memcached中与key对应的value。本条命令包含两行,\r\n表示回车换行,第二行是全部要保存的数据。这里写图片描述
  3. 存储类命令还有add和replace。add命令格式与set相同,set一般是重新设置key的value,如果key不存在则跟add的作用一致,如果key存在则跟replace的作用一致。memcached—使用_第1张图片
  4. 获取命令,get key,在上图中已经有体现,这里就不多说了
  5. 删除命令,delete keymemcached—使用_第2张图片
  6. 增加/减少指定的值,incr/decr key valuememcached—使用_第3张图片

pymemcache

pymemcache是memcached client的一种python实现。安装方法:pip install pymemcache,或者源码安装:
git clone https://github.com/pinterest/pymemcache.git
cd pymemcache
python setup.py nosetests

使用手册参考《pymemcache文档》,以及官方api
参考文献:

  • github docs:https://github.com/pinterest/pymemcache/blob/master/docs/getting_started.rst
  • pypi memcached:https://pypi.python.org/pypi/pymemcache/
  • pymemcache官网:http://pymemcache.readthedocs.org/en/latest/index.html

你可能感兴趣的:(cache)